第十一章面向对象设计 面向对象设计的准则 启发规则 软件重用 系统分解 设计问题域子系统 ■设计人一机交互子系统 ■设计任务管理子系统 设计数据库管理子系统 设计类中的服务 ■设计关联 设计优化
第十一章 面向对象设计 ◼ 面向对象设计的准则 ◼ 启发规则 ◼ 软件重用 ◼ 系统分解 ◼ 设计问题域子系统 ◼ 设计人—机交互子系统 ◼ 设计任务管理子系统 ◼ 设计数据库管理子系统 ◼ 设计类中的服务 ◼ 设计关联 ◼ 设计优化
面向对象设计的准则 ■1111模块化 ■112抽象 ■1.13信息隐藏 ■1114弱耦合 ■1.15强内聚 ■1116可重用
面向对象设计的准则 ◼ 11.1.1 模块化 ◼ 11.1.2 抽象 ◼ 11.1.3 信息隐藏 ◼ 11.1.4 弱耦合 ◼ 11.1.5 强内聚 ◼ 11.1.6 可重用
面向对象设计的准则 模块化 抽象 ■抽岀事物的本质特性,暂不考虑其细节,使设计从具体 实现方法中超脱 信息隐藏 ■弱耦合 交互耦合 (interactive coupling:通过传递 message 发生 继承耦合
面向对象设计的准则 ◼ 模块化 ◼ 抽象 ◼ 抽出事物的本质特性, 暂不考虑其细节,使设计从具体 实现方法中超脱 ◼ 信息隐藏 ◼ 弱耦合 ◼ 交互耦合(interactive coupling):通过传递 message发生 ◼ 继承耦合
面向对象设计的准则 ■强内聚 服务内聚 (service cohesion 个服务只完成 个功能 类内聚 class cohesion):一个类只有一个用途, 否则分解之 般-特殊内聚 可重用
面向对象设计的准则 ◼ 强内聚 ◼ 服务内聚(service cohesion):一个服务只完成一 个功能 ◼ 类内聚(class cohesion):一个类只有一个用途, 否则分解之 ◼ 一般-特殊内聚 ◼ 可重用
启发规则 ■1121设计结果应该清晰易懂 ■1.2.2一般-特殊结构的深度应适当 ■1123设计简单的类 ■1.2.4使用简单的协议 ■112.5使用简单的服务 ■112.6把设计变动减至最小
启发规则 ◼ 11.2.1 设计结果应该清晰易懂 ◼ 11.2.2 一般----特殊结构的深度应适当 ◼ 11.2.3 设计简单的类 ◼ 11.2.4 使用简单的协议 ◼ 11.2.5 使用简单的服务 ◼ 11.2.6 把设计变动减至最小
启发规则 设计结果应该清晰易懂 用词一致——按习惯用法命名 使用已有的 protocol 尽量减少 message模式的数目 ■避免模糊定义 般-特殊结构的深度应适当 设计简单的类 避免过多 attributes 能用简单的语句描述一个clas的任务 objects之间合作关系要简单 避免过多 method(≤7个
启发规则 ◼ 设计结果应该清晰易懂 ◼ 用词一致 —— 按习惯用法命名 ◼ 使用已有的protocol ◼ 尽量减少message模式的数目 ◼ 避免模糊定义 ◼ 一般----特殊结构的深度应适当 ◼ 设计简单的类 ◼ 避免过多attributes ◼ 能用简单的语句描述一个class的任务 ◼ objects之间合作关系要简单 ◼ 避免过多methods( 7个)
启发规则 ■使用简单的协议 使用简单的服务 ■把设计变动减至最小
启发规则 ◼ 使用简单的协议 ◼ 使用简单的服务 ◼ 把设计变动减至最小
软件重用 ■11.3.,1概念 ■132软件重用的效果 ■11.3.3软件重用技术 113.4类构件
软件重用 ◼ 11.3.1 概念 ◼ 11.3.2 软件重用的效果 ◼ 11.3.3 软件重用技术 ◼ 11.3.4 类构件
软件重用 概念 ■知识重用(例如软件工程知识的重用) 方法和标准重用 软件成分的重用 ■代码重用 ■设计重用 ■分析重用
软件重用 ◼ 概念 ◼ 知识重用(例如软件工程知识的重用) ◼ 方法和标准重用 ◼ 软件成分的重用 ◼代码重用 ◼设计重用 ◼分析重用
软件重用 ■软件重用的效果 额外代价 ■创建可重用成分的专门投资 ■多花24倍时间测试以保证质量 构件库的建立与维护需要投资 重用率( Reusability)与生产率( Productivity) 开发代码的生产率C=Ln 重用新代码的生产率C (-CB/CPR
软件重用 ◼ 软件重用的效果 ◼ 额外代价: ◼ 创建可重用成分的专门投资 ◼ 多花2~4倍时间测试以保证质量 ◼ 构件库的建立与维护需要投资 ◼ 重用率(Reusability)与生产率(Productivity) 开发代码的生产率 n n n E L C = 重用新代码的生产率 r r r E L C = 1 (1 C /C )R C P n r n − − =