UML 交互图
从“交互”一词可以看出,该图用于描述模型中不同元素之间的某种交互。这种交互是系统的动态行为的一部分。
UML中用两个图表来表示这种交互行为,分别是 序列图 和 合作图 。这两个图表的基本目的是相似的。
序列图强调消息的时间顺序,而合作图则强调发送和接收消息的对象的结构组织。
交互图的目的
交互图的目的是可视化系统的交互行为。可视化交互是一项困难的任务。因此,解决方案是使用不同类型的模型来捕捉交互的不同方面。
序列图和合作图用于捕捉动态特性,但从不同的角度来看。
交互图的目的是:
- 捕捉系统的动态行为。
-
描述系统中的消息流动。
-
描述对象的结构组织。
-
描述对象之间的交互。
如何绘制交互图
如前所述,交互图的目的是捕捉系统的动态方面。因此,为了捕捉动态方面,我们需要了解什么是动态方面以及如何可视化它。动态方面可以定义为系统在特定时刻的运行状态的快照。
我们在UML中有两种类型的交互图。一种是序列图,另一种是合作图。序列图捕捉消息从一个对象到另一个对象的时间顺序流动,而合作图描述参与消息流动的系统中对象的组织。
在绘制交互图之前,需要明确以下几点:
- 参与交互的对象。
-
对象之间的消息流动。
-
消息流动的顺序。
-
对象的组织。
下面是两个建模订单管理系统的交互图。第一个图表是序列图,第二个图表是合作图。
序列图
序列图有四个对象(Customer、Order、SpecialOrder和NormalOrder)。
以下图表显示了SpecialOrder对象的消息顺序,NormalOrder对象也可以用同样的方式。了解消息流的时间顺序非常重要。消息流仅仅是对象方法的调用。
第一个调用是Order对象的sendOrder()方法。接下来是SpecialOrder对象的confirm()方法,最后是SpecialOrder对象的Dispatch()方法。以下图表主要描述了对象之间的方法调用,这也是系统运行时的实际场景。
协作图
第二个交互图是协作图。它显示了对象组织,如下图所示。在协作图中,使用某种编号技术来表示方法调用序列。编号表示方法按顺序调用的方式。我们选择了相同的订单管理系统来描述协作图。
方法调用与序列图类似。然而,不同之处在于序列图不描述对象组织,而协作图显示对象组织。
选择这两个图之间的差异是根据需求的类型来决定的。如果时间顺序很重要,则使用序列图。如果需要组织结构,则使用协作图。
在哪里使用交互图表
我们已经讨论过交互图表用于描述系统的动态性质。现在,我们将深入了解这些图表在实际场景中的应用。为了理解其实际应用,我们需要了解序列图和协作图的基本性质。
这两种图表的主要目的是相似的,都用于捕捉系统的动态行为。然而,特定目的更重要,需要明确和理解。
序列图用于捕捉消息从一个对象流向另一个对象的顺序。协作图用于描述参与交互的对象的结构组织。一张图表无法完全描述整个系统的动态方面,因此使用一组图表来捕捉整体。
当我们想要理解消息流动和结构组织时,可以使用交互图表。消息流动意味着从一个对象到另一个对象的控制流的顺序。结构组织意味着系统中元素的可视组织。
交互图表可用于以下情况:
-
模拟按时间顺序控制流动。
-
模拟按结构组织控制流动。
-
用于正向工程。
-
用于反向工程。