5.强内聚 ■内聚衡量一个模块内各个元素彼此结合的紧密程度。 ■内聚定义为:设计中使用的一个构件内的各个元素,对完成 个定义明确的目的所做出的贡献程度。 ■在设计时应该力求做到高内聚。 ■在面向对象设计中存在下述3种内聚 √服务内聚。一个服务应该完成一个且仅完成一个功能。 √类内聚。一个类应该只有一个用途,它的属性和服务应该是 高内聚的。 般-特殊内聚。设计出的一般特殊结构,应该符合多数人 的概念,应该是对相应的领域知识的正确抽取
5. 强内聚 ◼ 内聚衡量一个模块内各个元素彼此结合的紧密程度。 ◼ 内聚定义为:设计中使用的一个构件内的各个元素,对完成一 个定义明确的目的所做出的贡献程度。 ◼ 在设计时应该力求做到高内聚。 ◼ 在面向对象设计中存在下述3种内聚: ✓ 服务内聚。一个服务应该完成一个且仅完成一个功能。 ✓ 类内聚。一个类应该只有一个用途,它的属性和服务应该是 高内聚的。 ✓ 一般-特殊内聚。设计出的一般-特殊结构,应该符合多数人 的概念,应该是对相应的领域知识的正确抽取
6.可重用 ■软件重用是提高软件开发生产率和目标系统质量的重要途 径 ■重用基本上从设计阶段开始。 ■重用有两方面的含义: √一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类 似系统时创建的类), √二是如果确实需要创建新类,则在设计这些新类的协议时,应该 考虑将来的可重复使用性
6. 可重用 ◼ 软件重用是提高软件开发生产率和目标系统质量的重要途 径。 ◼ 重用基本上从设计阶段开始。 ◼ 重用有两方面的含义: ✓ 一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类 似系统时创建的类), ✓ 二是如果确实需要创建新类,则在设计这些新类的协议时,应该 考虑将来的可重复使用性
112启发规则 1.设计结果应该清晰易懂 用词一致。 使用已有的协议 ■减少消息模式的数目。 ■避免模糊的定义。 般-特殊结构的深度应适当 ■应该使类等级中包含的层次数适当。一般说来,在一个中等规模(大约 包含100个类)的系统中,类等级层次数应保持为7±2。 ■不应该仅仅从方便编码的角度出发随意创建派生类,应该使一般-特殊 结构与领域知识或常识保持一致
11.2 启发规则 1. 设计结果应该清晰易懂 ◼ 用词一致。 ◼ 使用已有的协议。 ◼ 减少消息模式的数目。 ◼ 避免模糊的定义。 2. 一般-特殊结构的深度应适当 ◼ 应该使类等级中包含的层次数适当。一般说来,在一个中等规模(大约 包含100个类)的系统中,类等级层次数应保持为7±2。 ◼ 不应该仅仅从方便编码的角度出发随意创建派生类,应该使一般-特殊 结构与领域知识或常识保持一致
3.设计简单的类 ■应该尽量设计小而简单的类,以便于开发和管理 ■为使类保持简单,应该注意以下几点 √避免包含过多的属性。 √有明确的定义。 √尽量简化对象之间的合作关系。 不要提供太多服务:一个类提供的公共服务不超过7个。 √在开发大型软件系统时,设计出大量较小的类,需要划分“主题
3. 设计简单的类 ◼ 应该尽量设计小而简单的类,以便于开发和管理。 ◼ 为使类保持简单,应该注意以下几点: ✓ 避免包含过多的属性。 ✓ 有明确的定义。 ✓ 尽量简化对象之间的合作关系。 ✓ 不要提供太多服务:一个类提供的公共服务不超过7个。 ✓ 在开发大型软件系统时,设计出大量较小的类,需要划分“主题
4.使用简单的协议 ■一般说来,消息中的参数不要超过3个。当然,不超过3个的限制也不 是绝对的。 5使用简单的服务 ■一般说来,应该尽量避免使用复杂的服务。类中的服务都很小,可以 用仅含一个动词和一个宾语的简单句子描述它的功能 如果一个服务中包含了过多的源程序语句,或者语句嵌套层次太多, 或者使用了复杂的CASE语句,则应该仔细检查这个服务,设法分解 或简化它,考虑用一般-特殊结构代替
4. 使用简单的协议 ◼ 一般说来,消息中的参数不要超过3个。当然,不超过3个的限制也不 是绝对的。 5. 使用简单的服务 ◼ 一般说来,应该尽量避免使用复杂的服务。类中的服务都很小,可以 用仅含一个动词和一个宾语的简单句子描述它的功能。 ◼ 如果一个服务中包含了过多的源程序语句,或者语句嵌套层次太多, 或者使用了复杂的CASE语句,则应该仔细检查这个服务,设法分解 或简化它,考虑用一般-特殊结构代替