什么是对象图
对象图(Object Diagram)是类图在某一时刻的实例快照:它画出具体对象(名称带下划线,形如 订单1042:订单)、对象之间的链接以及属性当前取值。类图定义规则,对象图展示规则被应用后的样子。它常用于评审聚合边界是否合理、以及为测试准备夹具数据。
基本信息
| 元素 | 对象(实例规格)、链接(对象间关系实例)、属性当前值 |
|---|---|
| 与类图关系 | 同一模型的两层视图:类图定义类型与规则,对象图展示实例 |
| 典型用途 | 评审聚合与关联结构、构造测试数据、解释复杂对象图 |
| 限制 | 只描述某一时刻,不表达变化过程与并发行为 |
典型使用场景
- 聚合边界评审:确认一个聚合内究竟包含哪些对象、链接如何组织
- 测试夹具设计:按对象图构造可复现的测试数据与依赖关系
- 疑难结构解释:用具体实例说明类图中难以理解的多重关联
- 数据模型对齐:与数据库表结构对照,检查实例与行的映射是否一致
- 异常态演示:画出数据不一致时的实例状态,帮助讨论修复策略
- 新人沟通:用具体实例代替抽象类图,降低理解门槛
对象图示例(PlantUML)
对象图示例(PlantUML)
@startuml
object "订单1042:订单" as o1 {
status = 已提交
amount = 1280.00
}
object "行1:订单行" as l1 {
sku = SKU-88
qty = 2
}
object "客户7:客户" as c1 {
level = VIP
}
o1 --> l1 : 包含
o1 --> c1 : 下单方
@enduml
' 注意:对象名带下划线表示实例,属性值写当前快照对象图与类图对照
| 要素 | 类图 | 对象图 |
|---|---|---|
| 表述对象 | 类(类型定义) | 具体实例(含名称与取值) |
| 关系 | 关联、泛化、组合 | 链接(关系在实例上的体现) |
| 多重性 | 约束取值范围 | 体现为实际存在的链接数量 |
| 主要用途 | 定义结构规则 | 验证结构在具体场景下是否合理 |
对象图适合回答「这个聚合里到底有哪些对象」:比在类图上加注解更直观,评审时分歧更少。
快照会随实现快速过期:如果用它承载测试夹具,要与测试数据一起维护,否则很快与代码脱节。