上一次寫過一篇 UML | 類圖 相關的文章,平時規范開發會用的上,或者是寫什么文檔,就還是需要畫圖,就像畢業設計就是如此。希望能夠幫助到大家。
注:本文中所用畫圖軟件為 Microsoft Visio .
一、概述
時序圖更多只是一種叫法,平常我們所說的順序圖、序列圖也是在稱呼它。
時序圖是基於交互的對象行為建模,是 UML 用於描述對象之間信息的交互過程的方法,是描述對象間協作關系的模型。
時序圖用於捕獲系統運行中對象之間有時間順序的交互,是由生命線和消息組成。
時序圖將交互關系表示為一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立對象的類元角色。類元角色用生命線表示。當對象存在時,角色用一條虛線表示,當對象的過程處於激活狀態時,生命線是一個雙道線。消息用從一個對象的生命線到另一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。
二、組成元素
2.1、角色
這個角色可以是用戶、外部系統、機器等等。
在 visio 軟件中用下圖表示:
2.2、對象和生命線
關於對象的命名:
- 對象名和類名,例如:dispatcherServlet:DispatcherServlet
- 只顯示類名,即表示它是一個匿名對象,例如::DispatcherServlet
- 只顯示對象名不顯示類名,例如:dispatcherServlet
生命線:在時序圖中表示為從對象圖標向下延伸的一條虛線,表示對象存在的時間。
2.3、活動條
在生命線的虛線上可以用活動條來表示某種行為的開始和結束,一般用小矩形來表示。
在 visio 軟件上稱之為激活。
注:但是在這里我需要強調的是在生命線上並非一定要用活動條來表示執行的發生,活動條的加入是的執行發生更形象化,但是在繁多復雜的時序圖中,活動條也會使圖示變得更加復雜難以繪制,這種情況下,傾向於不使用活動條。
2.4、消息
什么是消息?
在面向對象的分析和設計中,對象的行為也被稱為消息,因為對象之間的行為的交互擢用也可以看成是對象之間發送消息實現的。通常,當一個對象調用另一個對象中的行為時,即完成了一次消息傳遞。
時序圖中關注生命線之間的通信,這些通信就是對象發送的消息。UML用生命線間帶有實心箭頭的實現表示消息,每條消息從發送對象指向接收對象。
例如:
另外消息中還細分為了簡單消息、同步消息和異步消息。
簡單消息:就表示控制如何從一個對象發送給另一個對象,並不包含控制的細節。
同步消息:意味着阻塞和等待。如:A向B 發送一個消息后,對象A 必須一直等到B執行完成后返回才能繼續往下執行。這就是同步消息。
異步消息:就意味着是非阻塞。如:A向B發送消息后,直接可以執行下面代碼,無需等待B的執行。
同步消息用實心箭頭表示,異步消息用開放式箭頭表示。
自我調用消息:
消息的返回值:
2.5、交互框
UML在2.0時在時序圖中加入了交互框。交互框用來解決交互執行的條件和方式,它允許在序列圖中直接表示邏輯組件,用於通過指定條件或子進程的應用區域,為任何生命線的任何部分定義特殊條件和子進程。組合片段共有13種,名稱及含義如下:
但是我們只抽取幾個常用的出來說一下,但本質上的用法是一樣的。
2.5.1、alt (選擇片段)
簡單說就是 將 if/else 在圖示中表示出來了。
2.5.2、opt
包含一個可能發生或不發生的序列;
只要當我成績score小於60時,老媽打我這件事情肯定會發生。
大於就不會發生。
2.5.3、Loop (循環)
片段重復一定次數,可以在臨界中指示片段重復的條件。
2.5.4、並行(Par)
理論就說到這里哈,我們來接着說個例子。
三、【實例】
下圖簡述了SpringMVC的執行流程,這次我們的任務就是將它轉換為時序圖來表示。
畫成時序圖如下:
四、自言自語
個人認為畫圖真的很有作用,尤其是關乎我們自己設計什么東西時,畫出相關圖之后,思路會清晰很多。
今天的文章就到這里了。
你好,我是博主
寧在春
.如若在文章中遇到疑惑,請留言或私信,或者加主頁聯系方式,都會盡快回復。
如若發現文章中存在問題,望你能夠指正,不勝感謝。
如果覺得對你有所幫助的話,來個一鍵三連👍啦,🙇xdm
參考:
UML序列圖總結:http://www.trufun.net/UML/UMLwendang/2016/0115/138.html
統一建模語言UML(第二版)清華大學出版社