协作图又称通信图,以图或网格格式描述对象交互,其中对象可以置于图中任何位置。
- 协作图用于描述相互协作的对象间的交互关系和链接关系(链接是关联的实例)。
- 虽然顺序图和协作图都描述对象间的交互关系,但它们的侧重点不同:顺序图着重表现交互的时间顺序,协作图则着重表现交互对象的静态链接关系。
组成元素:对象、链接、消息。
元素 | 解释 | 图 |
对象 | 对象是类的实例,负责发送和接收消息,与顺序图中的符号相同,冒号前为对象名,冒号后为类名。 | |
参与者 | 发出主动操作的对象,负责发送初始消息,启动一个操作。 | |
链接 | 用线条来表示链接,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之间 | |
消息 | 箭头指示消息的流向,从消息的发出者指向接收者。标签对消息作说明,其中,顺序号指出消息的发生顺序,并且指明了消息的嵌套关系;冒号后面是消息的名字。 |
消息标签的格式: [前缀] [守卫条件] 序列表达式 [返回值 :=] 消息名
recurrence 迭代标记详解:
迭代标记用 * 号表示,表示循环,通常还有迭代表达式,用来说明循环规则。
电梯的协作图:
- 图中存在的事物有:参与者、按钮对象、电梯控制对象、命令对象、工作队列、电梯对象
- 图中存在的关系有:链接
- 示例说明:
参与者需要乘坐电梯,他从系统外部按下按钮,让电梯到达他想去的楼层。
此时,电梯系统的操作被启动,电梯控制对象以循环的方式检查所有的电梯,从中选择一个工作队列长度最短的。
然后,它创建一个作业命令,并将该命令放入对应电梯的工作队列,接着激活队列。
电梯对象并发运行,从它的队列中选择一个作业并执行。
电梯是一个活动对象,它与它的控制线程并发执行。