UML 类图六大关系完整通俗讲解(关联 / 聚合 / 组合 / 依赖 / 继承 / 实现)
1. 继承(泛化 Generalization)
含义:父子类关系,子类复用父类代码,是is-a(是一种)
特点:空心三角实线,父子强归属,子类拥有父类全部属性方法
例子
- 父类:动物;子类:猫、狗、老虎
- 父类:手机;子类:苹果手机、华为手机
- 父类:车;子类:轿车、货车
通俗理解:猫是一种动物。
2. 实现(Realization)
含义:类实现接口,接口只定义规范,类去写具体逻辑
特点:空心三角虚线,接口只有方法声明,无实现代码
例子
- 接口:会飞;实现类:鸟、飞机
- 接口:支付;实现类:微信支付、支付宝支付
- 接口:开门;实现类:指纹开门、密码开门
通俗理解:鸟实现了会飞这个能力标准。
3. 依赖(Dependency)
含义:临时使用、一次性调用,一个类方法里临时用到另一个类,用完就没关系
特点:虚线箭头,最弱关系,只在方法内局部引用
例子
- 司机开车:司机的 drive () 方法临时传入汽车对象,开完车两者无绑定
- 人点餐:人调用点餐方法,临时传入菜单,用完菜单丢弃
- 打印机打印文件:打印方法临时接收文件,打印完互不绑定
通俗理解:我临时借用一下,用完各走各的,不长期持有对方。
4. 普通关联(Association)
含义:长期双向 / 单向引用,互相持有对方对象,平等关系,无整体局部之分
特点:实线,双方可独立存活,只是长期存在联系
例子
- 老师 ↔ 学生:老师存学生列表,学生存授课老师,离职 / 毕业互不消亡
- 丈夫 ↔ 妻子:两人独立个体,只是建立婚姻联系
- 顾客 ↔ 售货员
通俗理解:互相认识、长期打交道,谁也不属于谁。
5. 聚合(Aggregation,弱整体 - 局部)
含义:整体包含局部,弱拥有,局部可脱离整体独立存在,生命周期分开
特点:空心菱形实线,has-a
例子
- 球队 ↔ 球员:球队解散,球员还能去别的球队
- 电脑 ↔ 鼠标:鼠标可以拆下来接另一台电脑
- 公司 ↔ 员工:公司倒闭,员工可以换工作
通俗理解:零件是我的,但可以拆走单独用。
6. 组合(Composition,强整体 - 局部)
含义:整体包含局部,强拥有,局部不能脱离整体,同生共死、生命周期绑定
特点:实心菱形实线,contains-a
例子
- 人 ↔ 心脏:人死亡,心脏无法单独存活
- 订单 ↔ 订单明细:删除订单,明细必须一起删除
- 房子 ↔ 房间:房间不能脱离房子单独存在
通俗理解:部件和主体绑定死,主体没了部件直接失效。
快速区分对照表
表格
| 关系 | 核心口诀 | 核心特征 | 典型例子 |
|---|---|---|---|
| 继承 | A 是一种 B | is-a,父子复用 | 猫 - 动物 |
| 实现 | A 遵守 B 规范 | 类实现接口 | 微信支付 - 支付接口 |
| 依赖 | A 临时用一下 B | 方法内临时参数,一次性 | 司机开车 |
| 普通关联 | A 和 B 长期有联系 | 互相持有,平等独立 | 老师 - 学生 |
| 聚合 | A 包含 B,B 可拆分 | 弱拥有,局部独立 | 电脑 - 鼠标 |
| 组合 | A 包含 B,不可拆分 | 强拥有,同生共死 | 人 - 心脏 |