1. 说明
- 1.通信图强调收发消息的对象的结构组织
- 2.早期版本叫做协作图
- 3.通信图强调参加交互的对象和组织
- 4.首先将参加交互的对象作为图的顶点,然后把连接这些对象的链表示为图的弧,最后用对象发送和接收的消息来修饰这些链
- 5.这就提供了在协作对象的结构组织的语境中观察控制流的一个清晰的可视化轨迹
2. 图示
3. 特性
- 1.通信图有两个不同于序列图的特性
- 2.通信图有路径。为了指出一个对象如何与另一个对象链接,可以在链的末端附上一个路径构造型(如local,表示指定对象对发送者而言是局部的)。通常只需要显式地表示以下几种链的路径:local(局部)、parameter(参数)、global(全局)以及self(自身),但不必表示association(关联)
- 3.通信图有序号。为表示一个消息的时间顺序,可以给消息加一个数字前缀(从1号消息开始),在控制流中,每个新消息的顺序号单调增加。为了显式嵌套,可使用带小数点的号码(1表示第一个消息;1.1表示嵌套在消息1中的第一个消息,1.2表示嵌套在消息1中的第二个消息)。嵌套可任意深度。沿同一个链可以显示许多消息(可能发自不同的方向),并且每个消息都有唯一的顺序号
- 4.序列图和通信图是同构的,可以相互转换
4. 例题
4.1 例题1
如下所示的图为UML的(1),用于展示某汽车导航系统中(2)。
Mapping对象获取汽车当前位置(GPS Location)的消息为(3)
(1) A.类图 B.组件图 C.通信图 D.部署图
(2) A.对象之间的消息流及其顺序 B.完成任务所进行的活动流 C.对象的状态转换及其事件顺序 D.对象之间消息的时间顺序
(3) A.1:getGraphic() B.2:getCarPos() C.1.1:CurrentArea() D.2.1:getCarLocation()(1) C (2) A (3) D