第十一章面向对象设计Object-OrientedDesign).pptVIP

第十一章面向对象设计Object-OrientedDesign).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十一章面向对象设计Object-OrientedDesign)

第十一章 面向对象设计 (Object-Oriented Design) §1. OOD准则:优秀软件设计的一个重要特点是容易维护 §2. 启发式规则 1、设计结果清晰易懂,应做到: ① 用词一致 —— 按习惯用法命名。不同classes中相似的methods最好取同一名字。 ② 使用已有的协议。 ③ 尽量减少message模式的数目。 ④ 避免模糊定义。 §5. 设计类中的服务 —— 细化object model中的 methods §6. 设计关联 面向对象环境下的测试策略 单元测试(类测试) 在面向对象环境下,最小的可测试的单元是封装了的类或对象,而不是程序模块。 面向对象软件的类测试等价于传统软件开发方法中的单元测试。但它是由类中封装的操作和类的状态行为驱动的。 完全孤立地测试类的各个操作是不行的。 考虑一个类的层次。在基类中我们定义了一个操作X。 每一个派生类都使用操作X,它是在各个类所定义的私有属性和操作的环境中使用的。因使用操作X的环境变化太大,所以必须在每一个派生类的环境下都测试操作X。 在面向对象开发环境下,把操作完全孤立起来进行测试,其收效是很小的。 组装测试 因为面向对象软件没有一个层次的控制结构,所以传统的自顶向下和自底向上的组装策略意义不大。 每次将一个操作组装到类中(像传统的增殖式组装那样)常常行不通,因为在构成类的各个部件之间存在各种直接的和非直接的交互。 对于面向对象系统的组装测试,存在两种不同的测试策略。 基于线索测试 (Thread-based Test) 它把为响应某一系统输入或事件所需的一组类组装在一起。每一条线索将分别测试和组装。 基于应用的测试 (Use-based Test) 它着眼于系统结构,首先测试独立类,这些类只使用很少的服务器类。再测试那些使用了独立类的相关类。一系列测试各层相关类的活动继续下去,直到整个系统构造完成。 确认测试 在进行确认测试和系统测试时,不关心类之间连接的细节。着眼于用户的要求和用户能够认可的系统输出。 为了帮助确认测试的执行,测试者需要回到分析模型,根据那里提供的事件序列(脚本)进行测试。 可以利用黑盒测试的方法来驱动确认测试。 雇 员 公 司 find_skill 雇 用 1+ 技 能 具有技能 1+ 1+ §7. 优 化 1、确定优先级: 必须站在全局高度确定各项质量指标的优先级,在优化设计时制定折衷方案。切忌各子系统自以为是,导致最终优化目标对立。 最常见的情况是在效率与清晰性之间的折衷。 2、提高效率的技术 ① 增加关联(类) 例:设某公司有2000名雇员,平均每名雇员会10种技能,其中有5人精通日语,现要查询公司中会讲日语的雇员是哪些人 雇 员 公 司 精通语言 1+ 语 言 1+ §7. 优化 方法1:嵌套查询 —— 遍历雇员2000次,而对每个雇员遍历技能10次。命中率为1/4000。 方法2:用Hash Table实现技能,使“会讲日语”对应唯一的技能对象,则命中率上升为1/400。 方法3:增加一个额外的限定关联“精通语言”,即可立刻查得结果。 §7. 优化 ② 调整查询次序,优化算法 例如公司有5名会日语的雇员,有200名会法语的雇员。现要找日、法语均会的雇员,则应先找的 雇员,再从中找 的雇员。 会日语 会法语 ③ 保留内部中间过程产生的派生属性。 3、调整继承关系 ① 向上归纳 ② 向下派生 建立这样的索引必然多占空间,而且基关联改变时也必须相应地修改索引。因此,应只给那些经常执行并且开销大、命中率低的查询建立索引。 §7. 优化 例:实现 Stack 方法1:从 List 派生 push = last + add pop = last + remove 问题:Stack.first 也是合法的。 List add remove first last Stack push pop Inheritance ③ 利用委托(commitment) 方法2:把 List 作为 Stack 的一个 attribute ,称为 commitment。这种方法比较安全(Stack.first 为非法)。 List add remove first last Stack List 1 push pop Commitment 第十二章 面向对象实现 §1. 面向对象的程序设计语言 一致性、可重用性、可维护性 §2. 程序设计风格 可重用、可扩充、健壮性 §3. 面向对象测试 算法、类、主

文档评论(0)

wyw118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档