国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 技術開發 > 正文

UML系列內容之八:序列圖

2023-06-17 18:00:46
字體:
來源:轉載
供稿:網友

序列圖(Sequence Diagram),又稱順序圖或時序圖,它是描述對象行為的一種交互視圖。

1 什么是序列圖

序列圖描述某個業務場景的行為,它關注對象之間消息傳送的時間順序。

如在圖書館借閱系統中,圖書館工作人員幫助讀者完成圖書借閱的業務場景、幫助讀者完成還書的業務場景、讀者在線預借圖書的場景等。

序列圖的主要用途是為用例進行邏輯建模,對用例所表達的需求進行更加精細的表達。

2 序列圖的構成

序列圖主要包括對象、生命線、消息和激活4種元素

在UML中,序列圖將交互關系表示為一張二維圖。其中,縱向為時間軸,時間沿豎線向下延伸。橫向是對象維,在這一維度上水平排列著參與交互的各個對象。

2.1 對象

對象是類的一個實例或一組實例。UML中對象的圖形有下面三種情形:

(1)對象名+對象所屬的類名

(2)只有對象名(省略類名)

(3)只有類的名稱(匿名對象)

三種對象的表示方法如下圖所示:

序列圖中的對象表示方法

不管使用哪種形式的對象,其名稱下面都有一條下劃線,以表明其是對象元素。

2.2 生命線

生命線代表了一次交互中的一個參與對象在一段時間內的存在。

在序列圖中,生命線位于每個對象的底部中心位置,顯示為一條垂直的虛線,與時間軸平行。

序列圖-對象的生命線

2.3 消息

消息是從一個對象(發送者)向另一個對象(接收者)發送信號,或由一個對象(發送者或調用者)調用另一個對象(接收者)的操作。

在序列圖中,消息表示為從一個對象的生命線指向另一個對象的生命線的箭頭

消息的類型主要包括簡單消息、同步消息、異步消息、返回消息四種。另外,還有一種消息是對象向自己發送消息的自反消息。

消息的類型

(1)簡單消息

簡單消息可以泛指對象之間的任何消息調用或發送,而不必關心是異步還是同步的。

(2)同步消息

對象發送消息后,需要接收消息的對象響應完畢并返回消息時才會進行其余的工作。

(3)異步消息

對象發送消息后,不需要等待接收對象的返回消息可以繼續執行其余的工作。

(4)自反消息

也是簡單消息的一種,不過是對象向自己發送消息,而不是其它的對象。

2.4 激活

激活表示一個對象執行一個動作所經歷的時間段。

一般情況下,當一個對象收到其它對象發送的消息時被激活,在激活期內處理該消息,激活結束時應該發出一個消息。

在UML中使用處于生命線上的垂直長條矩形來表示。矩形的開始處為對象開始操作動作,底部表示操作動作的結束。

序列圖-對象的激活

2.5 刪除標志

刪除標志使用一個“×”來表示。其位于對象生命線的低端,表示刪除對象。

序列圖-對象的刪除標志

3 序列圖建模

建模順序:

(1)設置交互的語境:哪個系統?哪些類?哪個用例?用例的哪些腳本?

(2)設置交互場景:識別對象在交互中扮演的角色。

(3)為對象設置生命線:很多建模工具在對序列圖建模時,對象自帶生命線。

(4)設置消息,從引發交互的消息開始,按時間順序考慮對象之間產生的消息,及消息的特征(參數、返回值類型等)。

(5)設置激活期,Rose工具在建模時,當繪制消息時,自動創建激活,根據需要可以改變激活期的大小,有些工具需要設計人員專門拖拽一個激活期到對象的生命線上。

(6)設置其它約束及條件。如時間的約束、循環的約束,消息的條件等。

4 序列圖建模案例

S校圖書館借閱系統中,圖書管理員處理借閱信息,即用例圖中的借閱圖書。

(1)確定主流程

讀者把要借閱的書籍送到借閱臺;

圖書館工作人員在登錄系統后進入圖書借閱界面;

讀者刷取借閱證;

系統獲取讀者信息和已借閱的圖書信息列表;

在沒有欠款、沒有超期圖書,且已借閱數量未達到限制時,圖書館工作人員使用掃描槍掃描每本待借書籍;

系統通過業務邏輯層獲取圖書的信息,并添加到借閱列表中;

圖書館工作人員保存借閱信息,完成借閱。

(2)確定序列圖中參與交互的對象

主要包括:圖書館工作人員、借閱界面、借閱列表、業務邏輯層、數據庫等

(3)繪制序列圖

這里只包含基本流程:獲取讀者信息->掃描圖書->保存借閱->結束借閱。

而對于驗證讀者可借閱冊數、是否有超期或是否有欠款信息等可以在額外的序列圖中繪制。以免使得序列圖變得過于龐大。

S學校圖書館序列圖

(4)注意事項

如在建模過程中,用例或業務比較復雜,可以將用例流程拆解為基本流程和若干備選流程,在繪制備選流程中只繪制與主流程不同的地方即可。

如在借閱圖書這個用例中,有超期信息及有罰款信息時不能進行借閱,這時可以分別單獨繪制序列圖。而有罰款信息時,如讀者選擇圖書館工作人員處理罰款信息,則在序列圖中只繪制相關消息,具體的罰款處理可以參考罰款處理的序列圖。

序列圖可以在分析中獲取用戶操作的大致過程,這時的序列圖可以粗一些,完全可以把系統看成黑盒對象,在設計中可以進一步的細化,使設計人員更能清楚各個類對象之間如何實現交互。

5 一些特殊處理

在UML2.x中,提供了更加豐富的功能來描述現實中的建模要求,在序列圖部分也添加了不少元素,如片段,這樣可以幫助建模人員方便的描述循環消息、條件消息、并行消息等。當然UML2.x使建模本身也變得極其復雜。

那么在UML1.x中如何恰當的表示這些信息呢?

5.1 循環消息的表示

有可能對象的某個操作需要循環調用消息,這時可以借助下面的方法:

*[for all borrowing books]:scanBooks()

這里表示圖書館工作人員需要對每本待借書籍執行掃描操作,需要多次調用借閱界面的scanBooks()操作。

上面這種適用于調用數量不確定的情形,對于確定調用次數的情形可以使用下面的方法:

*[i:=1..n]: connectServer(connInfo)

這里表示connectServer()消息最多執行n次。

5.2 消息的條件發送

一種方法是可以在條件前加上警戒條件,如:

[borrowNum<=20]:getBookInfo(barCode)

這里表示當借閱圖書數量未超過20時,借閱界面才會向業務邏輯層請求獲取圖書信息。

也可以在序列圖中使用下面的方法來表示:

序列圖中條件消息

5.3 時間約束

有時,我們可能需要表示發送消息和返回消息之間的間隔要小于指定時間,這時也可以在序列圖中使用某種特殊方法來表示。

序列圖-消息的時間約束

以上內容介紹了UML中序列圖的概念、構成元素以及繪制序列圖的步驟,并給出了一個樣例。希望你讀完這篇文章對你的知識海洋有所補充。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金华市| 永平县| 偏关县| 泸西县| 乌海市| 饶平县| 黑龙江省| 庆城县| 会昌县| 尼木县| 醴陵市| 威宁| 建瓯市| 民乐县| 手机| 左权县| 通榆县| 平和县| 舒兰市| 甘谷县| 大田县| 沛县| 嵊州市| 康定县| 鹿邑县| 读书| 临沭县| 略阳县| 平和县| 平潭县| 滁州市| 福贡县| 罗平县| 尉犁县| 怀仁县| 花垣县| 天长市| 恩平市| 迁安市| 辽源市| 荥阳市|