EA&UML日拱一卒 用例包含關係

包含關係

包含(Include) 是兩個用例之間的有向關係,表示被包含的用例的行為被插入到包含用例的行為中。

包含關係可在兩個或多個用例的行為存在共同部分時使用。通常情況下,這個公共部分被提取到一個單獨的用例中,然後被所有具有這個部分的基本用例包含。由於包含關係的主要用途是重用公共部分,因此基本用例中剩下的部分通常並不完整,需要和包含的部分結合才有意義。這一點反映在關係的方向上:基礎用例依賴於被包含用例,但反之則不然。

包含關係允許用例的分層組合以及重用。

第二個用例-轉賬

轉賬用例的基本路徑如下:

顯示待機畫面檢測使用者插入銀行卡,執行進卡動作顯示語言選擇畫面等待並處理使用者選擇語言提款機顯示使用者認證畫面等待使用者輸入密碼並按下確定按鈕顯示該銀行卡型別的有效服務根據使用者選擇結果進入轉賬畫面接受使用者輸入的轉賬物件賬號進入轉賬額輸入畫面接受使用者輸入的轉賬額與銀行系統伺服器通訊,執行轉賬命令顯示是否需要其他服務畫面使用者選擇取卡,執行出卡動作,並提示客戶取卡檢測使用者取卡後顯示待機畫面

再看一下取款用例的基本路徑:

顯示待機畫面檢測使用者插入銀行卡,執行進卡動作顯示語言選擇畫面等待並處理使用者選擇語言提款機顯示使用者認證畫面等待使用者輸入密碼並按下確定按鈕顯示該銀行卡型別的有效服務根據使用者選擇結果進入取款額輸入畫面接受使用者輸入的取款額與銀行系統伺服器通訊,執行取款命令進入處理中畫面,同時將紙幣搬運到出鈔口打開出鈔口擋板等待使用者取走鈔票關閉出鈔口擋板顯示是否需要其他服務畫面如果使用者選擇取卡,執行出卡動作,並提示客戶取卡檢測使用者取卡後顯示待機畫面

可以看到轉賬的用例和前一篇文章中的取款用例有很多相似的地方,我們可以將它們分別提取出來:

待機顯示:

顯示待機畫面檢測使用者插入銀行卡,執行進卡動作

選擇語言:

顯示語言選擇畫面等待並處理使用者選擇語言

使用者認證:

顯示使用者認證畫面等待使用者輸入密碼並按下確定按鈕

選擇服務:

顯示該銀行卡型別的有效服務等待使用者輸入

輸入賬號:

進入轉賬畫面接受使用者輸入的轉賬物件賬號

輸入金額:

進入轉賬額輸入畫面接受使用者輸入的轉賬額

執行轉賬動作

與銀行系統伺服器通訊,執行轉賬命令

詢問其他服務

顯示是否需要其他服務畫面接受使用者輸入

退卡

執行出卡動作,並提示客戶取卡

用例圖中的包含關係

可以看到我們將一個轉賬用例分解為九個小的用例,而這裡的取款用例和九個用例之間的關係就是包含關係也就是說:轉賬用例包含九個小用例。這種說法在EA的用例圖中,使用下面的圖表來表示包含關係:

EA&UML日拱一卒 用例包含關係

上面的轉賬用例變成用例圖就是下面的樣子:

EA&UML日拱一卒 用例包含關係

使用同樣的方法,取款用例可以表示成下面的樣子:

EA&UML日拱一卒 用例包含關係

可以看到,除了綠色的執行去狂動作之外,所有的被包含用例都是在轉賬用例中出現過的。

還有一點需要注意的是,為了保證每個用例的完整性和通用性,我們對部分用例的內容進行了微調。這種微調在用例建模過程中是很常見的。

作者著作介紹

《實戰Python設計模式》是作者去年3月份出版的技術書籍,該書利用Python 的標準GUI 工具包tkinter,透過可執行的示例對23 個設計模式逐個進行說明。這樣一方面可以使讀者瞭解真實的軟體開發工作中每個設計模式的運用場景和想要解決的問題;另一方面透過對這些問題的解決過程進行說明,讓讀者明白在編寫程式碼時如何判斷使用設計模式的利弊,併合理運用設計模式。

EA&UML日拱一卒 用例包含關係

對設計模式感興趣而且希望隨學隨用的讀者透過本書可以快速跨越從理解到運用的門檻;希望學習Python GUI 程式設計的讀者可以將本書中的示例作為設計和開發的參考;使用Python 語言進行影象分析、資料處理工作的讀者可以直接以本書中的示例為基礎,迅速構建自己的系統架構。

覺得本文有幫助?請分享給更多人。

關注微信公眾號【面向物件思考】輕鬆學習每一天!

面向物件開發,面向物件思考!