第八章OOD评判标准 、什么是评判标准?为什么需要是评判标准? 追求一个好的设计,以及设计完成后评价它是不是好的 设计,不是一个笼统的概念,而是有一些具体的评判标 准( criteria) 正确的设计是不是唯一的; 大系统经常面临多种方案的选择,各种方案有好坏之分 方法并没有提供全部细节和具体答案, 需要有一些准则来控制设计质量
第八章 OOD评判标准 一、什么是评判标准?为什么需要是评判标准? 追求一个好的设计,以及设计完成后评价它是不是好的 设计,不是一个笼统的概念,而是有一些具体的评判标 准(criteria )。 正确的设计是不是唯一的; 大系统经常面临多种方案的选择,各种方案有好坏之分 方法并没有提供全部细节和具体答案, 需要有一些准则来控制设计质量
二、耦合 Coupling一一连接、结合、联系、并联 这里指oOD片段之间的相互联系 考虑耦合问题的目的: 改动一部分,对其它部分影响最小 阅读一部分,查阅其它部分较小 耦合强度的衡量 成分之间的信息传输量 成分之间的信息复杂程度
二、耦合Coupling——连接、结合、联系、并联 这里指OOD片段之间的相互联系 考虑耦合问题的目的: 改动一部分,对其它部分影响最小 阅读一部分,查阅其它部分较小 耦合强度的衡量 成分之间的信息传输量 成分之间的信息复杂程度
1、交互耦合 Interaction Coupling(低耦合为好) ooD中的交互耦合一一消息连接 (1)一条消息中的参数数目 条消息中参数应尽量不超过3个 3个以上的参数属于高度耦合(强耦合),容易有波动效应 简化 (2)减少一个对象发出和接收消息的数目 如果一个对象进出消息连接太多,则属强耦合 (3)消息穿越: 对象A从P接收消息,如果不使用它的任何信息,也不执行什么活 动,只是转送给Q,则叫消息穿越,应该加以修改 P
1、交互耦合 Interaction Coupling (低耦合为好) OOD中的交互耦合——消息连接 (1)一条消息中的参数数目 一条消息中参数应尽量不超过3个 3个以上的参数属于高度耦合(强耦合),容易有波动效应 ——简化 (2)减少一个对象发出和接收消息的数目 如果一个对象进出消息连接太多,则属强耦合 P A Q (3)消息穿越: 对象A从P接收消息,如果不使用它的任何信息,也不执行什么活 动,只是转送给Q,则叫消息穿越,应该加以修改
2继承耦合 nheritance Coupling(强耦合为好) 继承耦合—一般特殊关系 继承耦合是OOA和OOD努力追求的目标 避免以下两种低耦合 (1)特殊类拒绝一般类的许多属性和服务如图831(a (2)继承而不使用 拒绝的情况可通过oOD模型看出, 不使用的情况要通过类定义模板审查出来 修改: 重新组织类,调整结构
2.继承耦合 Inheritance Coupling (强耦合为好) 继承耦合⎯一般-特殊关系 继承耦合是OOA和OOD努力追求的目标 避免以下两种低耦合 (1)特殊类拒绝一般类的许多属性和服务(如图8.3.1(a)) (2)继承而不使用 拒绝的情况可通过OOD模型看出, 不使用的情况要通过类定义模板审查出来。 修改: 重新组织类,调整结构
三、内聚 Cohesion(高内聚为好) 人:一个组织内部,人与人之间关系紧密程度 0oD:一个OD成分内部元素的关系紧密程度 1、服务内聚 高内聚:一个服完成一个功能 低内聚: 个服务实现多项功能,或者只实现功能的一部分 判断方法: 服务的大小 用简单的句子描述 2、类内聚 指属性和服务应该是高内聚的 没有多余的属性和服务—一都是描述对象本身责任的 3.一般-特殊内聚 特殊类应该真正地描述了一般类的特化 概念上要讲得通(包括命名) 确实继承了一般类的许多属性和服务
三、内聚 Cohesion (高内聚为好) 人:一个组织内部,人与人之间关系紧密程度 OOD:一个OOD成分内部元素的关系紧密程度 1、服务内聚 高内聚:一个服完成一个功能 低内聚: 一个服务实现多项功能,或者只实现功能的一部分 判断方法: 服务的大小 用简单的句子描述 2、类内聚 指属性和服务应该是高内聚的 没有多余的属性和服务——都是描述对象本身责任的 3.一般-特殊内聚 特殊类应该真正地描述了一般类的特化 概念上要讲得通(包括命名) 确实继承了一般类的许多属性和服务