UML - 交互图
-
简述
从术语“交互”中可以清楚地看出,该图用于描述模型中不同元素之间的某种类型的交互。这种交互是系统动态行为的一部分。此交互行为在 UML 中由两个称为“序列图”和“协作图”的关系图)表示。这两个关系图的基本用途是相似的。序列图强调消息的时间顺序,协作图强调发送和接收消息的对象的结构组织。 -
交互图的目的
交互图的目的是可视化系统的交互行为。可视化交互是一项艰巨的任务。因此,解决方案是使用不同类型的模型来捕获交互的不同方面。序列图和协作图用于捕获动态性质,但从不同的角度。交互图的目的是 --
捕获系统的动态行为。
-
描述系统中的消息流。
-
描述对象的结构组织。
-
描述对象之间的交互。
-
-
如何绘制交互图?
正如我们已经讨论过的,交互图的目的是捕获系统的动态方面。因此,为了捕捉动态方面,我们需要了解什么是动态方面以及如何可视化。动态方面可以定义为特定时刻正在运行的系统快照我们在UML中有两种类型的交互图。一个是序列图,另一个是协作图。序列图捕获从一个对象到另一个对象的消息流的时间序列,协作图描述参与消息流的系统中对象的组织。在绘制交互图之前,需要清楚地识别以下事项-
参与交互的对象。
-
消息在对象之间流动。
-
消息流动的顺序。
-
对象组织。
以下是对订单管理系统进行建模的两个交互图。第一个图是序列图,第二个是协作图序列图
序列图有四个对象(Customer, Order, SpecialOrder 和 NormalOrder)。下图显示了SpecialOrder对象的消息序列,在 NormalOrder 对象的情况下可以使用相同的消息序列。了解消息流的时间序列非常重要。消息流只不过是对象的方法调用。第一个调用是sendOrder(),它是Order对象的方法。下一个调用是confirm(),它是SpecialOrder对象的方法,最后一个调用是Dispatch(),这是SpecialOrder对象的方法。下图主要描述了从一个对象到另一个对象的方法调用,这也是系统运行时的实际情况。协作图
第二个交互图是协作图。它显示了如下图所示的对象组织。在协作图中,方法调用序列由某种编号技术指示。该数字指示如何依次调用这些方法。我们采用了相同的订单管理系统来描述协作图。方法调用类似于序列图的方法调用。但是,不同之处在于序列图不描述对象组织,而协作图显示对象组织。要在这两个关系图之间进行选择,重点在于需求的类型。如果时间序列很重要,则使用序列图。如果需要组织,则使用协作图。 -
-
在哪里使用交互图?
我们已经讨论过交互图用于描述系统的动态性质。现在,我们将研究使用这些关系图的实际方案。要了解实际应用,我们需要了解序列图和协作图的基本性质。这两个图的主要用途是相似的,因为它们用于捕获系统的动态行为。但是,具体目的比较明确和理解。序列图用于捕获从一个对象流向另一个对象的消息的顺序。协作图用于描述参与交互的对象的结构组织。单个关系图不足以描述整个系统的动态方面,因此使用一组图来捕获整个系统。当我们想要了解消息流和结构组织时,可以使用交互图。消息流是指从一个对象到另一个对象的控制流的顺序。结构组织是指系统中元素的可视组织。可以使用交互图 −-
按时间序列对控制流进行建模。
-
按结构组织对控制流进行建模。
-
用于前向工程。
-
用于逆向工程。
-