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

  • 0
  • 0
  • 约8.7千字
  • 约 41页
  • 2017-09-08 发布于江苏
  • 举报

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

第十一章面向象设计(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)

1亿VIP精品文档

相关文档