1. 面向对象分析
* 产出是详细的需求描述
2. 如何进行面向对象设计
* 产出是类
* 划分职责进而识别出有哪些类
* 根据需求描述拆解小功能点(单一职责),罗列出来
* 找到功能相近、操作同样属性的可能归到一个类
* 复杂的需求需要先拆分模块,然后再用这个方法找类
* 定义类及其属性和方法
* 需求描述中动词作为候选方法、名次作为候选属性
* 并不是所有名次都被定义为类的属性,不属于这个类的可以通过传参
* 定义类与类之间的交互关系
1. 泛化(Generalization)
简单理解为继承关系
2. 实现(Realization)
一般是指接口和实现类之间的关系
3. 关联(Association)
一种非常弱的关系,包含聚合、组合两种关系。如果 B 类对象是 A 类的成员变量,那 B 类和 A 类就是关联关系。
4. 聚合(Aggregation)
一种包含关系。A 类对象包含 B 类对象,B 类对象的生命周期可以不依赖 A 类对象的生命周期,比如课程与学生之间的关系。`public class A { private B b; public A(B b) { this.b = b; }}`
5. 组合(Composition)
一种包含关系。A 类对象包含 B 类对象,B 类对象的生命周期跟依赖 A 类对象的生命周期,B 类对象不可单独存在,比如鸟与翅膀之间的关系`public class A { private B b; public A() { this.b = new B(); }}`
6. 依赖(Dependency)
比关联关系更加弱的关系,包含关联关系。
* 将类组装起来并提供执行入口
* 独立系统的话可以是main函数
* 可以是一组给外部调用的API接口
如何设计理解对象(Arthur.Li总结)
最新推荐文章于 2024-05-18 16:42:38 发布