序列图的主要目的:展示对象间交互的顺序。详细介绍可以参考上一篇文章,序列图是一个二维图。纵向是时间轴,时间沿着竖线向下延伸,横向轴代表了在协作中各个独立对象的类元角色,也称作生命线,当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
举例:
1、生命线
生命线名称可带下划线。当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。
2、同步消息
发送人在它继续之前,将等待同步消息响应。
3、异步消息
在发送方继续之前,无需等待响应的消息。
4、注释
5、约束
约束的符号很简单,中括号包括约束内容:[Boolean Test]
6、组合片段
组合片段用来解决交互执行的条件及方式,它允许在序列图中直接表示逻辑组件,用于通过制定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
<1>抉择(Alt)
抉择用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if...else...。
抉择在任何场合下只发生一个序列。可以在每个片段中设置一个临界来指示该片段可以运行的条件。else的临界指示其他任何临界都不为true时应运行的片段。如果所有的临界都为false并且没有else,则不执行任何片段。
<2>选项(Opt)
包含一个可能发生或不能发生的序列
<3>循环(Loop)
片段重复一定次数。可以在临界中指示片段重复的条件。
<4>并行(Par)
一个生命线中持续操作的部分
下面还有几种常见的组合片段:
1、Opt(选项)
包含一个可能发生或可能不发生的序列。可以在临界中指定序列发生的条件。相对于OR
2、Alt(抉择)
包含一个列表,这些片段中包含备选信息序列。在任何场合下只能发生一个序列。可以在每个片段中设置一个临界来指示该运行的条件。else的临界指示其他任何临界都不为True时运行的片段。如果所有的临界都为False并且没有else,则不执行任何片段。相当于swith...if..
3、Loop(循环)
片段重复一定次数。可以在临界中指示片段重复的条件。
loop组合片段具有”Min“和”Max“属性,它们指示片段可以重复的最小和最大次数。默认值是无限制。相当于freach....for
4、Break(中断)
如果执行片段,则放弃序列的其余部分。可以使用临界来指示发生中断的条件。
5、Par(并行)
并行处理。片段中的事件可以交错。
6、Critical(关键)
用在par或Seq片段中。指示此片段中的消息不得与其他消息交错。
7、Seq(弱顺序)
有两个或更多操作数片段。涉及同一生命线的消息必须以片段的顺序发生。如果消息涉及的生命线不同,来自不同片段的消息可能会并行交错。
8、Strict(强顺序)
有两个或更多操作数片段。这些片段必须按给定顺序发生。
解释序列的片段
默认情况下,序列图表明可能发生的一系列消息。在运行的系统中,可能会出现您未选择显示在关系图上的其他消息。
需要考虑更改此释义
1、consider(考虑)
指定此片段描述的消息列表。其他消息可发生在运行的系统中,但对此描述来说意义不大。
可在”Message“属性中键入该列表
2、Ignore(忽略)
此片段描述的消息列表。这些消息可发生在运行的系统中,但对此描述来说意义不大。在”Message“属性中键入该列表。
3、Assert(断言)
操作数片段指定唯一有效的序列。通常在consider或Ignore片段中。
4、Neg(否定)
在此片段中显示的顺序不得发生。通常在Consider或Ignore片段中。
源码下载