- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象设计第八章
第八章 面向对象设计(OOD) OOD与结构化设计有何不同? OOD的过程是什么? 如何完成系统及子系统各部分的设计? §8.1.面向对象设计的准则 模块化 抽象 过程抽象 数据抽象 信息隐藏 §8.1.面向对象设计的准则(续) 弱耦合 交互耦合(通过消息连接实现) 继承耦合(一般化类与特殊类) 强内聚 服务内聚(一个服务仅完成一个功能) 类内聚 (一个类只有一个用途) 一般------特殊内聚 可重用 尽量使用已有的类 如果确实需要创建新类 §8.2 启发规则 设计结果应该清晰易懂 用词一致 使用已有的协议 减少消息模式的数目 避免模糊的定义 一般--特殊结构的深度应适当 设计简单的类 避免包含过多的属性 有明确定义 尽量简化对象之间的合作关系 不要提供太多服务 §8.2 启发规则(续) 使用简单的协议 使用简单的服务 设计变动减至最小 面向对象设计继续做面向对象分析阶段的工作,建立软件的结构。 系统的主要组成部分称为子系统,一般来说,子系统的数目应该与系统规模基本匹配。 各子系统之间应该具有尽可能简单、明确的接口,尽量减少子系统彼此间的依赖性。 在设计阶段中,五个层次用于建立系统的四个组成成份。 问题论域部分 人机交互部分 任务管理部分 数据管理部分 问题论域部分包括与应用问题直接有关的所有类和对象。 识别和定义这些类和对象的工作在OOA中已经开始,在OOA阶段得到的有关应用的概念模型描述了我们要解决的问题。 在OOD阶段,应当继续OOA阶段的工作,对在OOA中得到的结果进行改进和增补。 1、问题论域部分的设计(调整需求) 在OOA阶段得到的概念模型描述了要解决的问题 在OOD阶段,继续OOA阶段的工作,对在OOA中得到的结果进行改进和增补。 对OOA模型中的某些类与对象、结构、属性、操作进行组合与分解。 要考虑对时间与空间的折衷、内存管理、开发人员的变更、以及类的调整等。 2.复用设计 根据问题解决的需要,把从类库或其它来源得到的既存类增加到问题解决方案中去。 3、把问题论域相关的类关联起来 在设计时,从类库中引进一个根类,做为包容类,把所有与问题论域有关的类关联到一起,建立类的层次。 把同一问题论域的一些类集合起来,存于类库中。 4、加入一般化类以建立类间协议 有时,某些特殊类要求一组类似的服务。 此时,应加入一个一般化的类,定义为所有这些特殊类共用的一组服务名,这些服务都是虚函数。 在特殊类中定义其实现。 5、调整继承支持级别 在OOA阶段建立的对象模型中可能包括有多继承关系,但实现时使用的程序设计语言可能只有单继承,甚至没有继承机制,这样就需对分析的结果进行修改。 多继承模式有两种: 狭义的菱形 广义的菱形 针对单继承语言的调整 把特殊类的对象看做是一个一般类对象所扮演的角色,通过实例连接把多继承的层次结构转换为单继承的层次结构。 把多继承的层次结构平铺,成为单继承的层次结构。在这种情况下,有些属性或操作在同层的特殊类中会重复出现。 针对无继承语言的调整 当使用无继承的程序设计语言时,必须把具有继承关系的类层次结构平铺开来,成为一组类和对象。 一般可利用命名惯例,把这些类或对象关联起来。 6、改进性能 提高执行效率和速度是系统设计的主要指标之一。有时,必须改变问题论域的结构以提高效率。 如果类之间经常需要传送大量消息,可合并相关的类以减少消息传递引起的速度损失。 增加某些属性到原来的类中,或增加低层的类,以保存暂时结果,避免每次都要重复计算造成速度损失。 7、加入较低层的构件 在做面向对象分析时,分析员往往专注于较高层的类和对象,避免考虑太多较低层的实现细节。 在做面向对象设计时,设计师在找出高层的类和对象时,必须考虑到底需要用到哪些较低层的类和对象。 在 OOA 阶段给出了所需的属性和操作, 在设计阶段必须根据需求把交互细节加入到用户界面设计中,包括人机交互所必需的实际显示和输入。 用户界面部分设计主要由以下几个方面组成。 1、 用户分类 按技能层次分类: 外行/初学者/熟练者/专家 按组织层次分类: 行政人员/管理人员/专业技术人员/其它办事员 按所属集团分类: 顾客/职员 按职务分类: 总经理/经理/职员 2、描述人及其任务的脚本 对以上定义的每一类用户,列出对以下问题做出的考虑:什么人、目的、特点、成功的关键因
文档评论(0)