交互圖表示類(對(duì)象)如何交互來實(shí)現(xiàn)系統(tǒng)行為。交互圖具有如下兩種形式。
1)順序圖
它描述對(duì)象按時(shí)間順序的消息交換過程,它體現(xiàn)出系統(tǒng)用例的行為。
2)協(xié)作圖
它描述對(duì)象間的組織協(xié)作關(guān)系,它也可體現(xiàn)出系統(tǒng)用例的行為。
順序圖和協(xié)作圖都可以表示對(duì)象間的交互關(guān)系,但它們的側(cè)重
點(diǎn)不同。順序圖用消息的幾何排列關(guān)系來表達(dá)對(duì)象間交互消息的先后時(shí)間順序。而協(xié)作圖則建模對(duì)象(或角色)間的通信關(guān)系。
一、定義順序圖
順序圖是兩種類型的交互圖之一。順序圖用來建模以時(shí)間順序安排的對(duì)象交互,并且把用例行為分配給類。它是用來顯示參與者如何采用若干順序步驟與系統(tǒng)對(duì)象交互的模型。
二、為什么要建模順序圖
建模順序圖有許多理由,順序圖與活動(dòng)圖具有類似的作用。其中重要的理由就是實(shí)現(xiàn)用例。任何用例都可以使用順序圖進(jìn)一步闡明和實(shí)現(xiàn)。
三、順序圖的標(biāo)記符
順序圖有兩個(gè)主要的標(biāo)記符:活動(dòng)對(duì)象和這些活動(dòng)對(duì)象之間的通信消息?;顒?dòng)對(duì)象可以是任何在系統(tǒng)中扮演角色的對(duì)象,不管它是對(duì)象實(shí)例還是參與者
活動(dòng)對(duì)象之間發(fā)送的消息是順序圖的關(guān)鍵。消息說明了對(duì)象之間的控制流,對(duì)象是如何交互的,以及什么條件會(huì)改變控制流。
1.活動(dòng)對(duì)象
活動(dòng)對(duì)象可以是系統(tǒng)的參與者或者任何有效的系統(tǒng)對(duì)象。對(duì)象是類的實(shí)例,它使用包圍名稱的矩形框來標(biāo)記。名稱帶下劃線
2.消息
消息用來說明順序圖中不同活動(dòng)對(duì)象之間的通信。它可在一個(gè)對(duì)象需要取消不同對(duì)象的進(jìn)程時(shí)或者需要向另一個(gè)對(duì)象提供服務(wù)時(shí),使用消息。
消息從活動(dòng)對(duì)象生命線到接收對(duì)象生命線的箭頭表示。箭頭上面標(biāo)記要發(fā)送的消息
把參與者表示為活動(dòng)對(duì)象的建??梢哉f明參與者如何與系統(tǒng)交互,以及系統(tǒng)如何與用戶交互。參與者可以調(diào)用對(duì)象,對(duì)象也可以通知參與者
四、如何使用消息進(jìn)行通信
消息是順序圖活動(dòng)對(duì)象之間通信的惟一方式。UML中的消息使用了一些簡(jiǎn)潔的標(biāo)記符。
消息可以包含條件以便限制它們只在滿足條件時(shí)才能發(fā)送。條件顯示在消息名稱上面的方括號(hào)中,如下圖所示。
五、 順序圖的其他技術(shù)
學(xué)習(xí)如何在創(chuàng)建順序圖的過程中創(chuàng)建對(duì)象。與活動(dòng)圖一樣,可以在順序圖中設(shè)置擁有控制權(quán)的對(duì)象狀態(tài)。另外一點(diǎn)和活動(dòng)圖相似的是,可以通過使用分支和從屬控制流來以多種方式修改順序圖的控制流。
1.創(chuàng)建對(duì)象
創(chuàng)建對(duì)象的標(biāo)記符如下圖中的示例所示。有一個(gè)主要步驟用來把“create” 消息發(fā)送給對(duì)象實(shí)例。對(duì)象創(chuàng)建之后就會(huì)具有生命線,可以使用該對(duì)象發(fā)送和接收消息。在處理新創(chuàng)建的對(duì)象,或者處理順序圖中的任何其他對(duì)象時(shí),都可以發(fā)送“destroys”消息來刪除對(duì)象。若要想說明某個(gè)對(duì)象被銷毀,需要在被銷毀對(duì)象的生命線上放一個(gè)X字符。
2.分支和從屬流
有兩種方式來修改順序圖的控制流:使用分支和使用從屬流。這兩種方式很相似,各自的標(biāo)記符略微不同。控制流的改變是由于不同的條件導(dǎo)致控制流走向不同的道路。
分支允許控制流走向不同的對(duì)象
示例
這個(gè)順序圖中有4個(gè)活動(dòng)對(duì)象:Developer、Compiler、Linker和FileSystem。Developer是系統(tǒng)的參與者。Compiler是Developer交互的應(yīng)用程序。Linker是一個(gè)用來鏈接對(duì)象文件的獨(dú)立進(jìn)程。FileSystem是系統(tǒng)層功能的包裝器,用來執(zhí)行文件的輸人和輸出例程。
Compile Application用例的順序圖操作:
Developer請(qǐng)求Compiler執(zhí)行編譯
Compiler請(qǐng)求FileSystem 加載文件
Compiler通知自己執(zhí)行編譯
Compiler請(qǐng)求FileSystem 保存對(duì)象代碼
Compiler請(qǐng)求Linker鏈接對(duì)象代碼
Linker請(qǐng)求 FileSystem加載對(duì)象代碼
Liker通知自己執(zhí)行鏈接
Linker請(qǐng)求FileSystem保存編譯的結(jié)果