
第七章面向对象设计Software Engineering第七章面向对象设计福
第七章 面向对象设计 第七章 面向对象设计 ■Software Engineering

第七章面向对象设计主要内容十简介软件体系结构设计问题域设计持久化设计用户界面设计
第七章 面向对象设计 主要内容 ◼ 简介 ◼ 软件体系结构设计 ◼ 问题域设计 ◼ 持久化设计 ◼ 用户界面设计

第七章面向对象设计7.1面向对象设计简介原则面向对象的方法使用统一的概念(UML),并不强调分析与设和表示法-计之间严格的阶段划分。面向对象方法中的分析过程与设计过程之间通常并没有明显的界限。两种观点分析侧重于弄清楚“做什么”,而设计则更“怎么做”倾向于弄清楚在分析阶段只考虑问题域和系统责任。在设计阶段才开始考虑与实现相关的因素
第七章 面向对象设计 7.1 面向对象设计简介 ◼ 面向对象的方法使用统一的概念、原则 和表示法(UML),并不强调分析与设 计之间严格的阶段划分 ,面向对象方法 中的分析过程与设计过程之间通常并没 有明显的界限。 ◼ 两种观点 ◼ 分析侧重于弄清楚“做什么”,而设计则更 倾向于弄清楚“怎么做” ◼ 在分析阶段只考虑问题域和系统责任 ,在 设计阶段才开始考虑与实现相关的因素

第七章面向对象设计面向对象设计简介(续)Coad/Yourdon方法中的OoD模型问题域设计调整从实现角度对问题域模型做一些补充和修改。不同类之间的相互关系人机交互设计设计命令层次结构。确定人机交互的细节任务管理设计识别任务及其类型审查井定义每个任务数据管理设计设计数据管理系统中存储和检索对象的基本结构,选择具体的数据管理方案,隔离数据营理系统对其他部分的影响
第七章 面向对象设计 面向对象设计简介(续) ◼ Coad/Yourdon方法中的OOD模型 ◼ 问题域设计 ◼ 从实现角度对问题域模型做一些补充和修改,调整 不同类之间的相互关系 ◼ 人机交互设计 ◼ 设计命令层次结构,确定人机交互的细节 ◼ 任务管理设计 ◼ 识别任务及其类型,审查并定义每个任务 ◼ 数据管理设计 ◼ 设计数据管理系统中存储和检索对象的基本结构,选择具体 的数据管理方案,隔离数据管理系统对其他部分的影响

第七章面向对象设计面向对象设计简介(续)OOD模型的五个层次■类与对象层:给出反映问题域和系统责任的类和对象结构层:描述类及对象之间的结构关系主题层:将系统划为多个主题,每一主题由相互联系的类与对象组织在一起属性层:定义类与对象的属性以及实例关联服务层:定义类写对象的操作以及消复关联
第七章 面向对象设计 面向对象设计简介(续) ◼ OOD模型的五个层次 ◼ 类与对象层:给出反映问题域和系统责任的 类和对象 ◼ 结构层:描述类及对象之间的结构关系 ◼ 主题层:将系统划为多个主题,每一主题由 相互联系的类与对象组织在一起 ◼ 属性层:定义类与对象的属性以及实例关联 ◼ 服务层:定义类与对象的操作以及消息关联

第七章面向对象设计面向对象设计简介(续)OOD的常见活动确定系统的常见体系结构通过静态建模与动态建模完成系统问题域的设计通过持久化设计完成系统的数据管理的设计以界面设计为核心完成人机交互的设计合理设计系统中的并发与任务调度,完成任务管理设计
第七章 面向对象设计 面向对象设计简介(续) ◼ OOD的常见活动 ◼ 确定系统的常见体系结构 ◼ 通过静态建模与动态建模完成系统问题域的 设计 ◼ 通过持久化设计完成系统的数据管理的设计 ◼ 以界面设计为核心完成人机交互的设计 ◼ 合理设计系统中的并发与任务调度,完成任 务管理设计

第七章面向对象设计面向对象设计基本原则什么是好的软件设计?基本原则■开放一闭合原则:软件实体都应该是对扩展开放,对修改闭合依赖倒置原则:高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象;抽象不应该依赖于细节细节应该依赖于抽象
第七章 面向对象设计 面向对象设计基本原则 ◼ 什么是好的软件设计? ◼ 基本原则 ◼ 开放-闭合原则:软件实体都应该是对扩展 开放,对修改闭合 ◼ 依赖倒置原则 :高层次的模块不应该依赖 于低层次的模块,两者都应该依赖于抽象; 抽象不应该依赖于细节,细节应该依赖于抽 象

应用层应用程序+网络编程接口传输层+vTCP或UDP网际层7IP网络访问层PPP协议802.11无线协议以太网协议

第七章面向对象设计面向对象设计基本原则(续)十按口隔离原则:不应强制要求客户依赖于他们不用的接口应当针对不同的客户编写不同类型的接口单一职责原则:如果有两个原因有可能引起一个类的改变,那么这个类就应该被拆分成两个类Liskov替换原则:子类必须能够完全替代它的父类:如添加子类,应注意继承时不要改变父类的方法目的在于扩展时避免造成对系统中其他部分的修改
第七章 面向对象设计 面向对象设计基本原则(续) ◼ 接口隔离原则:不应强制要求客户依赖于他们 不用的接口 ,应当针对不同的客户编写不同类 型的接口 ◼ 单一职责原则:如果有两个原因有可能引起一 个类的改变,那么这个类就应该被拆分成两个 类 ◼ Liskov替换原则 :子类必须能够完全替代它 的父类 ,如添加子类,应注意继承时不要改变 父类的方法目的在于扩展时避免造成对系统中 其他部分的修改

第七章 面向对象设计GRASPGRASP一种设计模式“职责分配”核心思想即如何通过职责分配来设计类,确定类应有那些方法包括9个设计模式信息专家(InformationExpert)创建者(Creator)(Controller)控制器(LowCoupling)低耦合(HighCohesion)高内聚(Polimorphism)多态性(PureFabrication)纯虚构(Indirection)间接性变化预防(ProtectedVariations)
第七章 面向对象设计 GRASP ◼ GRASP 一种设计模式 ◼ 核心思想 “职责分配”,即如何通过职责分 配来设计类,确定类应有那些方法 ◼ 包括9个设计模式 ◼ 信息专家(Information Expert) ◼ 创建者(Creator) ◼ 控制器(Controller) ◼ 低耦合(Low Coupling) ◼ 高内聚(High Cohesion) ◼ 多态性(Polimorphism) ◼ 纯虚构(Pure Fabrication) ◼ 间接性(Indirection) ◼ 变化预防(Protected Variations)