软件工程-第11章第5节_第1页
软件工程-第11章第5节_第2页
软件工程-第11章第5节_第3页
软件工程-第11章第5节_第4页
软件工程-第11章第5节_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

11.5对象设计

对象设计要确定类、关联的完整定义以及接口的形式,实现操作方法的算法,实现必需的内部对象,并对数据结构和算法进行优化。11.5.1对象设计概述

对象设计中,必须按照系统设计中确定的设计策略进行设计,并完善相应的细节,设计工作的重心必须从强调应用域的概念转到强调计算机概念上来。分析中得到的对象可作为设计的框架,要选择相应的方法来实现这个框架。选择方法的标准是尽可能减少执行时间,占用内存少,开销小。分析中得到的类、属性和关联等都必须用具体的数据结构来实现,还必须引入新的类来存储中间结果,从而避免重复计算。11.5.1对象设计概述1.对象设计基础

对象模型描述了系统中的对象、属性和操作,这些对象可直接引入到设计中,而对象设计要增加详情和制定实现策略,为提高效率必须增加多个新类。

功能模型描述系统必须实现的操作。对象设计时必须确定如何实现操作,为操作选择算法,将复杂操作分解成简单操作。算法和分解都是实现优化的重要手段。11.5.1对象设计概述

动态模型说明系统是如何响应外部事件的,程序的主要控制结构来自于动态模型,要么显式实现程序控制,通过内部调度机制识别事件并把事件映射成操作调用,要么隐式实现程序控制,通过选择的算法按动态模型中确定的次序执行操作。11.5.1对象设计概述2.对象设计的步骤对象设计时应按下述步骤进行:(1)将三种模型结合起来以得到对象类。对象模型是对象设计的主要框架,必须将动态模型中的动作和活动以及功能模型中的处理转换成操作,加入到对象类中。(2)设计实现操作的算法。(3)优化数据访问路径。(4)实现外部接口的控制。(5)调整类结构以提高继承。(6)设计关联。(7)确定对象表示。(8)将类和关联集成到模块中。11.5.2算法设计1.算法设计步骤功能模型中确定的各个操作都必须用算法来表示。算法设计按如下过程进行:(1)选择极小化开销的算法。(2)选择适用于该算法的数据结构。(3)定义必需的新的内部类和操作。(4)将操作响应赋给合适的类。11.5.2算法设计2.选择算法选择算法应考虑下列因素:(1)计算复杂度。(2)易实现,易理解。(3)灵活性好。11.5.2算法设计3.选择数据结构选择算法时涉及到选择算法使用的数据结构,许多数据结构的实现都是包容类的实例,大多数面向对象语言提供了基本数据结构,供用户自选组合定义。4.定义内部类和操作在展开算法时,可能引入一些对象类,用来存放中间结果。在分解高层操作时也可引入新的低层操作。必须定义这些低层操作,因为大多数这类操作是外部不可见的。11.5.2算法设计5.优化设计效率低但语法正确的分析模型应该进行优化,其目的是使实现更为有效,但优化后的系统有可能会产生二义性且减少了可重用的能力,必须在清晰性和效率之间寻找一种适宜的折衷方案。在优化设计时,必须考虑:(1)增加冗余关联,以减少访问开销,提高方便性。(2)为提高效率重新调整计算。(3)为避免复杂表达式的重计算而保留派生属性。11.5.3控制的实现作为系统设计的一部分,应为动态模型的实现选择一种基本策略,而对象设计中必须实现这种策略。实现控制有下述三种方法:(1)在程序中设置地址以存放状态(过程驱动)。(2)直接用状态机制实现(事件驱动)。(3)使用并发任务(并发序列)。11.5.4调整继承1)重新修正类及操作有时可对多个类定义同一操作并且放在同一共同的祖先中,使子类可容易地继承。常见的情况是不同类的操作是相似的,但不相同,只需稍稍改动这种操作或类的定义就能使这些操作相互匹配。这些改动可以使用一个继承的操作覆盖它们。11.5.4调整继承2)抽象出公共行为在设计中,常增加新类和新操作,如果一个操作集合和属性集合看起来在两个类中重复过,则这两个类从更高抽象级角度看,很有可能是同一事物的特殊变种。当找出公共行为后,应该创建一个公共超类来实现共享性质,把特殊性质放在子类中,这种对象模型的变换称为抽象公共超类的过程。11.5.4调整继承3)使用委派来共享实现当使用继承作为一种实现技术的时候,将某类作为其他类的属性及关联,使用这种较为安全方法也可获得同样的效果。用这种方法,某种对象可使用委派而不是使用继承,这样可有选择地唤醒另一个类所希望的函数功能。委派包括从某对象中得到一个操作并且把它发往另一个对象,后一个对象是前一个对象的一部分或与前一个对象有关,只有有意义的操作才能委派给后一个对象,因而不存在偶然继承了无意义的操作问题。11.5.5关联的设计

关联是对象模型的纽带,它提供了对象之间的访问路径。关联是用于建模和分析的概念实体,在对象设计时,要实现对象模型中的关联。1.关联的遍历

从抽象角度看,关联是双向的,但在有些应用中的关联是单向的。这种单向关联实现起来就比较简单,但应用的需求可能是变化的,将来在有可能增加新的操作时,该操作需从反向遍历这个过去的单向关联。11.5.5关联的设计2.单向关联如果关联只是单向遍历,则可用指针来实现。指针是一个含有对象引用的属性。如果重数为一元的,则为一个简单指针;如果重数为多元的,则就是一个指针集合。11.5.5关联的设计3.双向关联许多关联是双向遍历的,虽然各方向的遍历频度不是相等的。下列三种方法可实现双向关联:(1)只将一个方向用属性实现。当需要反向遍历

温馨提示

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

评论

0/150

提交评论