Skip to content

UML 类图六大关系完整通俗讲解(关联 / 聚合 / 组合 / 依赖 / 继承 / 实现) ​

1. 继承(泛化 Generalization) ​

含义:父子类关系,子类复用父类代码,是is-a(是一种)

特点:空心三角实线,父子强归属,子类拥有父类全部属性方法

例子

  • 父类:动物;子类:猫、狗、老虎
  • 父类:手机;子类:苹果手机、华为手机
  • 父类:车;子类:轿车、货车

通俗理解:猫是一种动物。

2. 实现(Realization) ​

含义:类实现接口,接口只定义规范,类去写具体逻辑

特点:空心三角虚线,接口只有方法声明,无实现代码

例子

  • 接口:会飞;实现类:鸟、飞机
  • 接口:支付;实现类:微信支付、支付宝支付
  • 接口:开门;实现类:指纹开门、密码开门

通俗理解:鸟实现了会飞这个能力标准。

3. 依赖(Dependency) ​

含义:临时使用、一次性调用,一个类方法里临时用到另一个类,用完就没关系

特点:虚线箭头,最弱关系,只在方法内局部引用

例子

  1. 司机开车:司机的 drive () 方法临时传入汽车对象,开完车两者无绑定
  2. 人点餐:人调用点餐方法,临时传入菜单,用完菜单丢弃
  3. 打印机打印文件:打印方法临时接收文件,打印完互不绑定

通俗理解:我临时借用一下,用完各走各的,不长期持有对方。

4. 普通关联(Association) ​

含义:长期双向 / 单向引用,互相持有对方对象,平等关系,无整体局部之分

特点:实线,双方可独立存活,只是长期存在联系

例子

  • 老师 ↔ 学生:老师存学生列表,学生存授课老师,离职 / 毕业互不消亡
  • 丈夫 ↔ 妻子:两人独立个体,只是建立婚姻联系
  • 顾客 ↔ 售货员

通俗理解:互相认识、长期打交道,谁也不属于谁。

5. 聚合(Aggregation,弱整体 - 局部) ​

含义:整体包含局部,弱拥有,局部可脱离整体独立存在,生命周期分开

特点:空心菱形实线,has-a

例子

  • 球队 ↔ 球员:球队解散,球员还能去别的球队
  • 电脑 ↔ 鼠标:鼠标可以拆下来接另一台电脑
  • 公司 ↔ 员工:公司倒闭,员工可以换工作

通俗理解:零件是我的,但可以拆走单独用。

6. 组合(Composition,强整体 - 局部) ​

含义:整体包含局部,强拥有,局部不能脱离整体,同生共死、生命周期绑定

特点:实心菱形实线,contains-a

例子

  • 人 ↔ 心脏:人死亡,心脏无法单独存活
  • 订单 ↔ 订单明细:删除订单,明细必须一起删除
  • 房子 ↔ 房间:房间不能脱离房子单独存在

通俗理解:部件和主体绑定死,主体没了部件直接失效。

快速区分对照表 ​

表格

关系核心口诀核心特征典型例子
继承A 是一种 Bis-a,父子复用猫 - 动物
实现A 遵守 B 规范类实现接口微信支付 - 支付接口
依赖A 临时用一下 B方法内临时参数,一次性司机开车
普通关联A 和 B 长期有联系互相持有,平等独立老师 - 学生
聚合A 包含 B,B 可拆分弱拥有,局部独立电脑 - 鼠标
组合A 包含 B,不可拆分强拥有,同生共死人 - 心脏