UML建模圖文詳解教程06——順序圖


版權聲明

  • 本文原創作者:谷哥的小弟
  • 作者博客地址: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添加用戶向登錄界面傳遞的消息;圖示如下:

在這里插入圖片描述
雙擊箭頭,添加消息;圖示如下:

在這里插入圖片描述

點擊確定后,圖示如下:

在這里插入圖片描述
類似地,添加登錄界面,程序邏輯層,程序數據之間的消息;圖示如下:
在這里插入圖片描述
接下來添加程序數據向程序邏輯層的返回消息;圖示如下:

在這里插入圖片描述
點擊確定后,圖示如下:

在這里插入圖片描述
類似地,我們添加其它的返回消息;圖示如下:

在這里插入圖片描述
至此,我們完成了航空購票系統的登錄用例的順序圖。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164850.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(三)C語言之for語句概述

&#xff08;三&#xff09;C語言之for語句概述 一、使用for語句實現打印華氏溫度與攝氏溫度轉換二、for語句概述三、練習 一、使用for語句實現打印華氏溫度與攝氏溫度轉換 #include <stdio.h> /*當華氏溫度為 0,20,40,...300時&#xff0c;打印出華氏溫度與攝氏溫度對照…

一個簡單的QT應用示例

一個簡單的QT應用示例&#xff1a;創建一個窗口程序。 首先&#xff0c;確保已經安裝了Qt開發環境。接下來&#xff0c;按照以下步驟創建一個簡單的窗口程序&#xff1a; 1. 打開Qt Creator&#xff0c;點擊“新建文件或項目”。 2. 選擇“應用程序”&#xff0c;然后點擊“下…

【MATLAB】根軌跡的繪制及rltool工具的使用

目錄 一、MATLAB中傳遞函數的表示二、rlocus函數繪制根軌跡1.常規根軌跡仿真示例2.參數根軌跡仿真示例3.零度根軌跡仿真示例 三、圖形化工具rltool介紹 一、MATLAB中傳遞函數的表示 在繪制系統的根軌跡之前&#xff0c;需要知道傳遞函數在matlab中如何表示。 在matlab中&#…

VOC數據集和COCO數據集直接的相互轉換

VOC數據集格式 get_list.py import os import random import shutil# 設置隨機種子 random.seed(1000)# 判斷Annotations和JpegImages是否對應 train_precent=0.8 label_path= "../../Annotations" print(os.path.abspath(label_path)) save="../Main" pr…

repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 1 repo init出錯的信息2 解決方法 在ubuntu執行repo init的時候報了repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed這種錯誤&#xff0c;解決方法是需要更新本地…

PS給圖片增加一個白色邊框。

問題描述&#xff1a;PS如何給圖片增加一個白色邊框&#xff1f; 解決辦法&#xff1a; 第一步&#xff1a;使用shiftAltA快捷鍵&#xff0c;在圖片四周拉出一個灰白色的邊框。如下圖所示&#xff1a; 第二步&#xff0c;使用快捷鍵Ctrlshiftn新建一個圖層。 并把新建的圖層…

創建maven的web項目

&#xff08;一&#xff09;創建maven的web項目 Step1、創建一個普通的maven項目 &#xff08;1&#xff09;新建一個empty project&#xff0c;命名為SSM2。 點擊項目名&#xff0c;右鍵new&#xff0c;選擇Module&#xff0c;左側選擇“Maven archetype”&#xff0c;可以給…

我叫:快速排序【JAVA】

1.自我介紹 1.快速排序是由東尼霍爾所發展的一種排序算法。 2.快速排序又是一種分而治之思想在排序算法上的典型應用。 3.本質上來看&#xff0c;快速排序應該算是在冒泡排序基礎上的遞歸分治法。 2.思想共享 快速排序(Quicksort)是對冒泡排序的一種改進。基本思想是:通過一趟…

【iOS】數據持久化(二)之歸檔和解檔(iOS 13以后)

在之前介紹的數據存儲方法中&#xff0c;不管是NSUserDefaults還是plist文件都不能對自定義對象進行存儲&#xff0c;OC提供的解歸檔恰好解決了這個問題 本片文章對 iOS13 以后的版本 歸檔和解檔 進行介紹。老版本的解歸檔見這篇文章&#xff1a;【iOS】文件&#xff08;對象數…

Python Anaconda創建虛擬環境及Pycharm使用虛擬環境

目錄 前言 一、Anaconda與Pycharm 二、conda常用命令 三、Pycharm使用虛擬環境 總結 前言 我們在做開發任務時可能會創建多個項目&#xff0c;這些項目可能會依賴于不同的Python環境。比如有的用到Python3.6、有的用到Python3.7&#xff1b;有的用Pytorch開發、有的用Tens…

解決:ImportError: cannot import name ‘Sequence‘ from ‘collections‘

解決&#xff1a;ImportError: cannot import name ‘Sequence‘ from ‘collections‘ 背景 在使用之前的代碼時&#xff0c;報錯&#xff1a; File “G:\research\code\MicroDE_py\plot_bcic_iv_4_ecog_trial.py”, line 262, in from skorch.helper import predefined_spl…

Java 數據結構篇-實現單鏈表核心API

&#x1f525;博客主頁&#xff1a; 小扳_-CSDN博客 ?感謝大家點贊&#x1f44d;收藏?評論? 文章目錄 1.0 單鏈表的說明 2.0 單鏈表的創建 2.1 單鏈表 - 頭插節點 2.2 單鏈表 - 遍歷 2.2.1 使用簡單的 for/while 循環 2.2.2 實現 forEach 方法 2.2.3 實現迭代器的方法 2.…

UE5 中的computer shader使用

轉載&#xff1a;UE5 中的computer shader使用 - 知乎 (zhihu.com) 目標 通過藍圖輸入參數&#xff0c;經過Compture Shader做矩陣運算 流程 1. 新建插件 2. 插件設置 3. 聲明和GPU內存對齊的參數結構 4. 聲明Compture Shader結構 5. 參數綁定 6. 著色器實現 7. 分配 work gr…

VueRouter

路由介紹 1.思考 單頁面應用程序&#xff0c;之所以開發效率高&#xff0c;性能好&#xff0c;用戶體驗好 最大的原因就是&#xff1a;頁面按需更新 比如當點擊【發現音樂】和【關注】時&#xff0c;只是更新下面部分內容&#xff0c;對于頭部是不更新的 要按需更新&#…

Git 基本使用命令

Git 基本使用命令 下面是一些常用的 Git 基本使用命令&#xff1a; 初始化一個新的 Git 倉庫&#xff1a; git init克隆&#xff08;Clone&#xff09;一個遠程倉庫到本地&#xff1a; git clone <repository_url>添加文件或目錄到暫存區&#xff08;Staging Area&am…

微信小程序前端環境搭建

搭建微信小程序前端環境 申請小程序測試賬號 訪問路徑 使用微信掃描二維碼進行申請&#xff0c;申請成功之后&#xff0c;進入界面&#xff0c;獲取小程序ID(AppID)和秘鑰(AppSecret) 安裝微信web開發者工具 訪問路徑 選擇穩定開發的版本 需要在小程序的設置中將默認關閉…

geoserver發布tif矢量數據圖層

cesium加載上傳至geoserver的tif矢量數據_cesium加載tiff-CSDN博客 geoserver安裝及跨域問題解決方案&#xff1a;geoserver安裝及跨域問題解決方案_geoserver 跨域_1 1王的博客-CSDN博客 將TIF上傳至geoserver 啟動geoserver服務&#xff0c;并進入geoserver主頁。 1. 新建…

【物聯網產品架構】如何構建物聯網產品路線圖

面對現實吧。建立物聯網產品路線圖難度要比為“正常”技術產品制定路線圖要困難得多。 這是因為IoT產品是復雜的系統。為了創建一個工作的解決方案&#xff0c;物聯網技術棧的所有層 - 設備硬件&#xff0c;設備軟件&#xff0c;通信&#xff0c;云平臺和云應用都需要一起工作。…

Spring Cloud五大組件

Spring Cloud五大組件 Spring Cloud是分布式微服務架構的一站式解決方案&#xff0c;在Spring Boot基礎上能夠輕松搭建微服務系統的架構。 現有Spring Cloud有兩代實現&#xff1a; 一代&#xff1a;Spring Cloud Netflix&#xff0c;主要由&#xff1a;Eureka、Ribbon、Feig…

【c語言】 邏輯運算符運算規則

1.&&邏輯運算符的坑 int x0&#xff0c;y0&#xff0c;z0; z (x1) && (y2); printf("%d"&#xff0c;y);//y0;今天遇到了同學問的問題&#xff0c;為什么y輸出為0. 我第一時間也記不得&#xff0c;工作中一般不會寫這種代碼&#xff0c;但是卻不能…