深入淺出UML類圖(五)
例項分析3——售票機控制程式
某運輸公司決定為新的售票機開發車票銷售的控制軟體。圖I給出了售票機的皮膚示意圖以及相關的控制部件。
圖I 售票機皮膚示意圖
售票機相關部件的作用如下所述:
(1) 目的地鍵盤用來輸入行程目的地的程式碼(例如,200表示總站)。
(2) 乘客可以通過車票鍵盤選擇車票種類(單程票、多次往返票和座席種類)。
(3) 繼續/取消鍵盤上的取消按鈕用於取消購票過程,繼續按鈕允許乘客連續購買多張票。
(4) 螢幕顯示所有的系統輸出和使用者提示資訊。
(5) 插卡口接受MCard(現金卡),硬幣口和紙幣槽接受現金。
(6) 印表機用於輸出車票。
(7) 所有部件均可實現自檢並恢復到初始狀態。
現採用物件導向方法開發該系統,使用UML進行建模,繪製該系統的初始類圖。
參考解決方案:
參考類圖如下:
類說明:
類 名 | 說 明 |
Component | 抽象部件類,所有部件類的父類 |
Keyboard | 抽象鍵盤類 |
ActionKeyboard | 繼續/取消鍵盤類 |
TicketKindKeyboard | 車票種類鍵盤類 |
DestinationKeyboard | 目的地鍵盤類 |
Screen | 螢幕類 |
CardDriver | 卡驅動器類 |
CashSlot | 現金(硬幣/紙幣)槽類 |
Printer | 印表機類 |
TicketSoldSystem | 售票系統類 |
方法說明:
方法名 | 說 明 |
Component 的init()方法 | 初始化部件 |
Component 的doSeltTest()方法 | 自檢 |
Keyboard的getSelectedKey()方法 | 獲取按鍵值 |
ActionKeyboard的getAction()方法 | 繼續/取消鍵盤事件處理 |
TicketKindKeyboard的getTicketKind()方法 | 車票種類鍵盤事件處理 |
DestinationKeyboard的getDestinationCode()方法 | 目的地鍵盤事件處理 |
Screen的showText()方法 | 顯示資訊 |
CardDriver的getCredit()方法 | 獲取金額 |
CardDriver的debitFare()方法 | 更新卡餘額 |
CardDriver的ejectMCard()方法 | 退卡 |
CashSlot的getCredit()方法 | 獲取金額 |
Printer的printTicket()方法 | 列印車票 |
Printer的ejectTicket()方法 | 出票 |
TicketSoldSystem的verifyCredit()方法 | 驗證金額 |
TicketSoldSystem的calculateFare()方法 | 計算費用 |
【作者:劉偉 http://blog.csdn.net/lovelion】
相關文章
- 深入淺出UML類圖
- 深入淺出UML類圖(三)
- 深入淺出UML類圖(二)
- 深入淺出UML類圖(一)
- 五分鐘看懂UML類圖與類的關係詳解
- Tomcat深入淺出——Filter與Listener(五)TomcatFilter
- UML類圖詳解
- UML類圖總結
- UML類圖關係
- 【UML之物件圖VS類圖】物件
- 前端筆記之React(五)Redux深入淺出前端筆記ReactRedux
- 深入淺出的webpack構建工具---PostCss(五)WebCSS
- 深入淺出FE(十四)深入淺出websocketWeb
- UML 類圖及關係
- UML基礎系列:類圖
- 看懂UML類圖和時序圖時序圖
- UML類圖--類之間的關係
- 設計模式之UML類圖設計模式
- 全面認識UML類圖元素
- UML類圖(上):類、繼承和實現繼承
- UML類圖與類的關係詳解
- 深入淺出——MVCMVC
- 深入淺出mongooseGo
- HTTP深入淺出HTTP
- 深入淺出IO
- 深入淺出 RabbitMQMQ
- 深入淺出PromisePromise
- ArrayList 深入淺出
- mysqldump 深入淺出MySql
- 深入淺出decorator
- 深入淺出 ZooKeeper
- 機器學習深入淺出機器學習
- 深入淺出HTTPHTTP
- http 深入淺出HTTP
- 深入淺出 ARCore
- 深入淺出 synchronizedsynchronized
- 深入淺出WebpackWeb
- 深入淺出 blockBloC