本文概述
协作图用于显示系统中对象之间的关系。序列图和协作图均表示相同的信息, 但表示的信息不同。它没有显示消息流, 而是描述了基于对象编程的系统中驻留的对象的体系结构。一个对象包含多个特征。系统中存在的多个对象相互连接。协作图, 也称为通信图, 用于描述系统中对象的体系结构。
协作图的符号
以下是下面列出的组件图的组件:
对象:对象的表示由对象符号完成, 其符号和类用下划线标记, 并用冒号分隔。
在协作图中, 通过以下方式利用对象:
- 通过指定对象的名称和类来表示该对象。
- 并非每个类都必须出现。
- 一类可能构成多个对象。
- 在协作图中, 首先创建对象, 然后指定其类。
- 为了区分一个对象和另一个对象, 有必要对其进行命名。
参与者:在协作图中, 参与者在调用交互时起主要作用。每个演员都有自己的角色和名字。在这种情况下, 一个参与者发起用例。
链接:链接是关联的实例, 该关联将对象和参与者关联。它描绘了通过其发送消息的对象之间的关系。用实线表示。链接帮助一个对象与另一个对象连接或导航到另一个对象, 以便消息流被附加到链接上。
消息:这是对象之间的通信, 带有信息并包含序列号, 因此可以进行活动。它由标记的箭头表示, 该箭头放置在链接附近。消息从发送方发送到接收方, 并且该方向必须在该特定方向上可导航。接收者必须理解该消息。
何时使用协作图?
当必须描述对象之间的关系时, 使用协作。序列图和协作图都表示相同的信息, 但是描述它的方式却大不相同。协作图最适合分析用例。
以下是下面列出的一些实现了协作图的用例:
- 在承载用例和操作功能的对象或角色之间进行协作建模。
- 在系统的体系结构设计中对机制进行建模。
- 捕获表示对象与协作内部角色之间的消息流的交互。
- 在用例或操作中对不同场景进行建模, 涉及多个对象和交互的协作。
- 支持标识用例中的对象。
- 在协作图中, 每个消息构成一个序列号, 以便将顶级消息标记为一个, 依此类推。在同一呼叫期间发送的消息用相同的十进制前缀表示, 但根据它们的出现使用不同的后缀1、2等。
创建协作图的步骤
- 确定为其指定实现和实现的行为。
- 发现构成类角色, 对象和子系统的结构元素, 以执行协作功能。
- 选择交互的上下文:系统, 子系统, 用例和操作。
- 考虑可能涉及的替代情况。
- 如果需要, 在实例级别实现协作图。
- 可以在实例级别序列图中制作规格级别图, 以汇总替代情况。
协作图示例
协作图的好处
- 协作图也称为通讯图。
- 它主要强调交互图的结构方面, 即生命线如何连接。
- 协作图的语法与顺序图相似。唯一的区别是生命线不包含尾巴。
- 通过对每个单独的消息进行编号来表示按顺序发送的消息。
- 与顺序图相比, 协作图在语义上较弱。
- 协作图的特殊情况是对象图。
- 它专注于元素, 而不是消息流, 如顺序图。
- 由于协作图并不昂贵, 因此可以将序列图直接转换为协作图。
- 在实现相对于时序图的协作图时, 可能会丢失一些信息。
协作图的缺点
- 驻留在系统中的多个对象可能会构成一个复杂的协作图, 因为要探索这些对象变得非常困难。
- 这是一个耗时的图表。
- 程序终止后, 对象被销毁。
- 随着对象状态的瞬时变化, 变得难以关注系统对象内部发生的每个事件。
评论前必须登录!
注册