UML - 交互图
从术语"交互"来看,很明显该图用于描述模型中不同元素之间的某种类型的交互。 这种交互是系统动态行为的一部分。
这种交互行为在 UML 中由两个图表示,即序列图和协作图。 这两个图的基本目的是相似的。
顺序图强调消息的时间顺序,协作图强调发送和接收消息的对象的结构组织。
交互图的目的
交互图的目的是可视化系统的交互行为。 可视化交互是一项艰巨的任务。 因此,解决方案是使用不同类型的模型来捕获交互的不同方面。
序列图和协作图用于从不同的角度捕捉动态本质。
交互图的目的是 −
捕获系统的动态行为。
描述系统中的消息流。
描述对象的结构组织。
描述对象之间的交互。
如何绘制交互图?
正如我们已经讨论过的,交互图的目的是捕捉系统的动态方面。 因此,为了捕捉动态方面,我们需要了解什么是动态方面以及它是如何可视化的。 动态方面可以定义为运行系统在特定时刻的快照
我们在 UML 中有两种类型的交互图。 一种是顺序图,另一种是协作图。 序列图捕获消息流从一个对象到另一个对象的时间顺序,协作图描述系统中参与消息流的对象的组织。
在绘制交互图之前需要明确以下几点
参与交互的对象。
消息在对象之间流动。
消息流动的顺序。
对象组织。
下面是两个对订单管理系统进行建模的交互图。 第一个图是顺序图,第二个图是协作图
序列图
序列图有四个对象(Customer、Order、SpecialOrder 和 NormalOrder)。
下图显示了 SpecialOrder 对象的消息序列,并且可以在 NormalOrder 对象的情况下使用相同的消息序列。 了解消息流的时间顺序非常重要。 消息流只不过是对象的方法调用。
第一个调用是sendOrder (),它是Order对象的一个方法。下一个调用是 confirm (),它是 SpecialOrder 对象的方法,最后一个调用是 Dispatch (),它是 SpecialOrder 对象的方法。下图主要描述了一个对象到另一个对象的方法调用,这也是系统运行时的实际场景。

协作图
第二个交互图是协作图。 它显示了对象组织,如下图所示。 在协作图中,方法调用顺序由某种编号技术指示。 数字表示方法是如何依次调用的。 我们采用相同的订单管理系统来描述协作图。
方法调用与序列图类似。 但是,不同之处在于序列图不描述对象组织,而协作图显示对象组织。
要在这两个图表之间进行选择,重点在于需求的类型。 如果时间顺序很重要,则使用顺序图。 如果需要组织,则使用协作图。

在哪里使用交互图?
我们已经讨论过交互图用于描述系统的动态性质。 现在,我们将研究使用这些图的实际场景。 要了解实际应用,我们需要了解基本性质 序列和协作图。
这两个图的主要目的相似,因为它们都用于捕获系统的动态行为。 不过,具体目的还是要弄清楚和理解才更重要。
序列图用于捕获消息从一个对象流向另一个对象的顺序。 协作图用于描述参与交互的对象的结构组织。 单个图表不足以描述整个系统的动态方面,因此使用一组图表来捕获整个系统。
当我们想要了解消息流和结构组织时,可以使用交互图。 消息流是指从一个对象到另一个对象的控制流序列。 结构组织是指系统中元素的视觉组织。
可以使用交互图 −
按时间顺序对控制流进行建模。
对结构组织的控制流程进行建模。
用于正向工程。
用于逆向工程。