1、通信图(Communication Diagram),在 UML 1.x 版本中被称为协作图,它强调交互的各个对象之间的结构关系以及它们之间传递的消息。
2、强调对象结构关系,适合展示模块拓扑。
3、通信图(原名协作图,Collaboration Diagram)是UML交互图的一种,用于描述对象之间的结构关系和消息传递。与序列图不同,它更强调对象间的拓扑连接,而非严格的时间顺序。
4、通信图,在 UML 2.0 之前被称为协作图,是一种交互图,
5、通信图展示了对象之间为了完成某个特定目标或操作而进行的消息传递和交互。它着重强调参与交互的对象之间的结构关系(即链接)以及它们在链接上传递的消息。
6、通信图展示了一组对象为了完成某个特定任务而进行的联接,以及它们之间传递的消息。
7、通信图解决问题:
(1)哪些对象参与了交互?
(2)对象之间是如何连接的?(关联关系)
(3)它们以什么顺序发送了什么消息?
1、表示参与交互的对象或角色。
2、格式为 对象名:类名(如 order:Order),冒号可省略。
3、使用矩形表示
4、 例如::Customer, order:Order, aServer:Server
5、通信图中交互的主体

对象示例1

对象示例2

对象示例3
1、表示对象之间的连接或关联,是消息能够传递的通道。
2、表示对象间的关联关系(可复用类图中的关联)。
3、表示法:对象之间的一条实线。
4、链接通常源自类图中类之间的关联关系。

链接示例1

调用自身属性链接示例
1、表示一个对象通过链接向另一个对象发送的请求、调用或信号。
2、表示法:一条带箭头的实线,旁边附上消息表达式。
3、对象之间的交互行为(如调用方法、传递数据、触发事件等),是通信图的核心内容,体现了协作的具体过程。
4、表示形式:在连接的上方用带箭头的线段标注,箭头从发送对象指向接收对象,线段上需注明消息名称(可包含参数和返回值)。
5.、消息类型:
(1)同步消息:发送对象必须等待接收对象处理完毕后才能继续执行(如调用方法并等待返回),用实心箭头表示。
(2)异步消息:发送对象无需等待接收对象处理,可直接继续执行(如发送事件通知),用空心箭头表示。
(3)返回消息:接收对象处理完同步消息后,向发送对象返回结果,用带箭头的虚线表示。
(4)反身消息:对象自身内部的消息处理。

消息类型示例
6、消息表达式的格式:[序号] 返回值 := 消息名(参数)
(1)返回值和参数是可选的。
(2)序号是通信图的“生命线”,它表达了顺序和嵌套关系。

消息示例
1、序号是通信图的“生命线”,它表达了顺序和嵌套关系。
2、数字或层级编号
3、表示消息的执行顺序(如 1、1.1、1.2)。
4、序号:至关重要!它指明了消息发生的顺序。序号通常采用嵌套的编号方案(如 1, 1.1, 1.2, 2, 2.1, 2.2.1)。
5、序号说明:
(1)1:第一个消息。
(2)2:第二个消息,与 1 是顺序关系,但可能是由不同对象发出的。
(3)1.1:消息 1 触发后,接收消息的对象所执行的第一个操作。
(4)1.2:消息 1 触发后,接收消息的对象所执行的第二个操作。
(5)3.1.1:表示三层嵌套的调用关系。

序号示例
1、确定交互上下文:明确要描述的是哪个用例或操作。
2、识别参与对象:找出所有参与该交互的对象,并将它们放置在图中。
3、建立对象链接:根据对象之间的关系(关联、依赖等),用实线将它们连接起来。确保消息传递的路径是通畅的。
4、添加消息:
(1)从触发整个交互的第一条消息开始(序号为 1)。
(2)沿着链接添加消息,并使用箭头指示方向。
(3)使用嵌套序号来表现消息的嵌套(同步调用)和并发关系。
5、迭代优化:调整对象布局,使图表结构清晰,易于阅读。
1、分析对象之间的链接和关联。 2、在早期设计阶段,当对象结构比交互顺序更重要时。
3、作为序列图的补充,从另一个角度描述相同的交互。

通信图与序列图比较区别表

示例1

示例2

学生借书通信图示例3