一、什么是多重性(Multiplicity)
定义
多重性(Multiplicity) 表示一个类与另一个类之间的数量关系,即:
“一个对象能关联多少个另一个对象?”
例如:
- 一个
Customer可以拥有多个Order。
- 一个
Order只能属于一个Customer。
二、常见多重性符号与含义
UML符号 | 含义 | Java对应 |
1 | 恰好一个 | 普通对象引用 |
0..1 | 零个或一个 | 可空对象引用(nullable) |
* | 任意多个(0到多) | 集合(List、Set) |
1..* | 至少一个 | 非空集合(必须有元素) |
n..m | n到m个之间 | 特殊约束(较少见) |
三、在类图中的表示方式
多重性标注通常写在关联的连线两端。
例如:
说明:
- 左侧
Customer的多重性是1,表示每个订单都有一个顾客。
- 右侧
Order的多重性是0..*,表示一个顾客可以下多个订单。
四、对应到 Java 的实现方式
我们来看几种典型情况。
一对一(1 —— 1)
说明:
- 每个 Person 恰好有一个 Passport。
- 每个 Passport 也只属于一个 Person。
一对零或一(1 —— 0..1)
说明:
- 每个员工“可能”有一个停车位。
- 即 ParkingSpace 可以为
null。
一对多(1 —— 0..*)
说明:
- 一个顾客可以有多个订单。
- 一个订单只能属于一个顾客。
多对一(0..* —— 1)
说明:
- 多个订单可以属于同一个顾客。
- 一个订单只属于一个顾客。
多对多(0..* —— 0..*)
说明:
- 一个学生可以有多门课程。
- 一名课程可以有多个学生。
在数据库建模中,这通常会变成中间表(多对多关系表)。
六、进阶:多重性与组合、聚合结合
多重性经常与 聚合(Aggregation)或组合(Composition)关系一起使用,用于描述“整体–部分”之间的数量约束。
组合 + 多重性
含义:
- 每个房子必须至少有一个房间。
- 房间不能独立存在(组合)。
聚合 + 多重性
含义:
- 部门可以没有员工(0..*)。
- 员工可以属于多个部门(视具体业务而定)。
七、实战小技巧与经验总结
设计需求 | UML多重性 | Java建模建议 |
对象必须存在 | 1 | 非空对象引用 |
对象可选 | 0..1 | Optional<> 或 null |
多个对象(可空) | 0..* | List<> |
多个对象(必至少一个) | 1..* | 初始化非空集合并校验 |
固定数量 | n..m | 逻辑校验或使用数组 |
🧩 示例:订单系统完整多重性设计
📘 含义:
- 一个顾客可以有多个订单(0..*)
- 每个订单至少有一个订单项(1..*)
- 每个订单项必须对应一个商品(1)
对应 Java:
八、总结(核心记忆表)
UML | 读法 | Java对应 |
1 | 恰好一个 | 普通引用 |
0..1 | 零个或一个 | 可空引用 |
* | 任意多个 | 可空集合 |
1..* | 至少一个 | 非空集合 |
n..m | n到m个 | 特殊约束 |
- Author:CoderWdd
- URL:https://www.wuinsights.top//article/3486fa7b-8a60-477d-9f21-7b15dda5422f
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts