UML 对象图
对象图衍生自类图,因此对象图依赖于类图。
对象图表示类图的实例。基本概念对类图和对象图是相似的。对象图也表示系统的静态视图,但是这个静态视图是系统在某个特定时刻的快照。
对象图用于将一组对象及其关系表示为一个实例。
对象图的目的
应清楚地了解图表的目的以实际实施它。对象图的目的与类图相似。
不同之处在于类图表示由类和它们的关系构成的抽象模型。然而,对象图表示一个具体的实例,该实例在特定时刻是具体的。
这意味着对象图更接近实际系统的行为。其目的是捕捉系统在一个特定时刻的静态视图。
对象图的目的可以总结如下−
- 正向和逆向工程。
-
系统的对象关系
-
交互的静态视图。
-
从实际角度理解对象行为及其关系
如何绘制对象图
我们已经讨论过,对象图是类图的实例。这意味着对象图由类图中使用的东西的实例组成。
所以,这两个图表由相同的基本元素组成,但形式不同。在类图中,元素以抽象形式表示以表示蓝图,在对象图中,元素以具体形式表示以表示实际世界对象。
为了捕捉一个特定的系统,类图的数量是有限的。然而,如果考虑对象图,我们可以有无限数量的唯一实例。只考虑对系统有影响的实例。
从上面的讨论中,可以清楚地看出,单个对象图无法捕获所有必要的实例,或者更准确地说,无法指定系统的所有对象。因此,解决方案是−
- 首先,分析系统并确定哪些实例具有重要数据和关联。
-
其次,只考虑那些将覆盖功能的实例。
-
第三,进行一些优化,因为实例数量是无限的。
在绘制对象图之前,应记住并清楚地理解以下事项−
- 对象图由对象组成。
-
对象图中的连接用于连接对象。
-
对象和连接是构建对象图的两个元素。
在开始构建图表之前,还需要决定以下事项−
- 对象图应有一个有意义的名称来表示其目的。
-
应该识别出最重要的元素。
-
应明确对象之间的关联。
-
需要捕捉不同元素的值以在对象图中包含。
-
在需要更清晰的地方添加适当的注释。
以下图示是一个对象图的例子。它代表了我们在类图章节中讨论过的订单管理系统。以下图示是一个系统在特定购买时间的实例。它有以下对象。
- Customer(客户)
-
Order(订单)
-
SpecialOrder(特殊订单)
-
NormalOrder(普通订单)
客户对象(C)与三个订单对象(O1、O2和O3)相关联。这些订单对象与特殊订单和普通订单对象(S1、S2和N1)相关联。客户有以下三个订单,其订单号不同(12、32和40),这是在考虑的特定时间内。
客户未来可以增加订单数量,在这种情况下,对象图将反映出这一点。如果观察订单、特殊订单和普通订单对象,你会发现它们有一些值。
对于订单,值分别为12、32和40,这意味着在捕捉实例的特定时间(这里是购买时刻)时,对象具有这些值。
特殊订单和普通订单对象同样如此,它们的订单数分别为20、30和60。如果考虑不同的购买时间,这些值将相应变化。
以下对象图考虑了上述所有要点。
在哪里使用对象图
对象图可以被想象为系统在特定时刻的运行快照。让我们以一个运行的火车为例。
现在,如果你拍下运行的火车的照片,那么你会得到一张静态的火车图片,具有以下特点:
- 一个特定的运行状态。
-
一个特定数量的乘客,如果在不同的时间拍照,人数将发生变化。
在这里,我们可以将运行的火车的照片视为具有上述值的对象。这也适用于任何现实生活中的简单或复杂系统。
简而言之,可以说对象图用于:
-
制作系统的原型。
-
逆向工程。
-
建模复杂的数据结构。
-
从实践的角度理解系统。