UML协作图

协作图是动态图的另一种表现。协作图和动态图极为相似,我先介绍一下它们的相同之处和不同之处。

相同之处

1、规定责任,两图都直观的规定了发送对象和只管对象的责任。就是发送对象和接受对象所需要干的事已经确定。
2、支持消息,支持所有类型的消息
3、衡量工具,通过两图可以直接看出两图中对象的交互的频繁程度,进而可以根据频繁程度可以确定耦合性,根据耦合性来衡量模型之间的依赖性。

两者区别

1、协作图的重点是将对象之间的交互映射到他们之间的链接上,即协作图以对象图的方式绘制各个参与对象,并将消息和链平行放置。这种方式能较时序图更加直观的显示两个对象之间的关系,据此可以验证类图中的关联或者添加新的关联。而且在时序图中有些逻辑交互就根本不可能实现。
2、时序图可以显示出一个对象的生命周期,而协作图却不可以,在协作图中对象要么存在要么不存在。
3、协作图无法清晰的描述对象的激活和去激活的情况。
4、协作图对对象间的描述不如时序图清晰。时序图可以随意添加两对象之间的信息交互和调用,而时序图添加过多就会显得杂乱。

协作图

协作图由对象、链、消息构成

1、对象

协作图中的对象和时序图中的对象类似,但是时序图无法表示对象的创建和撤销,所以对象在协作图中的位置没有限制,同时协作图的对象没有生命线和激活条。

2、链

就是连接两个对象之间的一条实线,表示对象之间的通信途径。 而其他链则是表示两对象之间的信息流向和方式。

在这里插入图片描述

3、消息

对象间通过连接发送的消息。

在这里插入图片描述
至于两个信息流如何用每个人都有不同的理解,都有参考意义。

下面事我做的操作员登陆的协作图。
在这里插入图片描述