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)可见:表示关联的对象是全局可见的。全局的概念类似于指对象在整个分布式应用程序中,或者一个服务器群集中,或者整个万维网中是可见的。
- UML——协作图
- UML——协作图
- UML——协作图
- UML——序列图、协作图
- UML——顺序图、协作图
- UML(5)——协作图
- UML学习——协作图
- 【UML图】——序列图&协作图
- UML——交互图(序列图+协作图)
- UML图之六——协作图
- UML——顺序图与协作图
- UML—交互图(序列图、协作图)
- 数据库课程设计——宾馆管理系统UML协作图
- 协作图(Collaboration Diagram)—UML图(七)
- 协作图(Collaboration Diagram)—UML图(七)
- 协作图(Collaboration Diagram)—UML图(七)
- UML协作图
- UML 协作图
- 倒序输出(如输入456则输出654)
- vagrant 创建box 镜像
- 小白学开发(iOS)OC_匿名对象(2015-07-24)
- HDU 2674-- N!Again【技巧】
- 猜数游戏
- UML——协作图
- Android程序运行时权限与文件系统权限的区别
- LoadRunner脚本编码规范
- lua 中ipairs 和 pairs 区别
- 动态规划---最长公共子序列
- 项目中的连接本地服务器以及JSON解析
- 【面试加分项】运行时多态与编译时多态
- Servlet 实现访问量的统计小案例
- 小白学开发(iOS)OC_封装_成员变量(set get方法)(2015-07-24)