UML - 对象图

对象图派生自类图,因此对象图依赖于类图。

对象图表示类图的实例。 类图和对象图的基本概念相似。 对象图也代表系统的静态视图,但这个静态视图是系统在特定时刻的快照。

对象图用于将一组对象及其关系呈现为实例。

对象图的用途

应该清楚地理解图表的目的,以便实际实施。 对象图的用途与类图类似。

不同之处在于,类图表示由类及其关系组成的抽象模型。 然而,对象图代表特定时刻的实例,本质上是具体的。

这意味着对象图更接近实际的系统行为。 目的是捕获系统在特定时刻的静态视图。

对象图的目的可以概括为 −

  • 正向和逆向工程。

  • 系统的对象关系

  • 交互的静态视图。

  • 从实践角度理解对象行为及其关系

如何绘制对象图?

我们已经讨论过对象图是类图的实例。 它意味着对象图由类图中使用的事物的实例组成。

因此,这两个图都是由相同的基本元素组成,但形式不同。 在类图中,元素以抽象形式表示蓝图,在对象图中,元素以具体形式表示现实世界的对象。

为了捕获特定的系统,类图的数量是有限的。 然而,如果我们考虑对象图,那么我们可以拥有无限数量的实例,这些实例本质上是唯一的。 仅考虑那些对系统有影响的实例。

从上面的讨论可以清楚地看出,单个对象图无法捕获所有必要的实例,或者更确切地说,无法指定系统的所有对象。 因此,解决方案是 −

  • 首先,分析系统并确定哪些实例具有重要数据和关联。

  • 其次,仅考虑那些将涵盖功能的实例。

  • 第三,实例数量不限,进行一些优化。

在绘制对象图之前,应记住并清楚理解以下内容 −

  • 对象图由对象组成。

  • 对象图中的链接用于连接对象。

  • 对象和链接是用于构造对象图的两个元素。

在此之后,在开始构建图表之前需要确定以下事项 −

  • 对象图应该有一个有意义的名称来表明其用途。

  • 需要确定最重要的元素。

  • 对象之间的关联应该明确。

  • 需要捕获不同元素的值以包含在对象图中。

  • 在需要更清晰的地方添加适当的注释。

下图是对象图的示例。 它代表我们在类图一章中讨论的订单管理系统。 下图是特定购买时间的系统实例。 它有以下对象。

  • 客户

  • 订单

  • 特殊订单

  • 普通订单

现在,客户对象 (C) 与三个订单对象(O1、O2 和 O3)关联。 这些顺序对象与特殊顺序和普通顺序对象(S1、S2 和 N1)相关联。 客户在考虑的特定时间有以下三个不同编号(12、32 和 40)的订单。

客户将来可以增加订单数量,在这种情况下,对象图将反映这一点。 如果观察顺序、特殊顺序和正常顺序对象,那么您会发现它们具有一些值。

对于订单,值为 12、32 和 40,这意味着对象在捕获实例时的特定时刻(此处将购买的特定时间视为时刻)具有这些值

对于订单数量为 20、30、60 的特殊订单和普通订单对象也是如此。如果考虑不同的购买时间,那么这些值也会相应变化。

考虑到上述所有要点,绘制了以下对象图

UML 对象图

在哪里使用对象图?

对象图可以被想象为正在运行的系统在特定时刻的快照。 让我们考虑一个正在运行的火车的例子

现在,如果您拍摄正在运行的火车的快照,您会发现它的静态图片具有以下内容 −

  • 正在运行的特定状态。

  • 特定数量的乘客。 如果快照是在不同时间拍摄的,则会发生变化

在这里,我们可以想象正在运行的火车的快照是一个具有上述值的对象。 对于任何现实生活中的简单或复杂系统都是如此。

简而言之,可以说对象图用于 −

  • 制作系统原型。

  • 逆向工程。

  • 对复杂数据结构进行建模。

  • 从实践角度理解系统。