資源描述:
《uml序列圖詳解文檔》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、UML序列圖詳解本文的主要目的是繼續(xù)把我們的重點(diǎn)放在基礎(chǔ)UML圖上;這個(gè)月,我們進(jìn)一步了解序列圖。再次請(qǐng)注意,下面提供的例子正是以新的UML2規(guī)范為基礎(chǔ)。圖的目的序列圖主要用于按照交互發(fā)生的一系列順序,顯示對(duì)象之間的這些交互。很象類(lèi)圖,開(kāi)發(fā)者一般認(rèn)為序列圖只對(duì)他們有意義。然而,一個(gè)組織的業(yè)務(wù)人員會(huì)發(fā)現(xiàn),序列圖顯示不同的業(yè)務(wù)對(duì)象如何交互,對(duì)于交流當(dāng)前業(yè)務(wù)如何進(jìn)行很有用。除記錄組織的當(dāng)前事件外,一個(gè)業(yè)務(wù)級(jí)的序列圖能被當(dāng)作一個(gè)需求文件使用,為實(shí)現(xiàn)一個(gè)未來(lái)系統(tǒng)傳遞需求。在項(xiàng)目的需求階段,分析師能通過(guò)提供一個(gè)更加正式層次的表達(dá),把用例帶入下一層次。那種情況下,用例常常被細(xì)化為一個(gè)或者更多的序列圖。組織的
2、技術(shù)人員能發(fā)現(xiàn),序列圖在記錄一個(gè)未來(lái)系統(tǒng)的行為應(yīng)該如何表現(xiàn)中,非常有用。在設(shè)計(jì)階段,架構(gòu)師和開(kāi)發(fā)者能使用圖,挖掘出系統(tǒng)對(duì)象間的交互,這樣充實(shí)整個(gè)系統(tǒng)設(shè)計(jì)。序列圖的主要用途之一,是把用例表達(dá)的需求,轉(zhuǎn)化為進(jìn)一步、更加正式層次的精細(xì)表達(dá)。用例常常被細(xì)化為一個(gè)或者更多的序列圖。序列圖除了在設(shè)計(jì)新系統(tǒng)方面的用途外,它們還能用來(lái)記錄一個(gè)存在系統(tǒng)(稱(chēng)它為“遺產(chǎn)”)的對(duì)象現(xiàn)在如何交互。當(dāng)把這個(gè)系統(tǒng)移交給另一個(gè)人或組織時(shí),這個(gè)文檔很有用。符號(hào)既然這是我基于UML2的UML圖系列文章的第一篇,我們需要首先討論對(duì)UML2圖符號(hào)的一個(gè)補(bǔ)充,即一個(gè)叫做框架的符號(hào)元件。在UML2中,框架元件用于作為許多其他的圖元件的一
3、個(gè)基礎(chǔ),但是大多數(shù)人第一次接觸框架元件的情況,是作為圖的圖形化邊界。當(dāng)為圖提供圖形化邊界時(shí),一個(gè)框架元件為圖的標(biāo)簽提供一致的位置。在UML圖中框架元件是可選擇的;就如你能在圖1和2中見(jiàn)到的,圖的標(biāo)簽被放在左上角,在我將調(diào)用框架的“namebox”中,一種卷角長(zhǎng)方形,而且實(shí)際的UML圖在較大的封閉長(zhǎng)方形內(nèi)部定義。圖1:空的UML2框架元件除了提供一個(gè)圖形化邊框之外,用于圖中的框架元件也有描述交互的重要的功能,例如序列圖。在序列圖上一個(gè)序列接收和發(fā)送消息(又稱(chēng)交互),能通過(guò)連接消息和框架元件邊界,建立模型(如圖2所見(jiàn)到)。這將會(huì)在后面“超越基礎(chǔ)”的段落中被更詳細(xì)地介紹。圖2:一個(gè)接收和發(fā)送消息的序
4、列圖注意在圖2中,對(duì)于序列圖,圖的標(biāo)簽由文字“sd”開(kāi)始。當(dāng)使用一個(gè)框架元件封閉一個(gè)圖時(shí),圖的標(biāo)簽需要按照以下的格式:圖類(lèi)型圖名稱(chēng)UML規(guī)范給圖類(lèi)型提供特定的文本值。(舉例來(lái)說(shuō),sd代表序列圖,activity代表活動(dòng)圖,usecase代表用例圖)?;A(chǔ)序列圖的主要目的是定義事件序列,產(chǎn)生一些希望的輸出。重點(diǎn)不是消息本身,而是消息產(chǎn)生的順序;不過(guò),大多數(shù)序列圖會(huì)表示一個(gè)系統(tǒng)的對(duì)象之間傳遞的什么消息,以及它們發(fā)生的順序。圖按照水平和垂直的維度傳遞信息:垂直維度從上而下表示消息/調(diào)用發(fā)生的時(shí)間序列,而且水平維度從左到右表示消息發(fā)送到的對(duì)象實(shí)例。生命線當(dāng)畫(huà)一個(gè)序列圖的時(shí)候,放置生命線符號(hào)元件,橫跨圖
5、的頂部。生命線表示序列中,建模的角色或?qū)ο髮?shí)例。1生命線畫(huà)作一個(gè)方格,一條虛線從上而下,通過(guò)底部邊界的中心(圖3)。生命線名字放置在方格里。圖3:用于一個(gè)實(shí)體名為freshman的生命線的Student類(lèi)的一個(gè)例子UML的生命線命名標(biāo)準(zhǔn)按照如下格式:實(shí)體名:類(lèi)名在如圖3所示的例子中,生命線表示類(lèi)Student的實(shí)體,它的實(shí)體名稱(chēng)是freshman。這里注意一點(diǎn),生命線名稱(chēng)帶下劃線。當(dāng)使用下劃線時(shí),意味著序列圖中的生命線代表一個(gè)類(lèi)的特定實(shí)體,不是特定種類(lèi)的實(shí)體(例如,角色)。在將來(lái)的一篇文章中,我們將會(huì)了解結(jié)構(gòu)化建?!,F(xiàn)在,僅僅評(píng)述序列圖,可能包含角色(例如買(mǎi)方和賣(mài)方),而不需要敘述誰(shuí)扮演那些角
6、色(例如Bill和Fred)。這準(zhǔn)許不同語(yǔ)境的圖重復(fù)使用。簡(jiǎn)單拖放,序列圖的實(shí)例名稱(chēng)有下劃線,而角色名稱(chēng)沒(méi)有。圖3中我們生命線例子是一個(gè)命名的對(duì)象,但是不是所有的生命線都代表命名的對(duì)象。相反的,一個(gè)生命線能用來(lái)表現(xiàn)一個(gè)匿名的或未命名的實(shí)體。當(dāng)在一個(gè)序列圖上,為一個(gè)未命名的實(shí)例建模時(shí),生命線的名字采用和一個(gè)命名實(shí)例相同的模式;但是生命線名字的位置留下空白,而不是提供一個(gè)例圖名字。再次參考圖3,如果生命線正在表現(xiàn)Student類(lèi)的一個(gè)匿名例圖,生命線會(huì)是:“Student”。同時(shí),因?yàn)樾蛄袌D在項(xiàng)目設(shè)計(jì)階段中使用,有一個(gè)未指定的對(duì)象是完全合法:舉例來(lái)說(shuō),“freshman”。消息為了可讀性,序列圖的
7、第一個(gè)消息總是從頂端開(kāi)始,并且一般位于圖的左邊。然后繼發(fā)的消息加入圖中,稍微比前面的消息低些。為了顯示一個(gè)對(duì)象(例如,生命線)傳遞一個(gè)消息給另外一個(gè)對(duì)象,你畫(huà)一條線指向接收對(duì)象,包括一個(gè)實(shí)心箭頭(如果是一個(gè)同步調(diào)用操作)或一個(gè)棍形箭頭(如果是一個(gè)異步訊號(hào))。消息/方法名字放置在帶箭頭的線上面。正在被傳遞給接收對(duì)象的消息,表示接收對(duì)象的類(lèi)實(shí)現(xiàn)的一個(gè)操作/方法。在圖4的例子中,analyst對(duì)象調(diào)用R