UML——协作图

来源:互联网 发布:plc模块化编程实例 编辑:程序博客网 时间:2024/05/20 23:33

6 协作图(Collaboration Diagram)

:UML2.0以后不再用协作图说法,而是明确定义为“通信图”,即Communication Diagram,而“协作”作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。故UML 2.0以后通信图不再是协作图,没有专门的”协作图“,只有”协作“。)

6.1 概述

协作图强调的是发送和接收消息的对象之间的组织结构。

与时序图的比较

相同点:都显示对象之间如何进行交互;

不同的:协作图展示了对象间的关系,更适用于获得对对象结构的理解,时序图则更适于获得对调用过程的理解。

6.2 协作图元素

(1)参与者:发出主动操作的对象,负责发送初始消息,启动一个操作。

(2)对象:对象是类的实例,负责发送和接收消息,与顺序图中的符号相同,冒号前为对象名,冒号后为类名。

(3)消息流:由箭头和标签组成。箭头表示消息的流向,从消息的发出者指向接收者(箭头类型代表的消息类型与时序图定义的一样)。标签对消息作说明,其中,顺序号指出消息的发生顺序,并且指明了消息的嵌套关系,冒号后面是消息的名字。

消息标签:[前缀]  [守卫条件序列表达式  [返回值:=] 消息名

前缀的语法规则: 序列号,序列号,…,序列号‘/’

意思是在发送当前消息之前指定序列号的消息被处理(也就是说必须连续执行),在数字上对应于前趋的序列数的消息是暗含的前驱符,而不必明确列出,例如3.1.4.5是3.1.4.6的前缀

守卫条件的语法规则: [条件短句] 

条件短句通常用伪代码或真正的程序语言来表示。例:[x>=0] 

序列表达式的语法规则:[integer | name][recurrence]’:’

Integer:为指定消息顺序的序列号,消息 1 总是消息序列的开始消息,消息 1.1是消息1 的处理过程中的第一条嵌套的消息,消息1.2 是消息 1 的处理过程中的第二条嵌套的消息,一个消息序列的例子:消息 1,消息 1.1,消息1.2,1.2.1,1.2.2,1.3,等等这样的序列号不仅能够表示消息的顺序,而且还能表示消息的嵌套关系(当消息是异步消息时,消息为嵌套的操作调用及返回)

Name:表示并发控制线程,

例如消息3.1a和消息3.1b是在激活3.1中是并发的

Recurrence:表示一个条件或迭代的执行 有两种选择

        '*'  '['   循环子句  ']

        '[ ' 条件子句  ']'

循环子句(iteration-clause) 可以用伪代码或真正的编程语言来表示,表示在给定嵌套深度上的一个消息序列,用来指定一个循环( 重复执行),循环子句是循环的条件;

条件子句表示消息的执行视条件子句的真值而定,可以用伪代码或实际程序语言来表达条件子句,

[i := 1...n],例如对于一个包括循环的消息标签应该表示成:1.1 *[x = 1..10] : doSomething()

返回值表示一个操作调用(消息)的结果,消息说明由消息名和参数表组成,消息标签 1.4.5: x := calc (n)


(4)链接:用线条来表示链接,链接表示两个对象共享一个消息,位于对象之间或参与者与对象之

对象关联的可见属性

域(Field)可见:表示关联的对象在交互域内是一直可见的。这有些类似于Java中的包内可见的性质。

参数(Parameters)可见:表示关联的对象仅在交互过程中可见,它们是通过参数传递产生关联的。


本地(Local)可见:表示关联的对象在本地可见。本地的概念类似于指对象在同一个JVM(Java虚拟机)或者同一个Server中,或者同一个进程中是可见的。


全局(Global)可见:表示关联的对象是全局可见的。全局的概念类似于指对象在整个分布式应用程序中,或者一个服务器群集中,或者整个万维网中是可见的。


0 0
原创粉丝点击