在前面的文章中,我們建立了類圖模型,類圖模型描述了系統的類及類之間的關係。類圖模型也稱為系統的靜態結構,因此從類圖模型中我們還看不到業務的處理過程以及類與類交互的信息,在UML建模語言中,這些信息是通過順序圖來描述的。
順序圖用於描述在業務處理過程中類之間的交互順序,這些交互順序是在場景或用例的信息流中發生的。由於描述的是動態行為,順序圖中類被稱為對象,也就是實例化後的類。
在順序圖中共有四個基本符號:(1)參與者符號,由一個方框加一個小人圖形表示,小人圖形在方框之上,方框內寫入參與者的名稱;(2)對象符號,由一個方框表示,方框內寫入對象的名稱;(3)生命線符號,由虛線或狹窄的豎直方框表示;(4)消息符號,有帶消息描述的方向箭頭表示。下圖是一個典型的順序圖,表明了順序圖要使用的通用格式和符號。
在上面的順序圖中,參與者是一個外部、物理的人,它扮演用戶的角色,代表物理的人。對象是系統中被實例化的類,例如人脈系統的用戶類在系統運行過程中,會創建多個對象,每個對象就是類的一個實例,一個實例對應一個外部參與者。
豎直的虛線稱為生命線,每一個參與者和對象都有生命線,它用於描述場景內的參與者和對象的生命周期,時間是從上到下,生命線顯示了消息的順序,消息沿生命線從上到下依次發生。
對象生命線上的長條矩形框表示對象處於激活狀態,當一條消息傳遞給對象的時候,對象響應該消息並觸發對象的某個行為,這時該對象就處於激活狀態。當對象沒有被激活時,對象處於休眠狀態,等待接收消息被激活。
在順序圖中,對象之間的交互是通過發送和接收消息來實現的。一個對象向另一個對象發送消息並希望得到回應時,會有兩種情況,一種情況是暫停活動並等待消息的回應,直至收到消息回應後再開啟活動,這是同步消息;另外一種情況是不管是否收到消息的回應,活動照樣執行,即不需要暫停活動來等待消息的回應,這是異步消息。
在順序圖中,還有一種消息就是自關聯消息,自關聯消息就是對象向自己發送消息。例如,對象在活動中調用內部的方法或函數。
下圖是各種消息的表示方法。
在繪製順序圖模型時,可能需要繪製一些流程控制,例如循環和條件流程控制,消息機制無法繪製這些流程控制。順序圖另外提供了「片段」機制用於描述比較複雜的動作序列,支持的片段有循環片段、可選片段、備用片段和其他片段。
上圖是用戶登錄順序圖。用戶在登錄系統的過程中,可能會輸錯帳號或密碼,系統允許用戶重新輸入帳號或密碼再次登錄。因此用戶的登錄過程是一個循環流程,在順序圖用循環片段來表示。
前面我們討論了什麼是順序圖以及順序圖的表示方法,了解了順序圖是描述系統業務執行過程中對象之間的交互順序。後面的文章我們將利用這些知識,為人脈項目V1.0系統建立順序圖模型。