在描述對(duì)象之間的交互時(shí),常會(huì)用到時(shí)序圖和協(xié)作圖,它們用來描述對(duì)象以及對(duì)象之間
的消息。時(shí)序圖是以時(shí)間為序的表示方法,主要用來描述對(duì)象之間的時(shí)間順序。
----------------------------------
時(shí)序圖(Sequen四Diagram) 描述了對(duì)象之間傳送消息的時(shí)間順序,它用來表示用例中
的行為順序。當(dāng)執(zhí)行 個(gè)用例行為時(shí),時(shí)序圖中的每條消息對(duì)應(yīng)了 個(gè)類操作或狀態(tài)機(jī)中引
起轉(zhuǎn)換的觸發(fā)事件。
時(shí)序圖包含了4個(gè)元素,分別是對(duì)象(0均ect)、生命線(L悔line)、消息(Message) 和
激活(Activation)。
1 對(duì)象
時(shí)序圖中對(duì)象的符號(hào)和對(duì)象圖中對(duì)象所用的符號(hào)一樣,都是使用矩形將對(duì)象名稱包含起來,
并且對(duì)象名稱下有下劃線。將對(duì)象置于時(shí)序圖的頂部意味著在交互開始的時(shí)候
對(duì)象就已經(jīng)存在了,如果對(duì)象的位置不在頂部,那么表示對(duì)象是在交互的過程中被創(chuàng)建的。
2 生命線
生命線(Lifeline) 是一條垂直的虛線,表示時(shí)序圖中的對(duì)象在-段時(shí)間內(nèi)的存在e 每個(gè)
對(duì)象的底部中心的位置都帶有生命線。 生命線是-個(gè)時(shí)間線,從時(shí)序圖的頂部一直延伸到底
部,所用的時(shí)間取決于交互持續(xù)的時(shí)間因?qū)ο笈c生命線結(jié)合在一起稱為對(duì)象的生命線,對(duì)象
的生命線包含矩形的對(duì)象圖標(biāo)以及圖標(biāo)下面的生命線。
提示: 實(shí)際上,對(duì)象的生命線可以代表一組對(duì)象.
3 消息
消息(Message) 定義的是對(duì)象之間某種形式的通信,它可以激發(fā)某個(gè)操作、喚起信號(hào)
或?qū)е履繕?biāo)對(duì)象的創(chuàng)建或撤銷。消息序列可以用兩種圖來表示:時(shí)序圖和協(xié)作圖。其中,時(shí)
序圖強(qiáng)調(diào)消息的時(shí)間順序,而協(xié)作圖強(qiáng)調(diào)交換消息的對(duì)象間的關(guān)系。
消息是兩個(gè)對(duì)象之間的單路通信,從發(fā)送方到接收方的控制信息流。消息可以用于在對(duì)
象間傳遞參數(shù)。消息可以是信號(hào),即明確的、命名的、對(duì)象間的異步通信;也可以是調(diào)用,
即具有返回控制機(jī)制的操作的同步調(diào)用。
在UML中,消息使用箭頭來表示,箭頭的類型表示了消息的類型,時(shí)序圖中常用的消息符號(hào)如下:

注意:消息在生命線上所處的位置并不是消息求生的準(zhǔn)確時(shí)間.只是一個(gè)相對(duì)的位里.如果一個(gè)消息位
于另一個(gè)消息的上方,只說明它先于另一個(gè)消息被發(fā)送。
.4激活
時(shí)序圖可以描述對(duì)象的激活(Activation) 和去激活(Deactivation)。激活表示該對(duì)象被
占用以完成某個(gè)任務(wù),去激活指的是對(duì)象處于空閑狀態(tài),在等待消息。在UML中,為了表
示對(duì)象是激活的,可以將對(duì)象的生命線拓寬成為矩形。其中的矩形稱為激活
條或控制期,對(duì)象就是在激活條的頂部被激活的。對(duì)象在完成自己的工作后被去激活,這通
常發(fā)生在一個(gè)消息箭頭離開對(duì)象生命線的時(shí)候。
----------------------------------
如果要撤銷一個(gè)對(duì)象,只要在其生命線終止點(diǎn)放置一個(gè)"X"符號(hào)即可,該點(diǎn)通常是對(duì)
刪除或取消消息的回應(yīng)。
----------------------------------
時(shí)序圖建模
一般情況下,會(huì)有很多時(shí)序圖,其中的一些是主要的,另一些用來描述可選擇的路徑或
例外條件,可以使用包來組織這些時(shí)序圖的集合,并給每個(gè)圖起一個(gè)合適的名字,以便與其
他圖相區(qū)別。
按時(shí)間順序?qū)刂屏鹘#裱缦虏呗浴?br />(1) 設(shè)置交互的語(yǔ)境,這些語(yǔ)境可以是系統(tǒng)、子系統(tǒng)、操作、類、用例或協(xié)作的腳本。
(2) 通過識(shí)別對(duì)象在交互中扮演的角色,設(shè)置交互的場(chǎng)景。以從左到右的順序?qū)?duì)象放
到時(shí)序圖的上方,其中較重要的放在左邊,與它們相鄰的對(duì)象放在右邊。
(3)為每個(gè)對(duì)象設(shè)置生命線。通常情況下,對(duì)象存在于整個(gè)交互過程中。對(duì)于那些在交
互期間創(chuàng)建和撤銷的對(duì)象,在適當(dāng)?shù)臅r(shí)刻設(shè)置它們的生命線,并用適當(dāng)?shù)臉?gòu)造型消息顯式地
說明它們的創(chuàng)建和撤銷。
(4) 從引發(fā)某個(gè)消息的信息開始,在生命線之間畫出從頂?shù)降滓来握归_的消息,顯示每
個(gè)消息的特性(如參數(shù))。若有需要,解釋交互的語(yǔ)義。
(5) 如果需要可視化消息的嵌套或?qū)嶋H計(jì)算發(fā)生時(shí)的時(shí)間點(diǎn),可以用激活修飾每個(gè)對(duì)象
的生命期。
(6) 如果需要說明時(shí)間或空間的約束,可以用時(shí)間標(biāo)記修飾每個(gè)消息,并附上合適的時(shí)
間和空間約束。
(7) 如果需要形式化地說明某控制流,可以為每個(gè)消息附上前置和后置條件。
一個(gè)單獨(dú)的時(shí)序圖只能顯示一個(gè)控制流,通常說來,一個(gè)完整的控制流肯定是復(fù)雜的,
所以,將 個(gè)大的流分為幾個(gè)部分放在不同的圖中是比較合適的。