第9章面向对象设计 面向对象的设计原则 系统设计 对象设计 设计模式 RUP的设计活动 RUP的实现活动 安交通大学刘海岩
西安交通大学 刘海岩 1 第9章 面向对象设计 ⚫ 面向对象的设计原则 ⚫ 系统设计 ⚫ 对象设计 ⚫ 设计模式 ⚫ RUP的设计活动 ⚫ RUP的实现活动
91面向对象的设计概念及原则 1、有关概念 面向对象设计将面向对象分析创建的分析模型变换 为设计模型,它将作为软件构造的蓝图。但由于面向对 象分析与设计活动是一个迭代与演化的过程,概念与表 示方法的一致性使得分析与设计阶段平滑过渡 传统的设计方法将问题域分解成一系列任务来完成 这些任务形成过程式软件的基本结构。面向对象方法把 问题域作为一系列相互作用的对象,在此基础上构造出 基于对象的软件系统结构 面向对象设计包括系统设计和对象设计。系统设计 包括如何把整个系统分解为子系统、子系统的软硬件布 局等策略性决策;对象设计是根据具体的实现策略,对 分析模型进行扩充。通过系统设计和对象设计产生设计 模型,是进一步完成系统实现的基础。下表列出了分析 模型与设计模型的区别:学如
西安交通大学 刘海岩 2 9.1 面向对象的设计概念及原则 1、有关概念 面向对象设计将面向对象分析创建的分析模型变换 为设计模型,它将作为软件构造的蓝图。但由于面向对 象分析与设计活动是一个迭代与演化的过程,概念与表 示方法的一致性使得分析与设计阶段平滑过渡。 传统的设计方法将问题域分解成一系列任务来完成, 这些任务形成过程式软件的基本结构。面向对象方法把 问题域作为一系列相互作用的对象,在此基础上构造出 基于对象的软件系统结构。 面向对象设计包括系统设计和对象设计。系统设计 包括如何把整个系统分解为子系统、子系统的软硬件布 局等策略性决策;对象设计是根据具体的实现策略,对 分析模型进行扩充。通过系统设计和对象设计产生设计 模型,是进一步完成系统实现的基础。下表列出了分析 模型与设计模型的区别:
分析模型 设计模型 概念模型,回避了实现问题;物理模型,是实现蓝图 对设计是通用的; 针对特定的实现; 对类型有3种构造型 对类型有任意数量的构造型 (依赖于实现语言); 不太形式化; 比较形式化; 开发费用较低 开发费用较高; 层数少; 层数多; 动态的; 动态的(特别关注时序); 勾画系统的设计轮廓; 进行系统设计; 主要通过研讨会等方式创建;设计模型和实现模型需双向 开发; 可能不需要在整个生命周期在整个生命周期内都应该维护 内都做维护; 安交通大学刘海岩
西安交通大学 刘海岩 3 分析模型 设计模型 概念模型,回避了实现问题; 物理模型,是实现蓝图 ; 对设计是通用的; 针对特定的实现; 对类型有3种构造型; 对类型有任意数量的构造型 (依赖于实现语言); 不太形式化 ; 比较形式化; 开发费用较低; 开发费用较高; 层数少; 层数多; 动态的; 动态的(特别关注时序); 勾画系统的设计轮廓; 进行系统设计; 主要通过研讨会等方式创建; 设计模型和实现模型需双向 开发; 可能不需要在整个生命周期 在整个生命周期内都应该维护 内都做维护;
2、O0设计原则 (1)封装 是将一个完整的概念组成一个独立的单元,然后通过 个名字来引用它。在OO系统的较高层次,将一些相关 的应用问题封装在一个子系统中,对子系统的访问是通过 访问子系统的接口实现的;在较低的层次将具体对象的属 性和操作封装在一个对象类中,通过类的接国访问其属性 (2)抽象 OO方法不仅支持过程抽象还支持数据抽象。类封装了 数据和操作数据的方法,类是一种包含过程抽象的数据抽 象,它对外提供的公共数据接口构成了类的规格说明(类 的协议)。使用者无需知道类中的具体操作是如何实现的, 无需了解内部数据的具体表现方式,只要搞清它的规格说 明,就可通过接口定义的操作访问类的数据。 安交通大学刘海岩
西安交通大学 刘海岩 4 2、OO设计原则 (1)封装 是将一个完整的概念组成一个独立的单元,然后通过 一个名字来引用它。在OO系统的较高层次,将一些相关 的应用问题封装在一个子系统中,对子系统的访问是通过 访问子系统的接口实现的;在较低的层次将具体对象的属 性和操作封装在一个对象类中,通过类的接口访问其属性。 (2)抽象 OO方法不仅支持过程抽象还支持数据抽象。类封装了 数据和操作数据的方法,类是一种包含过程抽象的数据抽 象,它对外提供的公共数据接口构成了类的规格说明(类 的协议)。使用者无需知道类中的具体操作是如何实现的, 无需了解内部数据的具体表现方式,只要搞清它的规格说 明,就可通过接口定义的操作访问类的数据
(3)信息隐蔽 信息隐蔽是通过对象的封装实现的。类的结构分离 了接口和实现,对于类的使用者来说,属性的表示和操 作的实现都是隐蔽的。 (4)强内聚 服务内聚:一个服务完成且仅完成一个功能 类内聚:一个类的属性和操作全部都是完成某个 任务所必须的,其中不包括无用的属性和操作。 层内聚:把向用户或高层提供相关服务的功能放 在一起,而将其他内容排除在外。为了保证适当的层内 聚,往往有严格的层次结构,高层能够访问低层的服务 而低层却不能访问高层的服务(下图描述了这种关系) 以下的相关服务可以放在同一层:计算服务、消息 或数据传输服务、数据存储服务、管理安全服务、用户 交互服务、访问操作系统服务、硬件交互服务等。 安交通大学刘海岩
西安交通大学 刘海岩 5 (3)信息隐蔽 信息隐蔽是通过对象的封装实现的。类的结构分离 了接口和实现,对于类的使用者来说,属性的表示和操 作的实现都是隐蔽的。 (4)强内聚 • 服务内聚: 一个服务完成且仅完成一个功能。 • 类内聚: 一个类的属性和操作全部都是完成某个 任务所必须的,其中不包括无用的属性和操作。 • 层内聚: 把向用户或高层提供相关服务的功能放 在一起,而将其他内容排除在外。为了保证适当的层内 聚,往往有严格的层次结构,高层能够访问低层的服务, 而低层却不能访问高层的服务(下图描述了这种关系)。 以下的相关服务可以放在同一层:计算服务、消息 或数据传输服务、数据存储服务、管理安全服务、用户 交互服务、访问操作系统服务、硬件交互服务等。•