📜  UML协作图

📅  最后修改于: 2021-01-11 13:23:05             🧑  作者: Mango

UML协作图

协作图用于显示系统中对象之间的关系。序列图和协作图均表示相同的信息,但表示的信息不同。它没有显示消息流,而是描述了基于对象编程的系统中驻留的对象的体系结构。一个对象包含多个特征。系统中存在的多个对象相互连接。协作图,也称为通信图,用于描述系统中对象的体系结构。

协作图的符号

以下是下面列出的组件图的组件:

  • 对象:对象的表示由对象符号完成,其符号和类用下划线标记,并用冒号分隔。在协作图中,通过以下方式利用对象:
    • 通过指定对象的名称和类来表示该对象。
    • 并非每个类都必须出现。
    • 一类可能构成多个对象。
    • 在协作图中,首先创建对象,然后指定其类。
    • 为了区分一个对象和另一个对象,有必要对其进行命名。
  • 参与者:在协作图中,参与者在调用交互时起主要作用。每个演员都有自己的角色和名字。在这种情况下,一个参与者发起了用例。
  • 链接:链接是关联的实例,该关联将对象和参与者关联。它描绘了通过其发送消息的对象之间的关系。用实线表示。链接帮助一个对象与另一个对象连接或导航到另一个对象,以便消息流被附加到链接上。
  • 消息:这是对象之间的通信,带有信息并包含序列号,以便可以进行活动。它由标记的箭头表示,该箭头放置在链接附近。消息从发送者发送到接收者,并且该方向必须在该特定方向上可导航。接收者必须理解该消息。

何时使用协作图?

当必须描述对象之间的关系时,将使用协作。序列图和协作图都表示相同的信息,但是描述它的方式却大不相同。协作图最适合分析用例。

以下是下面列出的一些实现了协作图的用例:

  • 建模承载用例和操作功能的对象或角色之间的协作。
  • 在系统的体系结构设计中对机制进行建模。
  • 捕获表示对象与协作内部角色之间的消息流的交互。
  • 在用例或操作内建模不同的场景,涉及多个对象和交互的协作。
  • 支持识别用例中的对象。
  • 在协作图中,每个消息构成一个序列号,以便将顶级消息标记为一个,依此类推。在同一呼叫期间发送的消息用相同的十进制前缀表示,但根据出现的情况,后缀分别为1、2等。

创建协作图的步骤

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

协作图示例

协作图的好处

  • 协作图也称为通讯图。
  • 它主要强调交互图的结构方面,即生命线如何连接。
  • 协作图的语法与顺序图相似。唯一的区别是生命线不包含尾巴。
  • 通过对每个单独的消息进行编号来表示按顺序发送的消息。
  • 与顺序图相比,协作图在语义上较弱。
  • 协作图的特殊情况是对象图。
  • 它关注的是元素而不是消息流,例如顺序图。
  • 由于协作图并不昂贵,因此可以将序列图直接转换为协作图。
  • 在实现相对于时序图的协作图时,可能会丢失一些信息。

协作图的缺点

  • 驻留在系统中的多个对象可能会构成一个复杂的协作图,因为要探索这些对象变得非常困难。
  • 这是一个耗时的图表。
  • 程序终止后,对象被销毁。
  • 随着对象状态的瞬时变化,变得难以关注系统对象内部发生的每个事件。