UML – 交互图
从术语Interaction可以看出,该图是用来描述模型中不同元素之间的某种类型的交互。这种交互是系统的动态行为的一部分。
这种交互行为在UML中由两个图表示,即 顺序图 和 协作图。 这两种图的基本目的是相似的。
序列图强调的是消息的时间顺序,而协作图强调的是发送和接收消息的对象的结构组织。
交互图的目的
交互图的目的是为了使系统的交互行为可视化。将交互行为可视化是一项困难的任务。因此,解决方案是使用不同类型的模型来捕捉交互的不同方面。
顺序图和协作图被用来捕捉动态性质,但从不同的角度。
交互图的目的是
- 捕捉一个系统的动态行为。
-
描述系统中的信息流。
-
描述对象的结构组织。
-
描述对象之间的互动。
如何绘制交互图
正如我们已经讨论过的,交互图的目的是为了捕捉一个系统的动态方面。因此,为了捕捉动态方面,我们需要了解什么是动态方面以及如何将其可视化。动态方面可以被定义为运行中的系统在某一特定时刻的快照
在UML中我们有两种类型的交互图。一个是序列图,另一个是协作图。序列图捕捉了从一个对象到另一个对象的信息流的时间序列,协作图描述了系统中参与信息流的对象的组织。
在绘制交互图之前,需要清楚地确定以下事项
- 参与交互的对象。
-
对象之间的信息流。
-
消息流动的顺序。
-
对象的组织。
下面是两个为订单管理系统建模的交互图。第一个图是一个序列图,第二个是一个协作图。
顺序图
顺序图有四个对象(客户、订单、特殊订单和正常订单)。
下图显示了 SpecialOrder 对象的消息顺序,同样的方法也可以用于 NormalOrder 对象。了解消息流的时间顺序是很重要的。消息流只不过是一个对象的方法调用。
第一个调用是 sendOrder() ,这是 Order对象 的一个方法 。 下一个调用是 确认() ,这是 SpecialOrder 对象的一个方法,最后一个调用是 Dispatch() ,这是 SpecialOrder 对象的一个方法。下图主要描述了从一个对象到另一个对象的方法调用,这也是系统运行时的实际情况。
协作图
第二个交互图是协作图。它显示了如下图所示的对象组织。在协作图中,方法的调用顺序由一些编号技术来表示。数字表示方法是如何被一个接一个地调用的。我们采取了相同的订单管理系统来描述协作图。
方法的调用与顺序图的调用类似。然而,不同的是,序列图没有描述对象的组织,而协作图则显示了对象的组织。
要在这两种图之间进行选择,重点在于需求的类型。如果时间顺序是重要的,那么就使用顺序图。如果组织是需要的,那么就使用协作图。
在哪里使用交互图
我们已经讨论过,交互图是用来描述系统的动态性质的。现在,我们将研究这些图被使用的实际情况。为了理解实际应用,我们需要理解序列图和协作图的基本性质。
这两种图的主要目的是相似的,因为它们都是用来捕捉系统的动态行为。然而,具体的目的更需要澄清和理解。
顺序图是用来捕捉从一个对象流向另一个对象的消息的顺序。协作图用于描述参加交互的对象的结构组织。一个单一的图不足以描述整个系统的动态方面,所以要用一组图来捕捉它的整体。
当我们想了解信息流和结构组织时,就会用到交互图。消息流是指从一个对象到另一个对象的控制流序列。结构组织是指系统中各元素的可视化组织。
交互图可以用来 —
-
通过时间序列对控制流进行建模。
-
通过结构组织来模拟控制流。
-
用于正向工程。
-
用于反向工程。