概述
序列图又称为时序图、活动序列图,它是一种详细表示对象之间及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)及它们之间可发送的消息组成,它强调消息之间的时间顺序。
序列图主要用于按照交互发生的一系列顺序,显示对象之间的这些交互。序列图的主要用途之一是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。
一、序列图的基本模型
序列图由对象生命线、激活和消息组成。在一个序列图中,垂直的虚线叫做生命线,它代表个对象存在的时间,每一个箭头代表一个调用,这个箭头从调用者对象连接到接收者对象的激活条上,每一个激活条代表所持续的时间,如图7-1所示。
从图中可以看出序列图是二维的,其中:
- 垂直方向表示时间,时间维由上到下(根据需要,也可以由下到上),但在实时应用中时间轴是能度量的。
- 水平方向表示不同的对象或参与者,相应地,生命线之间的顺序可以是任意的通常只有时间顺序是重要的,对象的水平顺序并不重要。
二、对象生命线的表示法
对象表示不同的主体,多个对象之间才能够进行交互。把对象表示成称为“生命线”的垂直虚线,生命线代表一个对象在特定时间内的存在。
在生命线的顶部是一个方框,并写入对象的名称,使用下画线表示,如图7-2所示。
这里的对象就是前文中所讲解的对象图,因此我们可以设置它所属于的类类型,采用冒号表示类,如图 7-3 所示。
如果类的类型是角色类型,则对象不再使用方框表示,而是使用一个角色的人形标志表示,对象名及类名写在人形标志的下方,如图7-4所示。
三、激活的表示法
激活表示一个对象执行一个行为的时期,它既表示了行为执行的持续时间,也表示了活动和它的调用者之间的控制关系。
激活用一个窄长的矩形表示,矩形顶端和它的开始时刻对齐,末端和它的结束时刻对齐。可以用文本标注被执行的动作,依赖于整体风格,或者把标注放在激活符号的旁边,或者放在图左边的空白处。在程序的控制流中,激活符号的顶端画在进入的箭头的尖端(开始该动作的那个箭头),底端画在返回的箭头的尾部,如图7-5所示。
当一个对象处于激活期时,该对象能够响应或发送消息,执行对象或活动。当一个对象不处于激活期时,该对象不做什么事情,但它是存在的,等待新的消息激活它。
四、消息的表示法
消息是对象之间的通信的规格说明,这样的通信用于传输将发生的活动所需要的信息。它即包含了控制信息(如调用)也包含了所使用的数据的规格说明。一个消息会调用另一个对象的操作,调用本对象的操作,向另一个对象发送一个信号,创建或者撤销一个对象(可以自己销毁自己),还可能向调用者返回一个结果。
消息表示为从一个对象生命线到另一个对象生命线的一个水平实线箭头,即从源对象指向目标对象,以触发目标对象中的特定操作。对于对象到自身的消息,箭头就从同一个对象符号开始和结束。用消息(操作或信号)的名字及其参数值或者参数表达式标示箭头,消息名称放置在带箭头的线上面,正在被传递给接收对象的消息表示接收对象的类实现的一个方法,如图7-6所示。
为了可读性,序列图的第一个消息总是从顶端开始的,并且一般位于图的左边。然后继发的消息加入图中,稍微比前面的消息低些。
根据箭头种类的不同,消息可以分为3类。
- 同步消息:在箭头的末尾画一个叉,表示消息的调用是同步的。
- 异步消息:箭头采用单边表示,表示消息的调用是异步的。
- 定时消息:消息名后画一个圈,表示该消息是定时调用的。
3 类消息如图 7-7所示。
五、自调用消息的表示法
以上的消息调用处于两个不同的对象之间,除此之外,消息还可以进行自调用,就好比类调用了自身的方法一样。在 UML图中,只需要画一个折回的箭头即可,如图 7-8所示。