OOP的主要特征
- 抽象(abstract)
- 忽略掉一个对象或实体的细节而只关注其本质特征的过程
- 简化功能与格式
- 帮助用户与对象交互
- 封装(encapsulation)
- 隐藏数据和实现
- 提供公共的方法供用户调用功能
- 对象的两种视图----外部视图(对象能做的工作)、内部视图(对象如何完成工作)
- 继承(inheritance)
- 通过存在的类型定义新类型的机制
- 通常在两个类型之间存在”is-a“或”kind-of“的关系
- 通过继承可实现代码重用,另外继承也是多态的基础
- 如苹果”is-a“水果
- 多态(polymorpgism)
- 一个名称,多种形式
- 基于继承的多态
- 调用方法时根据所给对象的不同选择不同的处理方式
- 如
football.play()
:使用脚完成,basketball.play()
:使用手完成 - 给出一个具体的篮球或者足球,用户自动知道该使用谁的方式去执行
play()
- 关联(assoication)
- 对象之间交互时的一种引用方式
- 当一个对象通过对另一个对象的引用去使用另一个对象的服务或操作时,两个对象之间便产生了关联
- 如person使用computer,person与computer之间就存在了关联关系
- 聚合(aggregation)
- 关联关系的一种,一个对象称为另一个对象的组成部分
- 是一种关系较强的关联
- 在两个对象之间存在”has-a“这样的关系,一个对象作为另一个对象的属性存在,在外部对象被生产时,可由客户端指定与其关联的内部对象
- 如汽车与轮胎,轮胎作为汽车的一个组成部分,它和汽车可以分别生产以后装配起来使用,但汽车可以更换新轮胎,轮胎也可以卸下来给其他汽车使用
- 组合(composition)
- 当一个对象包含另一个对象时,外部对象负责管理内部对象的生命周期的情况
- 关联关系中最为强烈的一种
- 内部对象的创建由外部对象自己控制
- 外部对象不存在时,内部对象也不能存在
- 如电视机与显示器
- 内聚与耦合(cohesion & coupling)
- 内聚:度量一个类独立完成某项工作的能力
- 耦合:度量系统内或系统之间依赖关系的复杂度
- 设计原则:高内聚、低耦合
域模型
域模型是面向对象的,在面向对象的术语中,域模型也可称为设计模型。域模型又以下内容组成:
- 具有状态和行为的域对象
- 域对象之间的关系
- 关联(Association)
- 依赖(Dependency)
在BusinessService类中访问Customer类的方法,并且构造Customer类的实例。 - 聚集(Aggregation)
聚集指的是整体和部分之间的关系,在实体域对象之间很常见 - 一般化(泛化)(Generalization)
一般化指的是类之间的继承关系
- 关联(Association)
软件开发过程概述
- 传统开发过程(瀑布模型)
- OOAD的开发过程
- 大项目分解为一些子项目
- 使用UML工具
- 统一软件开发过程是一个迭代、递增的开发过程 80/20原则