软件工程
电子教案
王树林
面向对象设计
? 面向对象系统的设计
? OO设计模型的类属成分
? 系统设计过程
? 对象设计过程
? 设计模式
? 面向对象编程
? 小结
面向对象设计 ( OOD)
? 面向对象设计继续做
面向对象分析阶段的
工作,建立软件的结
构。
? 主要工作分为四个层
次:
子系统设计
类及对象设计
消息设计
责任设计
传统方法和 OO方法
比较各种传统的和面向对象的设计
方法( Fichman和 Kemerer提出 10
种设计建模成分)。
? 模块层次的表示
? 数据定义的规约
? 过程逻辑的规约
? 端到端处理序列的指明
? 对象状态和转变的表示
? 类及层次的定义
? 将操作赋予类
? 详细的操作定义
? 消息连接的规约
? 独有服务的标识
设计问题
? 分解性( decomposability)
? 组装性( composability)
? 易理解性( understandability)
? 连贯性( continuity)
? 保护性 (protection)
判断设计方法的模块化的能力标准
? 语义模块单元
? 很少的接口
? 小的接口(弱耦合)
? 显式的接口
? 信息隐藏
设计原则
OOD概述
OOD的类属步骤:
? 以可实现的方式描述每个子系统
? 对象设计
? 消息设计
? 复审设计模型并在需要时迭代
具体有如下方法:
? Booch方法
? Coad和 Yourdon方法
? Jocobson方法
? Rambaugh方法
? Wirfs-Brock方法
OO设计模型的类属成分
? 问题域
? 人机交互
? 任务管理
? 数据管理
分析模型

属性
方法
关系
行为
设计模型
对象
数据结构
算法
消息传递
控制
在对象设计过程中将分析模型转换为设计模型
系统设计过程
? 将分析模型划分为子系统
? 标识问题本身的并发性
? 将子系统分配到处理器和任务
? 选择实现数据管理的基本策略
? 标识全局资源及访问它们所需的控制机制
? 为系统定义合适的控制机制
? 考虑边界条件应该如何处理
? 复审并考虑权衡
系统设计步骤为:
? 划分分析模型
? 并发性和子系统分配
? 任务管理构件
? 数据管理构件
? 资源管理构件
? 人机界面构件
? 子系统间通信
与上述步骤相关的设计活动为:
任务管理构件的设计
? 任务,是进程的别称,是执行一系
列活动的一段程序。
? 当系统中有许多并发行为时,需要
依照各个行为的协调和通信关系,
划分各种任务,以简化并发行为的
设计和编码。
? 任务管理主要包括任务的选择和调
整,它的工作有以下几种。
数据管理构件的设计
? 数据管理构件提供了在数据管理系
统中存储和检索对象的基本结构,
包括对永久性数据的访问和管理。
? 它分离了数据管理机构所关心的事
项,包括文件、关系型 DBMS或面
向对象 DBMS等。
人机界面构件的设计
? 在 OOA 阶段给出了所需的属性和
操作,
? 在设计阶段必须根据需求把交互
细节加入到用户界面设计中,包
括人机交互所必需的实际显示和
输入。
对象设计过程
? 对象描述
协议描述
实现描述
? 设计算法和数据结构
? 程序构件和接口
系统设计步骤为:
设计模式
? 描述设计模式
模式的名字
模式通常被应用的问题
设计模式的特征
应用设计模式的结果
? 在设计中使用设计算法
继承
复合
面向对象编程( OOP)
? 面向对象的编程语言,包括 C++,Smalltalk、
Objective-C,Actor,Eiffel,Java等,都直
接支持过程抽象、数据抽象、封装、继承、以
及对象与属性、类与成员关系。
? 它们不明确地支持整体与部分关系,但可以方
便地表示组装对象。