协作图(在UML 1.x中称为通信图 Collaboration Diagram)用于显示对象如何交互以执行特定用例或用例的一部分的行为。除了序列图之外,设计人员还使用协作来定义和阐明执行用例的特定事件流的对象的角色。它们是用于确定类职责和接口的主要信息来源。
什么是协作?
- 协作是指定对象和参与者的集合,其中包含连接它们的链接。他们合作执行某项任务。
- 协作定义了一组对于给定目的而言有意义的参与者和关系
- 协同工作的对象之间的协作在面向对象的系统中提供了新兴的功能
- 每个对象(责任)部分支持紧急功能
- 对象能够通过协同工作来生成(可用的)高级功能
- 对象通过彼此通信(传递消息)来协作以便一起工作
为何选择协作图?
与序列图不同,协作图显示了对象之间的关系。序列图和协作图表示类似的信息,但以不同的方式显示。
由于协作图的格式,它们更倾向于更适合分析活动(请参阅活动:用例分析)。具体而言,它们往往更适合描绘较少数量对象的简单交互。但是,如果对象和消息的数量增加,则图表变得越来越难以阅读。此外,很难显示其他描述性信息,例如时序,决策点或其他非结构化信息,这些信息可以轻松添加到序列图中的注释中。因此,以下是我们要为以下内容创建协作图的一些用例:
- 对象或角色之间的协作模型,提供用例和操作的功能
- 系统架构设计中的模型机制
- 捕获显示在协作中对象和角色之间传递的消息的交互
- 在涉及不同对象和交互的协作的用例或操作中建模替代方案
- 支持识别参与用例的对象(因此是类)
- 协作图中的每条消息都有一个序列号。
- 顶级消息编号为1.在同一调用期间发送的消息具有相同的十进制前缀,但后缀为1,2等,具体取决于它们何时发生。
协作图的符号
对象
对象由对象符号表示,该对象符号显示对象的名称及其下划线的类,用冒号分隔:
Object_name:class_name
您可以通过以下方式在协作图中使用对象:
- 协作中的每个对象都已命名并指定了其类
- 并非所有课程都需要出现
- 一个类可能有多个对象
- 可以不指定对象的类。通常,您首先使用对象创建协作图,然后再指定其类。
- 对象可以是未命名的,但如果要区分同一类的不同对象,则应该命名它们。
参与者
通常,参与者实例出现在协作图中,作为交互的调用者。如果在同一个图表中有多个actor实例,请尝试将它们保留在图表的外围。
- 每个Actor都被命名并具有角色
- 一个参与者将成为用例的发起者
链接
链接连接对象和actor,并且是关联的实例,每个链接对应于类图中的关联
链接定义如下:
- 链接是可以通过其发送消息的对象之间的关系。在协作图中,链接显示为两个对象之间的实线。
- 对象通过其与这些对象的链接与其他对象交互或导航到其他对象。
- 链接可以是关联的实例,也可以是匿名的,这意味着它的关联未指定。
- 消息流附加到链接,请参阅消息。
消息
消息是对象之间的通信,它传达信息,期望活动随之发生。在协作图中,消息显示为放置在链接附近的标记箭头。
- 消息从发送方指向接收方
- 接收方必须理解该消息
- 该关联必须可以在该方向上导航
创建协作图的步骤
- 确定指定其实现和实现的行为
- 确定执行协作功能所必需的结构元素(类角色,对象,子系统)
- 确定交互的上下文:系统,子系统,用例和操作
- 模拟这些元素之间的结构关系,以生成显示交互上下文的图表
- 考虑可能需要的替代方案
- 如果需要,绘制实例级协作图。
- (可选)绘制规范级协作图,以总结实例级序列图中的备选方案
协作图示例
稳健图 (Robusiness Diagram) 格式的协作图 (Communication Diagram)
您可以在协作图中包含对象和actor实例,以及描述它们如何相关以及它们如何交互的链接和消息。下面显示 的 回收机系统图中的接收存款项描述了参与对象中发生的事情,就对象如何通过彼此发送消息进行通信而言。您可以为用例的事件流的每个变体制作协作图。
尝试现在绘制UML协作图 |
您已经了解了协作图是什么以及如何绘制协作图。现在是时候绘制自己的协作图了。获取Visual Paradigm Community Edition,一个免费的UML软件,并使用免费的Collaboration Diagram工具创建自己的协作图。它易于使用且直观。 |
[ 免费下载 ] |