如何设计理解对象(Arthur.Li总结)

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接口
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值