實例分析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】