第11章面向对象设计_第1页
第11章面向对象设计_第2页
第11章面向对象设计_第3页
第11章面向对象设计_第4页
第11章面向对象设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第11章 面向对象设计4 分析模型 = 设计模型 在软件分析模型中的需求信息(数据、功能和行为)基础上,产生软件系统各个层次上的设计方案用例对象-关 系模型CRC索引卡片属性、子 系 统 设 计类及对象设计消息设计责任设计操作、协作者对象-行为模型类/对象模型 软件设计的任务l 从管理和技术两个不同角度对设计的认识管理角度:概要设计;详细设计管理角度:数据设计、系统结构设计、过程设计面向对象的设计方法 面向对象设计是将面向对象分析所创建的分析模型进一步细化形成软件设计模型的过程。如果说,分析模型描述了系统需要完成的功能,在设计阶段则描述了如何实现分析阶段所定义的软件功能。11.1 面向对象设计

2、的概念 面向对象分析的任务是解决系统“做什么”的问题。而在面向对象设计阶段则着重完成“如何做”的问题,也就是着重考虑对象的实现细节。11.1.1 对象、操作和消息 在面向对象的设计过程中,数据结构和对数据结构的操作被封装到了对象里,因此对象成了面向对象设计的基本单位,对象之间通过消息进行连接。11.2 面向对象设计(OOD)Object-Oriented Design 从分析过渡到设计 面象对象的设计(OOD)仍然采用面向对象分析所采用的模型,所不同的是它现在更加面向用户和计算机系统,从四个不同的侧面继续演化OOA阶段所生成的分析结果。 从分析过渡到设计,分析阶段所遵循的一些原则毫无疑问也将被

3、继承下来,这些原则包括:抽象原则、封装原则、继承原则、分类原则、聚合原则、关联原则、消息通信原则、粒度控制原则、行为分析原则等。 OOD模型与OOA模型之间并无明显区别, 只是加进实现考虑 面向对象设计继续做面向对象分析阶段的工作,建立软件的结构。 主要工作分为两个阶段: 高层设计 类设计l 1、高层设计(概要设计) 高层设计阶段开发系统的结构,即构造应用软件的总体模型。 高层设计阶段标识在计算机环境中进行问题解决工作所需要的概念,并增加了一批需要的类。 这些类包括那些可使应用软件与系统的外部世界交互的类。 此阶段的输出是适合应用要求的类、类间的关系、应用的子系统视图规格说明。 主体部件设计应

4、遵循的原则 使在子系统的各个高层部件之间的通信量达到最小; 子系统应当把那些成组的类打包,形成高度的内聚; 逻辑功能分组,提供一个逻辑功能一个单元,识别并定位问题事件。l 2、类的设计(详细设计) 应用分析过程包括了对问题论域所需的类的模型化。 但在最终实现应用时不只有这些类,还需要追加一些类。 在类设计的过程中应当做这些工作。n 类与具有概念封装的子系统十分类似。n 每个子系统都可以被当做一个类来实现,这个类聚集它的部件,提供了一组操作。n 类和子系统的结构是正交的,一个单个类的实例可能是不止一个子系统的一部分。n 高层设计和类设计这两个阶段是相对封闭的,又是相互连接的。11.2 面向对象的

5、设计方法 面向对象设计 主体部件设计(PDC:高层设计) 用户界面部件设计(HIC) 任务管理部件设计(TMC) 数据管理部件设计(DMC) 基于对象的设计方法 11.3 类的设计(详细设计)类的规格说明从废弃型开发既存类的复用渐增式的实现渐增式的测试求精和 维护 测试用例和测试 的开发实现从既存类演变 类的设计与实现 类的规格说明指导对存放现存类的软件库进行查找。 现存类提供当前应用所需功能。 三种可能利用现存类的方向: 现存类的复用 从现存类进行演变 从废弃类进行开发 OOD导出的系统结构数据管理其它系统文件RDBMSOODBMS设备系统交互界面问题域人机交互界面 . . . . . .

6、. .窗口报告一.问题域部分的设计OOA的模型直接放到OOD的问题域部, OOD阶段对OOA结果进行改动和增补。根据需求变化,对OOA产生模型的类与对象、结构、属性、操作进行组合与分解,增加必要的类、属性和关系。u 对OOA结果加以增补要考虑的因素:F 重用设计F 把问题域专用类组合在一起F 通过增添一般类而建立协议F 调整继承的支持级别F 改进性能F 增加低层的类和对象F 调整继承的支持级别 F 如OOA的一般/特殊结构包括多继承, 在使用只有单继承或无继承性的编程语言时,需对OOA的的结果进行修改。二. 人机交互部分的设计虽然好的人机交互部分不可能挽救一个功能很差的软件, 但性能很差的人机

7、交互部分将使一个功能很强的产品变的不可接受!三. 任务管理部分的设计1.为什么要有任务管理部分系统中有许多并发行为时,需要按照各个行为的协调和通信关系,划分各种任务(进程),简化并发行为的设计和编码。根据动态模型分析、定义并发性;选择软件实现的控制方法。2.怎样设计任务管理部分 任务管理主要包括任务的选择和调整F 识别事件驱动任务F 识别时钟驱动任务F 识别优先任务和关键任务F 识别协调者F 审查每个任务F 定义每个任务四. 数据管理部分的设计 数据管理部分提供了数据在数据管理系统中存储和检索对象的基本结构,它分离了数据管理方案的影响 (不管该方案是普通文件、关系型数据库、面向对象数据库或其它

8、方式.)2.如何设计数据管理部分(1)数据存放方法设计F 采用普通文件数据管理F 采用关系数据库管理F 采用面向对象数据库管理(2)相应服务的设计 为每个需存储其对象的类增加一个属性和服务OOD应遵循的原则 结构化方法中软件设计的基本原理在进行面向对象设计时仍然成立,但是增加了一些与面向对象方法密切相关的新特点,从而具体化为面向对象设计准则。 准则:1.模块化2.抽象3.信息隐藏4.弱耦合5.强内聚6.可重用 耦合 两个成分之间的耦合程度或强度,可以由成分之间的信息传输的数量和复杂性来度量。在一个OOD中,有两类情况: 由消息连接表示的两个对象之间的交互耦合 一般类和特殊类之间的继承耦合。 交

9、互耦合:低度交互耦合是理想的。基本准则是: (1)把消息连接的复杂性保持到尽可能低的程度。一般来说,如果一个消息连接涉及三个以上的参数,就考虑是否可以把它简化。当然三个参数决不是绝对的上限,不过实践经验告诉我们,通过过分复杂的消息相连接的对象是紧密耦合的;对其中一个对象作了改动总是要引发波及到其它对象的“波动效应”。 (2)除了降低单个消息连接的复杂性,还应该减少由一个对象发送和接收的消息的数目。 (3)避免“消息穿越”:对象A简单把把从P接收的消息直接传给Q,并不使用此消息中的任何信息,也不直接对它做出反应。这种设计是高度可疑的。 继承耦合:高度的继承是理想的。继承是我们在OOD中力求达到的

10、一种在一般类和特殊类之间的耦合形式 一个类通过它所继承的属性和服务而与它的一般类耦合。 为了在系统中达到高度的继承耦合,每个特殊类应该真正是其一般类的一个特殊类。它应该设定严格定义的职责;同时,这也意味着它不应该有许多无关的、不必要的“水分”。 继承耦合:如果一个类出现以下两种情况: (1)一个类明显地拒绝了它的一般类中的许多属性和服务,它和它的一般类之间就不是强耦合的。 (2)特殊类从它的一般类中继承了许多属性,但是完全没有使用它们。 在这样两种情况下设计者都应寻找另外的一般特殊结构,使每个特殊类都继承并使用其一般类中的属性和服务,使之高耦合。 (四)弱耦合 降低交互耦合 1.尽量降低消息连

11、接的复杂程度。应该尽量减少消息中包含的参数个数,降低参数的复杂程度。 2.减少对象发送(或接收)的消息数。 提高继承耦合 (五)强内聚 服务内聚 类内聚 一般-特殊内聚l 内聚 在OOD中内聚表示一组OOD成分相互关系的紧密程度。存在以下几种内聚:服务内聚、类内聚、一般-特殊内聚。 服务内聚:一个服务应该实现一个并且只实现一个功能。一个服务如果实现多项功能,或者只实现一个功能的部分,则这个服务是不理想。 类内聚:属性和服务应该是高内聚-没有多余的(无用的)属性,没有多余的(无用的)服务,而且全部是描述类的对象责任的。 一般-特殊内聚:第三种内聚是一般-特殊内聚。在面向对象设计中,从三个层次来考

12、察内聚性。1.单个方法的内聚性:方法是指操作的实现过程,一个操作由一个或多个方法实现。对方法的内聚性的评价与结构化设计中的相同,具有高内聚的方法应当只执行一个功能。 2.类的内聚性:设计类的原则是,一个类应该只有一个用途,类中的属性和操作应该全都是完成该类的任务所必需的,其中不包括无用的属性和操作。如果某个类有多个用途,通常应该把它分解成多个专用的类。3.层次结构的内聚性:对象之间通过继承关系而构成的层次结构,特殊类应该确实是对它的一般化类的一种具体化。如果一个派生类摒弃了它基类的许多属性和服务,那就是一个低内聚的。 (六)可重用 尽量使用已有的类 包括开发环境提供的类库,以及以往开发类似系统

13、是创建的类 创建新类时,考虑将来的可重用性第十一章 面向对象设计设计用例实现方案设计技术支撑方案设计用户界面精化设计模型 面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为了完成这些转换设计人员必须处理好下列问题: (1) 针对分析模型中的用例,设计实现方案,实现方案用UML交互 图表示 (2)设计技术支撑设施 (3)设计用户界面 (4)针对分析模型中的领域概念模型以及第(2)、(3)两步引用的的新类,完整、精确地确定每个类的属性和操作

14、,并完整地标示类之间的关系。设计用例实现方案UML的交互图(顺序图、协作图)适于用例实现方案的表示。设计方法包含三步:(1)提取边界类、实体类和控制类(2)构造交互图(3)根据交互图精化类图 11.2 设计技术支撑方案 技术支撑方案应该为多个用例的软件实现提供技术服务,所以,它应该成为整个目标软件系统中全局性的公共技术平台。 数据持久存储服务 并行与同步控制服务 技术支撑方案与用例实现方案的融合 11.3 设计用户界面需求分析和软件设计阶段都必须考虑人机交互问题。在需求分析阶段要确定人机交互的属性和外部服务,而在设计阶段要给出有关人机交互的所有系统成份,包括用户如何操作系统、系统如何响应命令和系统显示信息的报表格式等。用户界面设计策略与步骤如下: (1)熟悉用户并对用户分类 (2)按用户类别分析用户的工作流程和习惯 (3)设计命令系统并进行优化 (4)设计用户界面的各种细节 (5)增加用户界面专用的类与对象 (6)利用快速原型法改进界面设计 11.4 精化设计模型对设计模型精化需要考虑以下任务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论