uml之协作图
协作图——CollaborationDiagram,也叫合作图,是一种交互图(interactiondiagram)。强调的是发送和接收消息的对象之间的组织结构,一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。
也叫“通信图”,“协作”作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。
协作图的描述
协作图显示某组对象,如何为了由一个用例描述的一个系统事件而与另一组对象进行协作的交互图。
对象通常是命名或匿名的类的实例,也可以代表其他事物的实例,例如协作、组件和节点,使用协作图来说明系统的动态情况,协作图使描述复杂的程序逻辑或多个平行事务变得容易。
协作图作为表示对象间相关作用的图形表示,也可以有层次结构。可以把多个对象作为一个抽象对象,通过分解,用下层协作图表示出这多个对象间的协作关系,这样可缓解问题的复杂度。
协作图的组成部分
协作图强调参与一个交互对象的组织,基本元素包括:活动者(Actor)、对象(Object)、连接(Link)和消息(Message)。
对象:用长方形框表示对象。
连接:使用实线标记两个对象之间的连接。
消息:由标记在连接上方的带有标记的箭头表示。
当两个对象间有消息传递时用带箭头的有向边连接这两个对象,在UML中,协作图的语义与序列图是等价。
有向边的箭头方向表示传递消息的方向,在有向边上方标识出是什么消息,为表示发送消息的时间顺序,在每个消息前附加数字编号,显然,协作图便于描述对象间有什么样的协作关系,不需要像一个序列图只能对应于一个场景一样,可以将多个场景中的协作关系一次性地全部描述出来,不过,与序列图一样,在UML的协作图中,也规定了消息发送条件的描述。
协作图包含类元角色和关联角色,而不仅仅是类元和关联,类元角色和关联角色描述了对象的配置和当一个协作的实例执行时可能出现的连接。
当协作被实例化时,对象受限于类元角色,连接受限于关联角色,关联角色也可以被各种不同的临时连接所担当,例如过程参量或局部过程变量,连接符号可以使用构造型表示临时连接(《parameter》或《local》)或调用同一个对象(《self》)。
虽然,整个系统中可能有其他的对象,但只有涉及到协作的对象才会被表示出来,换而言之,协作图只对相互之间具有交互作用的对象和对象间的关联建模,而忽略了其他对象和关联。
协作图与序列图的关系
协作图用于表示对象间的消息往来。
虽然序列图在某种定义上也能表示对象的协作动作,但能明确描述对象间的协作关系的还是协作图。
使用协作图可以显示对象角色之间的关系,如为实现某个操作或达到某种结果而在对象间交换的一组消息,如果需要强调时间和序列,最好选择序列图,如果需要强调上下文相关,最好选择协作图。
协作图用于显示对象之间如何进行交互以执行特定用例或用例中特定部分的行为,设计员使用协作图和序列图确定并阐明对象的角色,这些对象执行用例的特定事件流,它们是主要的信息来源,用于确定类的职责和接口。
与序列图不同,协作图显示了对象之间的关系,序列图和协作图表述的是相似的信息,但表述的方式却不同,协作图显示对象之间的关系,它更有利于理解对给定对象的所有影响,也更适合过程设计。
协作图的格式决定了它们更适合在分析活动中使用。
它们特别适合用来描述少量对象之间的简单交互,随着对象和消息数量的增多,理解协作图将越来越困难,此外,协作图很难显示补充的说明性信息,例如时间、判定点或其他非结构化的信息,而在序列图中这些信息可以方便地添加到注释中。
通信图与顺序图都是表现对象之间交互和通信的,但侧重点不同:顺序图着重在交互的时间顺序上,通信图则着重在交互对象的空间链接上
通信图对应于简单的顺序图。通信图不含有交互框架,交互引用等复杂结构。
画图步骤:
1.确定交互过程的上下文
2.识别参与交互过程的对象
3.如果需要,为每个对象设置初始特性
4.确定对象之间的链,及沿着链的消息
5.从引发该交互过程的初始消息开始,将每个消息附到相应的链上
6.如果需要说明时间约束,则在消息旁边加上约束说明
7.如果需要,可以为每个消息设置前置条件和后置条件