首页/开发/系统分析与架构设计速查/对象图(Object Diagram)
需求分析与建模61 条

对象图(Object Diagram)

对象图是某一时刻的实例快照:对象、对象间的链接与属性取值,常用于构造测试数据、解释类图中的复杂结构。

什么是对象图

对象图(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
' 注意:对象名带下划线表示实例,属性值写当前快照

对象图与类图对照

要素类图对象图
表述对象类(类型定义)具体实例(含名称与取值)
关系关联、泛化、组合链接(关系在实例上的体现)
多重性约束取值范围体现为实际存在的链接数量
主要用途定义结构规则验证结构在具体场景下是否合理
对象图适合回答「这个聚合里到底有哪些对象」:比在类图上加注解更直观,评审时分歧更少。
快照会随实现快速过期:如果用它承载测试夹具,要与测试数据一起维护,否则很快与代码脱节。

易错点

  • 用对象图代替类图表达结构规则,缺少类型约束与多重性定义
  • 快照随实现变化过快,未与测试数据同步维护,很快失去参考价值
  • 只画正常态实例,缺少空值与不一致态的示例,讨论遗漏边界
  • 把对象图当作时序说明,用它描述调用顺序与并发行为

数据来源与参考

  • OMG UML 2.5.1 规范
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌