概述:
在统一建模语言(UML) 中,对象图侧重于某些特定的对象和属性值,以及这些实例之间的链接。一组相关的对象图提供了对系统的任意视图如何随时间演变的洞察。
在早期的 UML 规范中,对象图被描述为:"对象图是实例图,包括对象和数据值。静态对象图是类图的实例;它显示了系统在某个时间点的详细状态的快照。对象图的使用是相当有限的,即展示数据结构的例子。”
最新的 UML 2.5 规范没有明确定义对象图但提供了分类器实例的表示法。
对象图和类图密切相关并且使用几乎相同的符号,两个图都是为了可视化系统的静态结构。类图显示类,而对象图显示类(对象)的实例。对象图比类图更具体。它们通常用于提供示例或充当类图的测试用例。对象图中通常只显示当前对模型感兴趣的方面。
由于类图与对象图较为类似,又有区别,因此通过一个订购系统的示例来进一步说明。
- 首先,订单和客户被确定为系统的两个要素。他们之间存在一对多的关系,因为客户可以拥有多个订单。
- Order类是一个抽象类,它有两个具体的类(继承关系)SpecialOrder和NormalOrder。
- 这两个继承的类具有Order类的所有属性。此外,它们还具有dispatch()和receive()等附加功能。
考虑到上述所有要点,绘制了以下类图。
下图是特定购买时系统的实例。它具有以下对象。
- 顾客
- 订单
- 特殊订单
- 正常订单
现在,客户对象(C)与三个订单对象(O1,O2和O3)相关联。这些订单对象与特殊订单和正常订单对象(S1,S2和N1)相关联。对于所考虑的特定时间,客户具有以下三个具有不同数量(12,32和40)的订单。
客户可以在将来增加订单数量,在这种情况下,对象图将反映出这一点。如果观察到订单,特殊订单和正常订单对象,那么您会发现它们具有一些值。
对于订单,值为12,32和40,这意味着当捕获实例时,对象具有特定时刻的这些值(此处是购买时的特定时间被视为时刻)
对于具有20,30和60的订单数量的特殊订单和正常订单对象也是如此。如果考虑购买的不同时间,则这些值将相应地改变。
考虑到上述所有要点,绘制了以下对象图
接下来,我们认真思考一个问题:在哪里使用对象图?
首先,必须记住上述提到,将对象图设想为特定时刻正在运行的系统快照。
你可以想象一辆正在运行中的列车,其中包含以下内容:
- 正在运行的特定状态;
- 特定数量的乘客。
如果在不同的时间拍摄快照,那么将会改变上述值的对象。
总结:对象图可以应用于:
- 制作系统的原型;
- 逆向工程;
- 建模复杂的数据结构;
- 从实践角度理解系统。
- 从实践角度理解系统。