UML 协作图

17 Mar 2025 | 4 分钟阅读

协作图用于展示系统中对象之间的关系。时序图和协作图都表示相同的信息,但方式不同。协作图不显示消息的流程,而是描述系统中对象的架构,因为它基于面向对象编程。一个对象包含多个特性。系统中存在的多个对象相互连接。协作图,也称为通信图,用于描述系统中对象的架构。

协作图的符号

以下是协作图的组成部分,列举如下

  1. 对象:对象的表示方式是对象符号,其名称和类以下划线分隔,并用冒号分隔。
    在协作图中,对象的使用方式如下
    • 对象通过指定其名称和类来表示。
    • 并非每个类都必须出现。
    • 一个类可以包含多个对象。
    • 在协作图中,首先创建对象,然后指定其类。
    • 为了区分一个对象与另一个对象,必须命名它们。
  2. 参与者:在协作图中,参与者扮演着主要角色,因为它调用交互。每个参与者都有其各自的角色和名称。在此,一个参与者启动用例。
  3. 链接:链接是关联的一个实例,它将对象和参与者关联起来。它描述了对象之间通过其发送消息的关系。它由实线表示。链接帮助对象连接到或导航到另一个对象,以便消息流附加到链接。
  4. 消息:它是对象之间的通信,携带信息并包括一个序列号,以便可以进行活动。它由一个带标签的箭头表示,该箭头放置在链接附近。消息从发送者发送到接收者,并且方向必须在该特定方向上可导航。接收者必须理解该消息。
UML Collaboration Diagram

何时使用协作图?

当需要描述对象之间的关系时,会使用协作图。时序图和协作图都表示相同的信息,但表达方式完全不同。协作图最适合分析用例。

以下列出了一些用例,可以实施协作图

  1. 为了对对象或角色之间的协作进行建模,这些对象或角色执行用例和操作的功能。
  2. 为了对系统架构设计内部的机制进行建模。
  3. 为了捕获表示对象和角色之间消息流的交互。
  4. 为了对用例或操作中的不同场景进行建模,涉及多个对象和交互的协作。
  5. 为了支持识别参与用例的对象。
  6. 在协作图中,每个消息都包含一个序列号,以便将顶级消息标记为一,依此类推。在同一调用期间发送的消息用相同的十进制前缀表示,但根据它们的出现情况,后缀不同,例如1、2等。

创建协作图的步骤

  1. 确定要指定实现和实现的行为。
  2. 发现作为类角色、对象和子系统的结构元素,以执行协作的功能。
    • 选择交互的上下文:系统、子系统、用例和操作。
  3. 仔细考虑可能涉及的替代情况。
    • 如果需要,在实例级别实施协作图。
    • 可以在实例级别时序图中制作规范级别图,以总结替代情况。

协作图的示例

UML Collaboration Diagram

协作图的优点

  1. 协作图也称为通信图。
  2. 它主要强调交互图的结构方面,即生命线如何连接。
  3. 协作图的语法类似于时序图;唯一的区别是生命线不包含尾部。
  4. 通过对每个单独的消息进行编号来表示通过排序传输的消息。
  5. 与时序图相比,协作图在语义上较弱。
  6. 协作图的特殊情况是对象图。
  7. 它侧重于元素,而不是像时序图那样侧重于消息流。
  8. 由于协作图的成本不高,因此可以将时序图直接转换为协作图。
  9. 在实现与时序图相关的协作图时,可能会丢失一些信息。

协作图的缺点

  1. 系统中存在的多个对象会使协作图变得复杂,因为很难探索对象。
  2. 这是一个耗时的图表。
  3. 程序终止后,该对象将被销毁。
  4. 由于对象状态会瞬间变化,因此很难密切关注系统中对象的内部发生的每一个对象。

下一个主题UML状态机图