第7讲 面向对象设计-问题域子系统和数据库子系统.pptVIP

第7讲 面向对象设计-问题域子系统和数据库子系统.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象的设计 从面向对象的分析到设计,是一个模型逐渐扩充的过程 面向对象的设计准则 1 模块化 2 信息隐藏 3 弱耦合 如果两个对象之间的耦合通过消息连结实现,为交互耦合. 应该尽量降低交互耦合,减少消息中参数个数. 减少发送的消息数 继承是泛化类和特殊类之间的耦合,他们之间的结合应该越紧密越好,派生类应该多继承父类的属性和服务 4 强内聚 内聚指设计中使用的构件内各个元素,对目标的贡献程度 服务内聚:一个服务应该完成且仅完成一个功能 类内聚:一个类应该只有一个用途,不包括无用的属性或服务 高度的一般-特殊内聚: 5 可重用 尽量使用已有的类,考虑新类的重用性 设计的启发式原则 1 设计结果清晰易懂,提高维护和重用的可能. 用词一致 使用已有的协议 减少消息模式的数目 避免模糊的定义 2 一般-特殊的深度应适当. 一个中等规模的系统, 继承的层数为5-9. 继承应该与领域尝试保持一致. 设计的启发式原则 3 设计简单的类,定义不超过1页 避免过多的属性 类的任务定义明确 简化对象之间的合作关系 不提供太多的服务, public不超过7 如果简单的类太多,则形成”主题” 设计的启发式原则 4 使用简单的协议, 消息参数不超过3 5 使用简单的服务, 3-5行源代码.如果使用复杂的CASE语句,则可考虑采用一般-特殊结构分解 6 将变动的影响建到最小 软件重用 代码重用 源代码剪贴 源代码包含 #include 继承, 而扩充 设计结果重用 将一个应用系统移植到另外一个平台 分析结果重用 系统需求未变,但体系结构发生改变 可重用的软件成分 项目计划 成本估计 体系结构 需求模型和规格说明 设计 源代码 用户文档和技术文档 用户界面 可占到60%的代码 数据 测试用例 类的重用方式 1 实例重用 根据类创建实例,完成功能 2 继承重用 可以安全修改现有类而重用 3 多态重用 对外接口一般化, 降低复杂程度 类的设计中,有一些操作会影响重用,如图形的处理, 数据结构操作, 外部设备操作, 算法. 这些操作可能会妨碍重用. C++中,可以将其定义为虚函数, 由子类实现 重用的效益 重用,质量会更高. HP公司统计,新写代码4.1个错误/千行, 68%的重用代码2个/千行 生产率 30%重用,可提高生成率 25% 成本 系统分解 系统分解为子系统,降低系统的复杂程度,有利于分工合作,也有利于对系统的理解和维护. 子系统之间的交互方式 1 客户-供应商 关系 客户使用供应商的服务,了解其接口,而后者无需了解前者的接口 2 平等伙伴关系 子系统间可以互相调用, 交互更加复杂 子系统的组织方式 1 层次组织, 底层向上层提供服务 封闭式:上层只能使用直接下层的服务 开放式: 上层可以使用多层的服务 减少了每层的服务,但破坏了信息隐藏 2 块状组织,垂直分为独立\弱耦合子系统 问题域子系统 面向对象的设计,是对分析形成的问题域子系统进行完善和补充, 增添\合并\分解类与对象,属性,服务,调整继承关系. 调整需求 重用已有的类 选择可重用类,标出无用的属性和服务 有该类派生出问题域的类 标出可继承的属性和服务 修改与问题域相关的关联 把问题域类组合在一起 引入一个根类 增添一般化类,实现公共协议 调整继承层次 ATM系统结构 设计数据管理子系统 存储和检索对象的基本设施 文件管理系统 比较底层 关系数据库系统 开销大,不适合编程 面向对象的数据库 设计数据格式-文件系统 列出每个类的属性表,规范成第一范式 (无重复的列) 为每个类存储一个文件 测量性能和容量 修改第一范式, 以满足性能和容量要求 设计数据格式-关系数据库系统 列出每个类的属性表,规范成第三范式 表(属性依赖于主键,不依赖于其他) 定义一个数据库表 测量性能和容量 修改第三范式, 以满足性能和容量要求 设计相应的数据管理服务 类中增加隐性的属性和服务, 对象知道怎么存储自己 文件系统: 被存储的对象 需要打开文件, 定位到正确的记录, 检索, 更新 还需要新增一个类Object Server, 提供服务:通知对象保存自身, 检索已存储的对象,已提供给其他子系统使用 设计相应的数据管理服务 关系数据库系统: 被存储的对象 知道访问哪些表, 定位到正确的记录, 检索, 更新 还需要新增一个类Object Server, 提供服务:通知对象保存自身, 检索已存储的对象,已提供给其他子系统使用 ATM数据管理服务 ATM系统中,数据存放于分行计算机,采用关系数据库系统。 因为有并发事务,故由事务锁定帐户直到结束。 帐户类对象实现存储。 1 帐户对象增加一个属性和服务,自己存储自己 2 或者,帐户对象接到“存储自己”消息后, 向数据管理子系统发送消息, 以便

文档评论(0)

蝶恋花 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档