UML - 交互图

  • 简述

    从术语“交互”中可以清楚地看出,该图用于描述模型中不同元素之间的某种类型的交互。这种交互是系统动态行为的一部分。
    此交互行为在 UML 中由两个称为“序列图”和“协作图”的关系图)表示。这两个关系图的基本用途是相似的。
    序列图强调消息的时间顺序,协作图强调发送和接收消息的对象的结构组织。
  • 交互图的目的

    交互图的目的是可视化系统的交互行为。可视化交互是一项艰巨的任务。因此,解决方案是使用不同类型的模型来捕获交互的不同方面。
    序列图和协作图用于捕获动态性质,但从不同的角度。
    交互图的目的是 -
    • 捕获系统的动态行为。
    • 描述系统中的消息流。
    • 描述对象的结构组织。
    • 描述对象之间的交互。
  • 如何绘制交互图?

    正如我们已经讨论过的,交互图的目的是捕获系统的动态方面。因此,为了捕捉动态方面,我们需要了解什么是动态方面以及如何可视化。动态方面可以定义为特定时刻正在运行的系统快照
    我们在UML中有两种类型的交互图。一个是序列图,另一个是协作图。序列图捕获从一个对象到另一个对象的消息流的时间序列,协作图描述参与消息流的系统中对象的组织。
    在绘制交互图之前,需要清楚地识别以下事项
    • 参与交互的对象。
    • 消息在对象之间流动。
    • 消息流动的顺序。
    • 对象组织。
    以下是对订单管理系统进行建模的两个交互图。第一个图是序列图,第二个是协作图

    序列图

    序列图有四个对象(Customer, Order, SpecialOrder 和 NormalOrder)。
    下图显示了SpecialOrder对象的消息序列,在 NormalOrder 对象的情况下可以使用相同的消息序列。了解消息流的时间序列非常重要。消息流只不过是对象的方法调用。
    第一个调用是sendOrder(),它是Order对象的方法。下一个调用是confirm(),它是SpecialOrder对象的方法,最后一个调用是Dispatch(),这是SpecialOrder对象的方法。下图主要描述了从一个对象到另一个对象的方法调用,这也是系统运行时的实际情况。
    UML 序列图

    协作图

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

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