当前位置:文档之家› 《软件工程引论教学课件》第6章 面向对象设计共77页

《软件工程引论教学课件》第6章 面向对象设计共77页


面向对象的设计(OOD)概述
什么是面向对象设计
OOD——按实现条件对OOA模型进行调整,并补充几个新的 组成部分(也是由对象构成)
与实现有关的因素:
图形用户界面系统
OOA 模型
硬件、操作系统及网络 数据管理系统
补充
其他——编程语言、可复用
OOA与OOD的关系:
1、从OOA到OOD不是转换;
MiniLibrary:识别设计元素
MiniLibrary:识别设计元素
识别子系统接口
在确定了设计元素之后,需要描述子系统的行为,也 就是准确定义接口操作的集合。同时,还要确定“子 系统接口”与其他设计元素之间的依赖关系
数据存储策略
数据文件
数据文件是由操作系统提供的存储形式,应用系统将数 据按字节顺序存储,并定义如何以及何时检索数据
定义关系
在详细设计阶段,需要进一步确定详细的关联关 系、依赖关系和聚合关系等 不同对象之间的可能连接
12
MiniLibrary:软件体系结构
MiniLibrary:软件体系结构
MiniLibrary:软件体系结构
识别设计元素
识别设计元素
确定设计元素的基本原则
如果一个“分析类”比较简单,代表着单一的逻辑抽 象,那么可以将其映射为“设计类” 如果一个“分析类”的职责比较复杂,很难由单个“ 设计类”承担,则应该将其映射成“子系统接口” 子系统的划分应该符合高内聚低耦合的原则
在辅助模型中要增加分别用 于描述构件模型和部署模型 的构件图和部署图
OOD过程模型 ➢问题域部分的设计 ➢人机交互部分的设计 ➢控制流管理部分的设计 ➢数据管理部分的设计 ➢构件部署部分的设计
前4项不强调次序
每个部分均采用与OOA一致的概念、表示法及活动,但具 有自己独特的策略。
进行构件部署设计要在其前面四个部分完成后进行。
何时选择关系数据库
复杂的数据查询 数据集规模大
何时选择面向对象数据库
数据集处于中等规模 对象间没有规则联系
部署子系统
部署图反映了系统中软件和硬件的物理架构,表示系统运 行时的处理节点以及节点中组件的配置
MiniLibrary系统的部署图
详细设计
详细设计需要细化分析和系统设计产生的模型,确定新的 设计对象,消除问题域与实现域之间的差距 详细设计模型可以分割成类的集合,通常由单个开发人员 实现
统一建模语言UML
图:部署图
面向对象的设计
面向对象设计的过程
体系结构 设计说明
详细 设计说明
系统设计
设计系统的体系结构
选择合适的体系结构策略,建立系统的总体结构
识别设计元素
识别类和子系统 识别子系统接口
定义数据的存储策略 部署子系统
选择硬件配置和系统平台,将子系统分配到相应 的物理节点
检查系统设计
——是调整和增补
将OOA模型搬到OOD; 进行必要的调整, 作为OOD模型的问题域 部分;
增补其它部分,成为完 整的OOD模型。
OOA 模型
控制驱动部分


机 交
问题域
据 管
互 部分 理




构件部署部分
9
2、采用一致的概念和表示法
——不存在分析与设计之间的鸿沟
分析
数据流图 (DFD)
设计
模块结构图 (MSD) 实体-关系图(ERD)
具体说明属性的名称、类型、缺省值、可见性等
基本原则
将所有属性的可见性设置为private; 仅通过set方法更新属性; 仅通过get方法访问属性; 在属性的set方法中,实现简单的有效性验证,而在独立 的验证方法中实现复杂的逻辑验证。
定义属性
定义状态
在详细设计阶段,状态建模一般只发生在依赖状 态展示不同行为的类上
详细设计的主要任务
精化类的属性和操作
-明确定义操作的参数和基本的实现逻辑 -明确定义属性的类型和可见性
明确类之间的关系 整理和优化设计模型
详细设计
边界类的设计策略
用户界面设计因素
-用户界面的开发工具 -所创建的界面数量
外部系统接口类
实体类的设计策略
考虑性能需求对实体对象的影响
控制类的设计策略
是否真正需要?是否应该继续细化? 考虑复杂性、变化适应性、分布性和性能、事务处 理等要求
统一建模语言UML
图:活动图
活动图反映系统中从一个活动到另一个活动的流 程,强调对象间的控制流程
统一建模语言UML
图:组件图
组件图描述组件以及它们之间的关系,表示系统 的静态实现视图
统一建模语言UML
图:部署图
部署图反映了系统中软件和硬件的物理架构,表 示系统运行时的处理节点以及节点中组件的配置
关系数据库
在关系数据库中,数据是以表的形式存储在预先定义好 的称为Schema的类型中
面向对象数据库
与关系数据库不同的是,面向对象数据库将对象和关系 做为数据一起存储
数据存储策略
何时选择文件
存储大容量数据、临时数据、低信息密度数据
何时选择数据库
并发访问要求高、系统跨平台、多个应用程序使用相同 数据
属性赋值
+ setName(name : String) + setAddress(address : String)
其他
+ addLoan(theLoan : Loan) + removeLoan(theLoan : Loan) + isAllowed() : Boolean ……
定义属性
定义属性
OOA
OOD
一致的
OO模型
概念 一致的
OO模型
表示法
传统方法分析与设 计之间的鸿沟
面向对象的分析与设计 之间不存在鸿沟
3、有不同的侧重点和不同的策略
OOA主要针对问题域,识别有关的对象以及它们之间的 关系,产生一个满足用户需求,独立于实现的OOA模型。
OOD主要解决与实现有关的问题,基于OOA模型,针
对具体的软、硬件条件(如机器、网络、OS、GUI、
DBMS等)产生一个可实现的OOD模型。
10
OOD模型和过程
OOD模型
——从两个侧面来描述
从另一侧面观察 OOD模型每个部分 如何用OO概念表达 ——采用OOA的概念
及 模型组织方式
从一个侧面观察 OOD模型包括几个主
要部分 ——一个核心部分加
几个外围部分
定义操作
定义操作的过程
找出满足基本逻辑要求的操作 补充必要的辅助操作
-初始化类的实例 -验证两个实例是否等同 -……
完整地描述操作
-确定操作的名称、参数、返回值、可见性等 -应该遵从程序设计语言的命名规则
简要说明操作的内部实现逻辑
定义操作
举例:BorrowerInfo类
构造函数
<<class>> + new()
相关主题