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