概述:
对象图都来源于类图,依赖类图对象图。
对象图表示一个类图的一个实例。类图和对象图的基本概念是相似的。对象图也代表了一个系统的静态视图,但这种静态视图是系统在某一时刻的一个快照。
对象图是用于呈现一组对象和它们之间的关系作为一个实例。
目的:
图的目的应该清楚地理解去实现它。对象图的目的与类图类似。
不同的是,一个类图代表一个抽象的模型,包括类和它们之间的关系。但是,对象图表示在某一时刻,这在本质上是具体的实例。
这意味着对象图是更接近实际的系统行为。目的是在一个特定的时刻捕捉到静态的系统视图。
因此,对象图的目的可概括为:
-
正向和逆向工程。
-
一个系统的对象间的关系
-
一个交互的静态视图。
-
了解对象的行为和他们的关系从实用的角度来看
如何绘制对象图?
我们已经讨论过的一个对象图是类图的一个实例。它意味着一个对象图包含在类图中所用的东西的实例。
因此,这两个图均采用相同的基本元素,但在不同的形式。在类图中的元素是抽象的形式来表示蓝图,并在对象图中元素的具体形式来表示真实世界中的对象。
为了捕捉一个特定的系统,类图的数量是有限的。但是,如果我们考虑对象图,那么我们就可以有无限数量的实例在本质上是独一无二的。因此,只有这些情况下被认为是对系统的影响。
从上面的讨论,很显然,一个单一的对象图不能捕获所有必要的实例,而不能指定一个系统的所有对象。因此,解决方案是:
-
首先,分析系统,并决定哪些情况下有重要的数据和关联。
-
其次,只考虑那些实例将涵盖功能。
-
第三,做一些优化实例的数量是无限的。
绘制对象图之前,应该记住以下事情,并清楚地理解:
-
对象图是由对象。
-
对象图中的链接是用来连接对象。
-
对象和链接的两个要素,用于构造一个对象图。
在开始构建图前,现在来决定下列事项:
-
对象图应该有一个有意义的名称,以表明其目的。
-
最重要的要素是要确定。
-
对象之间的关联,应该予以明确。
-
不同元素的值需要捕获包含在对象图。
-
添加适当的注释,需要更清晰点。
下面的图是一个对象图的一个例子。它代表了订单管理系统,我们已经讨论了在类图。下图是该系统的一个实例,在一个特定的时间购买。它具有以下的对象
-
顾客
-
订单
-
特殊订单
-
一般订单
现在客户对象(C)是与三阶对象(O1,O2和O3)。这些订单对象相关联的特殊订单和一般订单对象(S1,S2和N1)。顾客具有以下三个具有不同数目的订单(12,32和40),用于所考虑的特定的时间。
现在,客户可以在将来增加的订单数量,在这种情况下对象图将反映。如果订单、特殊订单和正常秩订单对象那么观察会发现,他们有一些值。
订单的值是12,32和40,这意味着,这些对象都拥有这些实例时,捕获特定时刻的值(这里是购买时的时刻被视为特定时间)。
相同特别订订单和正常订单对象所具有的订单数分别为20,30和60。如果被认为是一个不同的时间购买,那么这些值将发生相应的变化。
因此,下面的对象图已经绘就考虑到所有上述提到的几点:
在哪里使用对象图?
对象图可以被想象成正在运行的系统在某一时刻的快照。现在加以阐明,我们可以举一个例子,一个正在运行的列车。
现在,如果把一个单元列车运行,那么会发现它具有以下静态图片:
-
这是一个特别的状态运行
-
一个特定的乘客数量。如果捕捉在不同的时间,这将在不断改变。
所以,在这里我们可以想像的列车运行的管理单元是一个对象,具有上述值。任何现实生活中的简单或复杂的系统而且的确如此。在一个简短的,对象图用于:
-
使一个系统的原型。
-
逆向工程。
-
造型复杂的数据结构。
-
从实用的角度了解系统。