协作图是一种交互图,强调的是发送和接收消息的对象之间的组织结构,来说明系统的动态情况。它主要描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息。可以表示类操作的实现。
1.事物:
参与者:发出主动操作的对象,负责发送初始消息,启动一个操作
对象:对象是类的实例,负责发送和接收消息,与顺序图中的符号相同,冒号前为对象名,冒号后为类名。
消息流:由箭头和标签组成。箭头指示消息的流向,从消息的发出者指向接收者。标签对消息作说明,其中顺序号指出消息的发生顺序,并且指明了消息的嵌套关系;冒号后面是消息的名字。
2.协作图中的关系
链接:用线条来表示链接,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之间。
3.消息标签:
Format:[前缀][守卫条件]序列表达式[返回值:=]消息名
前缀的语法规则:序列号,序列号,……序列号‘/’
前缀用来同步线程,在发送当前消息之前指定序列号的消息被处理。例:1.1a,1.1b/
守卫条件的语法规则:[条件短句] 注:条件短句通常用伪代码或真正的程序语言来表示。例:[x>=0]
返回值和消息名:返回值表示一个消息的返回结果,消息名指出了消息的名字和所需参数例:x:=calc(n)
4.协作图和顺序图的比较
协作图和顺序图都表示对象间的交互作用,但是:
顺序图表示交互作用中的时间顺序(强调时间)没有明确表示对象间的关系。
协作图表示了对象间的关系(强调空间)时间顺序必须从顺序号获得。
它们可以相互转化。
5.实例:顾客实现注册信息协作图