第7章_面向对象系统设计用2讲述.ppt

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章_面向对象系统设计用2讲述

第7章 面向对象设计 第7章 面向对象设计 7.1 设计准则 7.2 启发规则 7.3 软件重用 7.4 系统分解 7.5设计问题域 7.1 面向对象设计准则 1.模块化 2.抽象 3.信息隐蔽 4.弱藕合 5.强内聚 6.可重用 7.2 启发规则 1.设计结果应清晰易懂 (1)用词一致 (2)使用已有的协议 (3)减少消息模式的数目 (4)避免模糊的定义 7.3 软件重用 1.重用 重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。 广义地说,软件重用可分为以下3个层次: (1)知识重用(例如,软件工程知识的重用) (2)方法和标准的重用(例如,面向对象方 法或国家制定的软件开发规范的重用) (3)软件成分的重用 4. 类构件 5. 软件重用的效益 (1) 质量 (2) 生产率 (3) 成本 7.5设计问题域子系统 在面向对象设计过程中,可能对面向对象分析所得出的问题域模型做的补充或修改 1. 调整需求 2. 重用已有的类 3. 把问题域类组合在一起 4. 增添一般化类以建立协议 5. 调整继承层次 (1)使用多重继承机制 7.6 设计人机交互子系统 7.7 设计任务管理子系统 1. 分析并发性 2. 设计任务管理子系统 (1) 确定事件驱动型任务 (2) 确定时钟驱动型任务 (3) 确定优先任务 (4) 确定关键任务 (5) 确定协调任务 (6) 尽量减少任务数 (7) 确定资源需求 7.8 设计数据管理子系统 7.8.1 选择数据存储管理模式 1.文件管理系统 2.关系数据库管理系统 优点: (1) 提供了各种最基本的数据管理功能 (例如,中断恢复,多用户共享,多应 用共享,完整性,事务支持等)。 (2)为多种应用提供了一致的接口。 (3)标准化的语言(大多数商品化关系数据 库管理系统都使用SQL语言)。 缺点: 7.8.2 设计数据管理子系统 (2)关系数据库管理系统 (3)面向对象数据库管理系统 7.9 设计类中的服务 综合考虑对象模型、动态模型和功能模型,确定类中应有的服务 对象模型--是进行对象设计的基本框架。 动态模型--将对象的行为转换成由类所提供的服务。一张状态图描绘了一类对象的生命周期,图中的状态转换是执行对象服务的结果。对象的许多服务都与对象接收到的事件密切相关,事实上,事件就表现为消息,接收消息的对象必然有由消息选择符指定的服务,该服务改变对象状态(修改相应的属性值),并完成对象应做的动作。对象的动作既与事件有关,也与对象的状态有关。 功能模型 功能模型--指明了系统必须提供的服务。 状态图--图中状态转换所触发的动作,在功能模型中有时可能扩展成一张数据流图。数据流图中的某些处理可能与对象提供的服务相对应,应该在该对象所属的类中定义这个服务。 当一个处理涉及多个对象时,为确定把它作为哪个对象的服务,设计者必须判断哪个对象在这个处理中起主要作用。通常在起主要作用的对象类中定义这个服务。 7.9.1 确定类中应有的服务 确定处理归属的规则: (1)如果处理影响或修改了一个对 象,则最好把该处理与处理的目 标(而不是触发者)联系在一起。 (2)考察处理涉及的对象类及这些类 之间的关联,从中找出处于中心 地位的类。如果其他类和关联围 绕这个中心类构成星形,则这个 中心类就是处理的目标。 7.9.2 设计实现服务的方法 应该完成以下几项工作: 1. 设计实现服务的算法 考虑的因素: (1)算法复杂度。 (2)容易理解与容易实现。 (3)易修改。 2. 选择数据结构 3. 定义内部类和内部操作 7.10 设计关联 7.10 设计关联 7.10 设计关联 3. 实现双向关联 许多关联都需要双向遍历,当然,两个方向遍历的频度往往并不相同。实现双向关联有下列3种方法: (1) 只用属性实现一个方向的关联,当需要反向遍历时就执行一次正向查找。如果两个方向遍历的频度相差很大,而且需要尽量减少存储开销和修改时的开销,则这是一种很有效的实现双向关联的方法。 7.10 设计关联 图11.10 用对象实现关联 7.10 设计关联 (2) 两个方向的关联都用属性实现。具体实现方法已在前面讲过,如图7.9所示。这种方法能实现快速访问,但是,如果修改了一个属性,则相关的属性也必须随之修改,才能保持该关联链的一致性。当访问次数远远多于修改次数时,这种实现方法很有效。 (3) 用独立的关联对象实现双向关联。关联对象不属于相互关联的任何一个类,它是独立的关联类的实例,如图7.10所示。

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档