1、概述
通信图(Communication Diagram),也叫协作图(Collaboration Diagram),描述了对象与对象之间的协作/合作关系,侧重说明对象的消息传递,强调发送和接收消息的对象之间的组织结构。通信图的建模结果用于获取对象的职责和接口。
通信图中,对象通常是命名或匿名的类实例,也可以代表其他事物的实例。通信图描述了系统的动态情况,通过对象之间的消息传递来反映具体使用语境,使复杂的程序逻辑更容易理解。=
2、通信图元素
通信图由三部分组成:对象(Object),链(Link) 和消息(Message)。
2.1 对象
对象,即类的实例,是为了共同完成某个目标的群体,通信图中主要描述在完成目标过程中,对象所参与的那部分活动。通信图中的对象与顺序图中的对象一样,使用人形图案或矩形来表示,如下图,其中a表示实例名,A表示类名。
2.2 链(对象关联)
在通信图中,链由一个或多个相连的线(直线或弧线)形成,链的两端是消息发送者和消息接收者,并且消息发送者与消息接收者可以是一样的。
对象之间的箭头方向表明对象之间交换信息流,一个对象发出消息,箭头指向对象接收消息。链用于实现消息的传输。
与类的关系不同,通信图中的链是临时关联,只在本次交互中存在,而类的关联是永久的。
2.3 消息
通信图是通过一系列的消息来描述系统的动态行为。消息可以分为四种类型:
- 简单消息:指示消息类型未知或不重要的消息,可默认都使用简单消息替代。
- 同步消息:表示前一个消息处理完成后才能处理下一个消息。
- 异步消息:表示处理流不需要等到消息完成或传递反馈后才继续执行。
- 反身消息:对象自身内部的消息处理。
3、通信图与顺序图差异
3.1 相同点
- 具备相似的责任主体
- 都是通过消息驱动
- 具有顺序性
3.2 不同点
- 通信图中,对象无法创建和撤销,位置没有限制。
- 通讯图图展示对象间的关系使得更适用于获得对象结构的理解,顺序图则更适合获取调用过程的理解。
- 顺序图强调的是时间顺序,通信图强调的是空间的顺序。
通信图与顺序图的对比
通信图与顺序图的共同点主要有如下3点:
1)主要元素相同。两种图中的主要元素都是对象与消息,且都支持所有的消息类型。
2)表达语义相同。两种图都是对系统中的交互建模,描述了系统中某个用例或操作的执行过程,二者的语义是等价的。
3)对象责任相同。两种图中的对象都担任了发送者与接收者的角色并承担了发送与接收消息的责任。通过对象之间消息的传递来实现系统的功能。
两种图之间的不同点也有如下3点:
1)通信图偏重于将对象的交互映射到连接它们的链上,这有助于验证类图中对应的类之间关联关系的正确性或建立新的关联关系的必要性。然而顺序图偏重描述交互中消息传递的逻辑顺序。因此通信图更适用于展示系统中的对象结构,而顺序图则擅长表现交互中消息的顺序。
2)顺序图可以显式地表现出对象创建与撤销的过程,而在通信图中,只能通过消息的描述隐式地表现这一点。
3)顺序图还可以表示对象的激活情况,而对于通信图来说,由于缺少表示时间的信息,除了对消息进行解释,无法清晰地表示对象的激活情况。
相同点:
-
表达语义相同。
两种图都属于交互图,用于描述系统中某个用例或操作的执行过程中对象之间的交互,二者的语义是等价的。 -
对象责任相同。
两种图中的对象都担任了发送者与接收者的角色,并承担了发送与接收消息的责任。
不同点:
-
顺序图描述了对象交互的时间顺序,明确表现了对象的激活期和生存期,
但没有直观
表达对象之间的关系。 -
通信图描述了对象在交互中承担的角色,
但无法表现
对象的激活期和生存期;
对象在交互中的时间顺序不够直观
,必须从消息的编号获得。
(通信图编号必须有,不能省略)
顺序图
通讯图
通信图
顺序图
通信图
顺序图和通信图是可以相互转换的。
4、实例
4.1。数据库登录
4.1.1 数据库登录顺序图
4.1.2 数据库登录通信图
4.2 赤壁之战
4.2.1 赤壁之战顺序图
4.2.2 赤壁之战通信图