在描述对象之间的交互时,常会用到时序图和协作图,它们用来描述对象以及对象之间
的消息。时序图是以时间为序的表示方法,主要用来描述对象之间的时间顺序。
----------------------------------
时序图(Sequen四Diagram) 描述了对象之间传送消息的时间顺序,它用来表示用例中
的行为顺序。当执行 个用例行为时,时序图中的每条消息对应了 个类操作或状态机中引
起转换的触发事件。
时序图包含了4个元素,分别是对象(0均ect)、生命线(L悔line)、消息(Message) 和
激活(Activation)。
1 对象
时序图中对象的符号和对象图中对象所用的符号一样,都是使用矩形将对象名称包含起来,
并且对象名称下有下划线。将对象置于时序图的顶部意味着在交互开始的时候
对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。
2 生命线
生命线(Lifeline) 是一条垂直的虚线,表示时序图中的对象在-段时间内的存在e 每个
对象的底部中心的位置都带有生命线。 生命线是-个时间线,从时序图的顶部一直延伸到底
部,所用的时间取决于交互持续的时间因对象与生命线结合在一起称为对象的生命线,对象
的生命线包含矩形的对象图标以及图标下面的生命线。
提示: 实际上,对象的生命线可以代表一组对象.
3 消息
消息(Message) 定义的是对象之间某种形式的通信,它可以激发某个操作、唤起信号
或导致目标对象的创建或撤销。消息序列可以用两种图来表示:时序图和协作图。其中,时
序图强调消息的时间顺序,而协作图强调交换消息的对象间的关系。
消息是两个对象之间的单路通信,从发送方到接收方的控制信息流。消息可以用于在对
象间传递参数。消息可以是信号,即明确的、命名的、对象间的异步通信;也可以是调用,
即具有返回控制机制的操作的同步调用。
在UML中,消息使用箭头来表示,箭头的类型表示了消息的类型,时序图中常用的消息符号如下:
注意:消息在生命线上所处的位置并不是消息求生的准确时间.只是一个相对的位里.如果一个消息位
于另一个消息的上方,只说明它先于另一个消息被发送。
.4激活
时序图可以描述对象的激活(Activation) 和去激活(Deactivation)。激活表示该对象被
占用以完成某个任务,去激活指的是对象处于空闲状态,在等待消息。在UML中,为了表
示对象是激活的,可以将对象的生命线拓宽成为矩形。其中的矩形称为激活
条或控制期,对象就是在激活条的顶部被激活的。对象在完成自己的工作后被去激活,这通
常发生在一个消息箭头离开对象生命线的时候。
----------------------------------
如果要撤销一个对象,只要在其生命线终止点放置一个"X"符号即可,该点通常是对
删除或取消消息的回应。
----------------------------------
时序图建模
一般情况下,会有很多时序图,其中的一些是主要的,另一些用来描述可选择的路径或
例外条件,可以使用包来组织这些时序图的集合,并给每个图起一个合适的名字,以便与其
他图相区别。
按时间顺序对控制流建模,要遵循如下策略。
(1) 设置交互的语境,这些语境可以是系统、子系统、操作、类、用例或协作的脚本。
(2) 通过识别对象在交互中扮演的角色,设置交互的场景。以从左到右的顺序将对象放
到时序图的上方,其中较重要的放在左边,与它们相邻的对象放在右边。
(3)为每个对象设置生命线。通常情况下,对象存在于整个交互过程中。对于那些在交
互期间创建和撤销的对象,在适当的时刻设置它们的生命线,并用适当的构造型消息显式地
说明它们的创建和撤销。
(4) 从引发某个消息的信息开始,在生命线之间画出从顶到底依次展开的消息,显示每
个消息的特性(如参数)。若有需要,解释交互的语义。
(5) 如果需要可视化消息的嵌套或实际计算发生时的时间点,可以用激活修饰每个对象
的生命期。
(6) 如果需要说明时间或空间的约束,可以用时间标记修饰每个消息,并附上合适的时
间和空间约束。
(7) 如果需要形式化地说明某控制流,可以为每个消息附上前置和后置条件。
一个单独的时序图只能显示一个控制流,通常说来,一个完整的控制流肯定是复杂的,
所以,将 个大的流分为几个部分放在不同的图中是比较合适的。