版權聲明
- 本文原創作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
- 本文參考資料:《UML面向對象分析、建模與設計(第2版)》呂云翔,趙天宇 著
順序圖概述
順序圖(sequence diagram,也被稱為為序列圖或時序圖)是按時間順序顯示對象交互的圖。具體來說,它顯示了參與交互的對象和所交換信息的先后順序,用來表示用例中的行為并將這些行為建模成信息交換。
順序圖主要包括四個元素:對象(object)、生命線(lifeline)、激活(activation)和消息(message)。在 UML中,順序圖將交互關系表示為一張二維圖。其中縱向代表時間維度時間向下延伸,按時間依次列出各個對象所發出和接收的消息。橫向代表對象的維度,排列著參與交互的各個獨立的對象。
核心知識點
請務必熟悉并掌握以下核心知識點。
順序圖是將交互關系表示為一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立對象的類元角色。類元角色用生命線表示。
對象與生命線
順序圖中的對象與對象圖中的概念一樣,都是類的實例。順序圖中的對象可以是系統的參與者或者任何有效的系統對象。對象的創建由頭符號來表示,即在對象創建點的生命線頂部使用顯示對象名和類名的矩形框來標記,二者用冒號隔開,即為“對象名:類名”這種格式。
在順序圖中,生命線位于每個對象的底部中心位置,顯示為一條垂直的虛線,與時間軸平行,帶有一個顯示對象的頭符號。順序圖中的大部分對象是存在于整個交互過程的,即對象創建于順序圖頂部,其生命線一直延伸至底部。
激活
激活又稱為控制焦點,表示一個對象執行一個動作所經歷的時間段,既可以直接執行也可以通過安排下級過程來執行。同時,激活也可以表示對應對象在這段時間內不是空閑的,它正在完成某個任務或正被占用。通常來說,一個激活結束的時候應該伴有一個消息的發出。
激活在 UML 中用一個細長的矩形表示,顯示在生命線上。矩形的頂部表示對象所執行動作的開始,底部表示動作的結束。
消息
消息是從一個對象(發送者)向另一個對象(接收者)發送信號,或由一個對象(發送者或調用者)調用另一個對象(接收者)的操作。
在UML中,有以下幾種主要動作。
-
調用(call):調用某個對象的一個操作。可以是對象之間的調用也可以是對對象本身的調用,即自身調用或遞歸調用。調用屬于同步機制,例如,當對象 A 發送消息調用對象 B時,A 會等待 B執行完所調用的方法后再繼續執行。在 UML 中使用一個頭部為實心三角的箭頭來表示調用。
-
返回(return):返回消息不是主動發出的,而是一個對象接收到其他對象的消息后返回的消息。很多情況下一個消息的接收會要求一個返回,如果把所有對源消息的返回全部繪制在順序圖中,圖將變得過于復雜而難以閱讀。所以僅僅需要繪制重要的返回消息。在UML中使用虛線箭頭表示返回。
-
創建(create):創建一個對象時發送的消息,在 UML中使用具有<< create >>構造型的消息表示。
-
銷毀(destroy):銷毀一個對象(也允許對象銷毀自身)。UML中使用具有<< destroy >>構造型的消息表示。
航空購票系統順序圖
在此,以航空購票系統的登錄用例為例繪制順序圖。
確定交互對象
創建順序圖的第一步就是要明確參與該交互的對象。我們注意到該用例由用戶發起,因此用戶作為參與者是這個交互過程的發起者。此外,假設系統采用 MVC(即模型-視圖-控制器)設計;因此參與這個交互的對象還包括用戶界面、程序邏輯層以及程序數據庫。
與創建用例圖類似,請在Model中創順序圖;圖示如下:
點擊確定后,圖示如下:
選中順序圖,右鍵單擊選擇添加圖,再選擇UML Behavioral和Sequence;圖示如下:
單擊確定后,圖示如下:
首先,將工具箱中的Actor拖拽至繪圖區添加參與者;圖示如下:
點擊確定后,圖示如下:
將工具箱中的Boundary拖拽至繪圖區添加登錄界面作為邊界;圖示如下:
點擊確定后,圖示如下:
將工具箱中的Control拖拽至繪圖區添加程序邏輯層作為控制器;圖示如下:
點擊確定后,圖示如下:
將工具箱中的Entity拖拽至繪圖區添加程序數據庫;圖示如下:
點擊確定后,圖示如下:
至此,我們確定了登錄用例的交互對象。
添加消息
在確定了參與交互的對象之后,就要在對象之間添加消息的傳遞了。我們可以很容易地分析出整個交互過程:用戶首先在界面填寫表單并確認,用戶界面將用戶填寫的表單數據發送給程序邏輯層,邏輯層向程序數據庫發送請求來檢查用戶數據的合法性,接收到合法的返回消息后程序邏輯層再向界面發送消息顯示出登錄結果。
請利用Interaction Relationships中的Message添加用戶向登錄界面傳遞的消息;圖示如下:
雙擊箭頭,添加消息;圖示如下:
點擊確定后,圖示如下:
類似地,添加登錄界面,程序邏輯層,程序數據之間的消息;圖示如下:
接下來添加程序數據向程序邏輯層的返回消息;圖示如下:
點擊確定后,圖示如下:
類似地,我們添加其它的返回消息;圖示如下:
至此,我們完成了航空購票系統的登錄用例的順序圖。