目录
目录
例子
表示循环和分支
1、alt和opt
2、loop
3、assert、consider、ignore
(1)consider和assert操作符混用
(2)ignore和assert操作符混用
4、break
5、critical(region)
6、par
7、ref
补充:图类型的表示法
绘制饮料自动销售系统顺序图
顺序图中,对象的行为有循环和分支两种方式,为了表示这两种行为,引入了交互片段、区域和操作符的概念。下面分别讲述。
一个交互片段可以包含多个区域,每个区域拥有一个监护条件和一个复合语句。
图1
在图1中是操作符alt的使用实例,它说明如果peddeleryid不存在,则执行复合语句1;如果存在执行复合语句2。如果要表示多个条件分支,则可以用“区域分隔线”分解出多个区域,并为每个区域设置一个监护条件。
每个交互片段都有一个操作符,操作符决定了交互片段的执行方式.下面分别讲述每种操作符的应用.
可以表示分支的操作符有两个:支持多条件的alt和支持单条件的的opt。
在图2中,实际上要表示的逻辑是“如果peddeleryid不存在就先创建它,然后添加;否则就直接添加。因此,也可以使用单条件的opt来表示,如图3
图2
图3
表示循环的操作符是loop,它说明该片段将可以执行多次,而具体的次数由循环次数和监护条件表达式来说明。在图7-7中,没有通过循环次数说明,而只是采用了监护条件。它表示的意思是,对每一个orderltem都执行一遍业务逻辑。也可以显式地指出循环的次数,例如:
Loop(1,n):表示for i=1;i
Loop(10):表示执行10次。
交互片段是UML2.0中新添加的一个特性,因此在采用UML1.0的建模工具时是无法完成上述模型的。这时,只能使用UML1.0中的迭代标记和监护条件来表示。
迭代标记是由一个附于消息名的“*”号来表示,用来表示循环,也可以在“*”号后面加上一个方括号,并在里面写出循环次数。监护条件是置于方括号内的条件表达式。
虽然这些标志在UML2.0的顺序图已经不再采用,但是在UML2.0的通信图中是仍然保留的。如果用这种表示法,那么与图7-4等价的交互图就将是如图4所示。
图4
操作符assert是用来表示行为是执行过程中那个时刻唯一的有效行为。如果执行到这个片段的前面,则说明该片段一定会发生。它通常和ignore或consider一起使用,以断言某种特定种类的信息行为。
操作符consder包含一个子片段和一个消息类型列表。只有列表中的消息类型可以出现在子片段中,这表示其他类型可以出现在实际的系统中,但是交互会忽略它们。图5所示是一个混合使用assert和consider操作符的例子。
图5
图5所表示的意思是,他们只接受start或stop消息(consider{start,stop}),而且在start消息之后必须是一个stop消息(assert操作符表示),而不能是其他消息。
操作符ingore也包含一个子片段和一个消息类型列表。列表中的消息类型可以出现在子片段中,但交互会忽略它们。它的含义与consider刚好相反
操作符break和循环语句的berak有些类似,通常用break定义一个含有监护条件的子片段。如果监护条件为“真”则执行子片段,而且不执行子片段后面的其他交互;如果监护条件为“假”,那么就按正常流程执行.
在图6中,当系统要用户登录时。如果单击“取消”按钮,那么就将取消登录。并且不再执行后续地交互;否则就将等待用户输入登录信息,系统对输入的信息进行相应地应答。
图6
操作符crtical表示子片段是“临界区域”,在临界区域中,生命线上的事件序列不能和其他区域中的任何其他事件交错。它通常用来表示一个原子性的连续操作,例如事务性操作,图7所示就是一个实际的例子。
图7
图7表示地含义是,从银行帐号(bankaccount)扣钱和往证卷帐户(stockaccount)加钱的这两个动作要么全部成功完成,要么都不执行。
操作符par是用来表示“并行”的,也就是用来表示两个或多个并发执行的子片段,并行子片段中,单个元素的执行次序可以以任何可能的顺序相互操作(除非采用critical禁止)。例如,可以采用图8来表示VCD播放器的工作原理。
图8
这幅图说明在VCD播放的过程中,显然图像(displayframe)的同时,可以响应各种按键。但是有一个例外,当用户按下暂定键(pause)时,在用户按下恢复键之前是无法显示图像的。
ref用来在一个交互图中,引用其他的交互图. 在一个矩形框的左上交标识ref操作符,并在方框中写明被引用的交互图名称。
Ref操作符如图9所示。
在UML中,各种图类型的表示法如表所示。
图类型 |
对应的表示法 |
图类型 |
对应的表示法 |
类图 |
class |
对象图 |
object |
包图 |
package |
用例图 |
use case |
顺序图 |
sd |
通信图 |
comm |
定时图 |
timing |
活动图 |
activity |
交互概观图 |
intover |
状态机图 |
statemachine |
构件图 |
component |
部署图 |
deployment |