简介
对象图和类图的基本概念是类似的,可以看作类图在系统某一时刻的镜像,显示了该时刻系统中参与交互的各个对象以及它们之间的关系。
对象图的元素包括对象、链接、包,元素之间的关系和类图相似。
对象图建模步骤
- 参照相应的类图确定参与交互的各个对象,通常类在"class", "new", "extends", "implements" 等关键字后,对象名在类名后
- 确定类之间的关系,如依赖、泛化、关联、聚合、组合、实现等
- 参考交互图中某个特定时刻各个对象的状态,使用对象图为这些对象建模
- 根据建模目标绘制各个对象的关键状态,以及关键对象之间的连接关系
对象图的元素
对象图中的元素包括对象、链接、包。
- 对象
对象是类的实例,对象图中的对象由两栏组成,即对象名和属性,无操作。
- 对象名:实例的名称,表示方法为对象名:类名[状态]
- 对象名:是个字符串,必须加上下划线(和类名一起使用时需要加上下划线以示区分)
- 类名:可选,如果包含了类名则必须加上":"
- 状态:由“[]“括起、逗号分隔开,表示该对象的状态
- 属性:对象是一个类实例化的事物,所以其每个属性都有固定的值,通常会在属性栏列出关键属性名及相应具体值
对象有三种不同的表示方式:
- 对象名:类名 # 对象名在前,类名在后,中间用”:“连接,对象名和类名都加下划线
- :类名 # 匿名对象的表示方法,用于尚未给对象取名的情况
- 对象名 # 省略掉类名
- 链接
链接是两个或多个对象之间的连接关系,分为单向链接和双向链接
- 单向链接
- 双向链接
- 包
UML中的包直接对应java中的包,用来表示层次和组织内容。
对象图的关系
对象图中元素之间的关系跟类图相似,可参考 Python设计模式 - UML - 类图(Class Diagram) 中类图的关系部分
对象图示例
以公司架构为例应用对象图:
对象图与类图的区别
- 分栏个数:对象图两个分栏;类图三个分栏
- 名称格式:对象名称带下划线;类名称不带下划线
- 是否包含操作:对象图标中不包含操作;类图标中包含操作
- 作用范围:对象图标表示单一实例;类图标代表该类的所有实例
- 连接关系:对象之间的连接关系为相互独立的链接;类之间的关系为依赖、关联、泛化
对象图注意事项
- 通常单个类的对象可能有很多个,所以我们需要确定出哪些对象对系统具有重大影响
- 重要对象本身可能具有多个功能,所以需要确定出其中的主要功能
- 对象图中的元素名词务必直观、清晰、一目了然
- 如果同一个类有两个或两个以上的重要对象时注意捕获不同对象各自的属性值
- 添加适当的注释作为补充说明