1. 面向对象设计与结构化设计
结构化方法把解空间分数据和功能两部分,可以更加清晰地进行需求分析和功能分解,数据流图能够细致地说明数据在各个功能模块之间的流动和变化,更适于系统设计的前期阶段。设计人员清楚地了解数据和系统要求的操作后
面向对象方法能够把数据和功能以对象为单位封装成一个整体,更直观地表达对象的状态变化和对象间的交互,更加准确地分析功能的实现过程,更适于在软件后
2. 面向对象设计与面向对象分析的关系
设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的系统实现方案。面向对象的需求分析和面向对象的设计活动是一一个反复迭代的过程。
3. 面向对象设计的过程与规则
3.1 面向对象设计的过程
(1) 建立软件体系结构环境图
(2) 软件体系结构设计
(3)对各个子系统进行设计
大多数系统的面向对象设计模型,在逻辑上都由4大部分组成。这4大部分对应于组成目标系统的4个子系统,它们分别是:问题域子系统,人一机交互子系统,任务管理子系统,数据管理子系统
(4)对象设计及优化
3.2 面向对象设计的原则
(1)模块化
(2)抽象化
(3)信息隐藏
(4)低耦合
(5)高内聚
(6)复用性
4. 面向对象设计的启发规则
启发规则具体如下。
(1) 设计结果应该清晰易懂
(2)类等级深度应该适当
(3)要尽量设计简单的类
(4)使用简单的协议
(5)使用简单的操作
(6)把设计的变动减至最小
5. 系统设计
系统设计关注于确定实现系统的策略和目标系统的高层结构。
系统设计的步骤从上到下为:将系统分解为子系统,设计问题域子系统,设计人机交互子系统,设计任务管理子系统,设计数据管理子系统。
5.1 系统分解
(1)问题域子系统把面向对象分析模型直接拿来,针对实现的要求进行必要的增补和调整,例如,需要对类、结构、属性及服务进行分解和重组。
(2)人机交互子系统包括有效的人机交互所需的显示和输入,这些类在很大程度_上依赖于所用的图形用户界面环境。
(3)任务管理子系统包括任务的定义、通信和协调,以及硬件分配、外部系统及设备约定,可能包括的类有“任务”类和“任务协调”类。
(4)数据管理子系统包括永久数据的存取,它隔离了物理的数据管理方法,无论是普通文件、带标记语言的普通文件、关系型数据库、面向对象数据库等。可能包括的类有"存储服务”, 协调每个需永久保存的对象的存储。
5.2 问题域子系统的设计
问题域子系统也称问题域部分。面向对象方法中的一个主要目标是保持问题域组织框架的完整性、稳定性,这样可提高分析、设计到实现的追踪性。问题域子系统可以直接引用面向对象分析所得出的问题域精确对象模型,该模型提供了完整的框架,为设计问题域子系统奠定了良好的基础,面向对象设计就应该保持该框架结构。
5.3 人机交互子系统的设计
在现在的大型软件系统中,人机交互对象(类)通常是窗口或报告。软件设计者至少要考虑以下3种窗口:
(1) 安全/登录窗口。这种窗口是用户访问系统的必经之路。
(2) 设置窗口。这种窗口具有以下功能:
创建或初始化系统运行必需的对象。例如用来创建、维护和删除持久对象的窗口。持久对象类似于关系数据库信息系统中的数据记录。例如车辆、车主、销售记录和事务。
系统管理功能,例如添加和删除授权用户,修改用户使用系统的权限等。
启动或关闭设备,例如启动打印机等。
(3) 业务功能窗口。这种窗口用来帮助完成那些由信息系统和其用户所进行的业务交互所必要的功能。
5.4 任务管理子系统的设计
常见的任务有事件驱动型任务、时钟驱动型任务、优先任务、关键任务、协调任务等。设计任务管理子系统,包括确定各类任务并把任务分配给适当的硬件或软件去执行。
5.5 数据管理子系统的设计
数据管理子系统是系统存储或检索对象的基本设施,它建立在某种数据存储管理系统之上,并且隔离了数据存储管理模式(文件、关系数据库或面向对象数据库)的影响,但实现细节集中在数据管理子系统中。这样既有利于软件的扩充、移植和维护,又简化了软件设计、编码和测试的过程。
设计数据管理子系统,既需要设计数据格式又需要设计相应的服务。
6 对象设计
对象设计以问题域的对象设计为核心,其结果是一个详细的对象模型。面向对象分析得出的对象模型,通常并不详细描述类中的服务。面向对象设计则是扩充、完善和细化面向对象分析模型的过程,设计类中的服务、实现服务的算法是面向对象设计的重要任务,还要设计类的关联、接口形式以及设计的优化。对象设计的内容包括:
对象中对属性和操作的详细描述;
对象之间发送消息的协议;
类之间的各种关系的定义;
对象之间的动态交互行为等。
6.1 设计类中的服务
1.确定类中应有的服务
(1)从对象模型中引入服务
(2)从动态模型中确定服务
(3)从功能模型中确定服务
2.设计实现服务的方法
(1)设计实现服务的算法
(2)选择数据结构
(3)定义内部类和内部操作
6.2 设计类的关联
在对象模型中,关联是连接不同对象的纽带,它指定了对象相互间的访问路径。
6.3 对象设计优化
- 确定优先级
- 提高效率的几项技术
(1)增加冗余关联以提高访问效率
(2)调整查询次序
(3)保留派生属性 - 调整继承关系
(1)抽象与具体
(2)为提高继承程到而修改类定义
(3)利用委托实现行为共享