一、面相对象编程(OOP)
客观现实世界 | 程序世界 |
---|---|
抽象 | 实例化 |
对象 —> 类 | 类(class) —> 对象(object) |
面向对象编程范式
面向对象范式步骤 | ||
---|---|---|
面向对象分析 | what | 项目需求(变化) |
面向对象设计 | how | 以期用最小的代价适应项目需求变化 |
面向对象编程(OOP) | do | 编码实现 |
面向对象的三大特征是:封装、继承、多态
大体逻辑如下:
对于现实生活中任意一个领域:
-
必然是一个分类体系 —> “继承” —> 派生类对象 —> 对象的创建和销毁
-
必然存在个体多样性 —> “多态” —> 抽象类、虚函数
-
对于外行人不必了解领域内的细节 —> “封装” —> 权限修饰符
既然涉及到对象,必然涉及到对象的存储和相关计算 —> 需要"数据结构 + 算法"
二、UML统一建模语言(类图、类之间的关系)
1. 继承(泛化 generalization)
~ 表达的是:A is B 的关系
2. 关联关系
~ 表达的是:A has B 的关系
【分为:单向的、双向的】
【关系是固定的】
【彼此并不负责对方的生命周期】
【一般使用指针或引用】
3. 聚合关系
表达的是:对象之间为整体和部分的关系
- 【比较强的关联关系】
- 【"整体"不负责"部分"对象的销毁】
- 【整体不存在了,部分仍可作为零件单独存在】