EA&UML日拱一卒 用例包含關系
包含關系
包含(Include) 是兩個用例之間的有向關系,表示被包含的用例的行為被插入到包含用例的行為中。
包含關系可在兩個或多個用例的行為存在共同部分時使用。通常情況下,這個公共部分被提取到一個單獨的用例中,然后被所有具有這個部分的基本用例包含。由于包含關系的主要用途是重用公共部分,因此基本用例中剩下的部分通常并不完整,需要和包含的部分結合才有意義。這一點反映在關系的方向上:基礎用例依賴于被包含用例,但反之則不然。
包含關系允許用例的分層組合以及重用。
第二個用例-轉賬
轉賬用例的基本路徑如下:
顯示待機畫面檢測用戶插入銀行卡,執(zhí)行進卡動作顯示語言選擇畫面等待并處理用戶選擇語言提款機顯示用戶認證畫面等待用戶輸入密碼并按下確定按鈕顯示該銀行卡類型的有效服務根據(jù)用戶選擇結果進入轉賬畫面接受用戶輸入的轉賬對象賬號進入轉賬額輸入畫面接受用戶輸入的轉賬額與銀行系統(tǒng)服務器通信,執(zhí)行轉賬命令顯示是否需要其他服務畫面用戶選擇取卡,執(zhí)行出卡動作,并提示客戶取卡檢測用戶取卡后顯示待機畫面
再看一下取款用例的基本路徑:
顯示待機畫面檢測用戶插入銀行卡,執(zhí)行進卡動作顯示語言選擇畫面等待并處理用戶選擇語言提款機顯示用戶認證畫面等待用戶輸入密碼并按下確定按鈕顯示該銀行卡類型的有效服務根據(jù)用戶選擇結果進入取款額輸入畫面接受用戶輸入的取款額與銀行系統(tǒng)服務器通信,執(zhí)行取款命令進入處理中畫面,同時將紙幣搬運到出鈔口打開出鈔口擋板等待用戶取走鈔票關閉出鈔口擋板顯示是否需要其他服務畫面如果用戶選擇取卡,執(zhí)行出卡動作,并提示客戶取卡檢測用戶取卡后顯示待機畫面
可以看到轉賬的用例和前一篇文章中的取款用例有很多相似的地方,我們可以將它們分別提取出來:
待機顯示:
顯示待機畫面檢測用戶插入銀行卡,執(zhí)行進卡動作
選擇語言:
顯示語言選擇畫面等待并處理用戶選擇語言
用戶認證:
顯示用戶認證畫面等待用戶輸入密碼并按下確定按鈕
選擇服務:
顯示該銀行卡類型的有效服務等待用戶輸入
輸入賬號:
進入轉賬畫面接受用戶輸入的轉賬對象賬號
輸入金額:
進入轉賬額輸入畫面接受用戶輸入的轉賬額
執(zhí)行轉賬動作
與銀行系統(tǒng)服務器通信,執(zhí)行轉賬命令詢問其他服務
顯示是否需要其他服務畫面接受用戶輸入
退卡
執(zhí)行出卡動作,并提示客戶取卡用例圖中的包含關系
可以看到我們將一個轉賬用例分解為九個小的用例,而這里的取款用例和九個用例之間的關系就是包含關系也就是說:轉賬用例包含九個小用例。這種說法在EA的用例圖中,使用下面的圖表來表示包含關系:

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

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

可以看到,除了綠色的執(zhí)行去狂動作之外,所有的被包含用例都是在轉賬用例中出現(xiàn)過的。
還有一點需要注意的是,為了保證每個用例的完整性和通用性,我們對部分用例的內容進行了微調。這種微調在用例建模過程中是很常見的。
作者著作介紹
《實戰(zhàn)Python設計模式》是作者去年3月份出版的技術書籍,該書利用Python 的標準GUI 工具包tkinter,通過可執(zhí)行的示例對23 個設計模式逐個進行說明。這樣一方面可以使讀者了解真實的軟件開發(fā)工作中每個設計模式的運用場景和想要解決的問題;另一方面通過對這些問題的解決過程進行說明,讓讀者明白在編寫代碼時如何判斷使用設計模式的利弊,并合理運用設計模式。

對設計模式感興趣而且希望隨學隨用的讀者通過本書可以快速跨越從理解到運用的門檻;希望學習Python GUI 編程的讀者可以將本書中的示例作為設計和開發(fā)的參考;使用Python 語言進行圖像分析、數(shù)據(jù)處理工作的讀者可以直接以本書中的示例為基礎,迅速構建自己的系統(tǒng)架構。
覺得本文有幫助?請分享給更多人。
關注微信公眾號【面向對象思考】輕松學習每一天!
面向對象開發(fā),面向對象思考!
