首頁 > 運動
EA&UML日拱一卒 用例圖開篇
由 面向物件思考 發表于 運動2023-01-31
簡介第一個用例假設我們在為自動提款機的取款功能建模,這個功能的概要如下:顯示待機畫面檢測使用者插入銀行卡,執行進卡動作顯示語言選擇畫面等待並處理使用者選擇語言提款機顯示使用者認證畫面等待使用者輸入密碼並按下確定按鈕如果密碼錯誤,提示重新輸入密碼
而的結構是什麼結構
建立用例圖
在Package節點上調出上下文選單。
選擇【Add Diagram。。。】
選擇【UML Behavioral】分類,選擇【Use Case】圖面型別。
上圖中紅框部分就是用例圖常用的圖形要素。
用例圖基本要素
用例
用例是捕獲建模主體需求的一種手段,一般用來描述主體應該做什麼。作為用例描述物件的主體可以與一個或多個參與者之間進行協作。用例定義主體的行為而不必考慮其內部結構。這些行為涉及之間的相互作用參與者和主體,可能會導致主體狀態的變化以及與其環境的通訊。一個用例可以包括其基本行為的可能變化,包括異常行為和錯誤處理。
參與者
參與者是可能與主題發生互動的使用者和任何其他系統。
邊界
邊界用於表示作為建模物件的主體的範圍。所有的參與者都應該處於邊界外側。
第一個用例
假設我們在為自動提款機的取款功能建模,這個功能的概要如下:
顯示待機畫面檢測使用者插入銀行卡,執行進卡動作顯示語言選擇畫面等待並處理使用者選擇語言提款機顯示使用者認證畫面等待使用者輸入密碼並按下確定按鈕如果密碼錯誤,提示重新輸入密碼如果密碼正確,顯示該銀行卡型別的有效服務根據使用者選擇結果進入取款額輸入畫面接受使用者輸入的取款額與銀行系統伺服器通訊,如果餘額不足,提示使用者重新輸入如果餘額充足,進入處理中畫面,同時將紙幣搬運到出鈔口打開出鈔口擋板等待使用者取走鈔票關閉出鈔口擋板顯示是否需要其他服務畫面如果使用者選擇列印憑條,進入列印中畫面,完成後返回是否需要其他服務畫面如果使用者選擇其他服務,進入對應服務畫面如果使用者選擇取卡,執行出卡動作,並提示客戶取卡檢測使用者取卡後顯示待機畫面超過30秒沒有取卡,執行吞卡動作
由於我們是在對提款機建模,因此這段指令碼每一句都是提款機視角。這點需要注意。
新增邊界
選擇工具條中的
圖示之後,在繪圖區雙擊滑鼠。
輸入建模物件的名稱:ATM。
這個矩形框就是ATM的邊界。
新增用例
選擇工具條中的
並在繪圖區雙擊滑鼠之後,選擇【General】分頁,輸入用用例名:取款。
選擇Scenarios分頁之後,首先輸入如下基本路徑。
顯示待機畫面檢測使用者插入銀行卡,執行進卡動作顯示語言選擇畫面等待並處理使用者選擇語言提款機顯示使用者認證畫面等待使用者輸入密碼並按下確定按鈕顯示該銀行卡型別的有效服務根據使用者選擇結果進入取款額輸入畫面接受使用者輸入的取款額與銀行系統伺服器通訊,執行取款命令進入處理中畫面,同時將紙幣搬運到出鈔口打開出鈔口擋板等待使用者取走鈔票關閉出鈔口擋板顯示是否需要其他服務畫面如果使用者選擇列印憑條,進入列印中畫面,完成後返回是否需要其他服務畫面如果使用者選擇取卡,執行出卡動作,並提示客戶取卡檢測使用者取卡後顯示待機畫面
和基本路徑相比,這段描述去掉的分支和異常處理。結果如下:
按照相同的方式,輸入替代路徑和異常路徑:
名稱
型別
內容
密碼錯誤
Exception
如果密碼錯誤,提示重新輸入密碼
餘額不足
Execption
如果餘額不足,返回取款額輸入畫面
列印憑條
Alternate
如果使用者選擇列印憑條,進入列印中畫面,完成後返回是否需要其他服務畫面
辦理其他業務
Alternate
如果使用者選擇其他服務,轉入服務選擇畫面
超時吞卡
Execption
超過30秒沒有取卡,執行吞卡動作
指令碼輸入結果如下:
用例新增完成後畫面的樣子。
新增參與者
選擇
圖示之後在畫面中ATM邊界之外適當的位置新增兩個參與者:客戶和銀行系統。
新增使用關係
選擇
圖示之後分別在客戶和取款用例之間,取款用例和銀行系統之間連線。
完成!
作者著作介紹
《實戰Python設計模式》是作者去年3月份出版的技術書籍,該書利用Python 的標準GUI 工具包tkinter,透過可執行的示例對23 個設計模式逐個進行說明。這樣一方面可以使讀者瞭解真實的軟體開發工作中每個設計模式的運用場景和想要解決的問題;另一方面透過對這些問題的解決過程進行說明,讓讀者明白在編寫程式碼時如何判斷使用設計模式的利弊,併合理運用設計模式。
對設計模式感興趣而且希望隨學隨用的讀者透過本書可以快速跨越從理解到運用的門檻;希望學習Python GUI 程式設計的讀者可以將本書中的示例作為設計和開發的參考;使用Python 語言進行影象分析、資料處理工作的讀者可以直接以本書中的示例為基礎,迅速構建自己的系統架構。
覺得本文有幫助?請分享給更多人。
關注微信公眾號【面向物件思考】輕鬆學習每一天!
面向物件開發,面向物件思考!