思考題答案
前兩個問題隻有讀者自己知道,是以省略。
用什麼方法才能發現這些問題呢?
繼續關注本公衆号,并且勤加練習。<-你可以說是廣告,管他呢。
應該如何解決這些問題呢?
- 兩個字:分解
- 四個字:面向對象
解決軟體遇到的問題,有一個最常用的方法就是對系統進行分解。好聽的說法叫重構。
識别交通信号系統中的類
直接看結果
下面對于類圖中出現的類進行簡單的介紹
TrafficSystem:交通信号系統全體,具體系統中使用該類的派生類。
InputDevice:輸入裝置的基類。
PushButton:操作按鈕。
TrafficLightEngine:信号系統整體執行邏輯,具體系統中使用該類的派生類。
TrafficLight:信号燈基類。
PedestrainSpeaker:嚴格講這個不是信号燈,而是行人通行時播放提示音的裝置。
RedestrainLight:行人專用信号燈。允許同行時綠燈,最後階段綠燈閃爍,禁止同行是紅燈。
StandardVehicleLight:車輛專用信号燈。允許同行時綠燈,最後階段綠燈閃爍,安全停止時黃燈,禁止通行狀态時紅燈。
DigitalVehicleLight:車輛專用信号燈。允許同行時綠燈,最後階段有數字表示剩餘時間,安全停止時黃燈,禁止通行狀态時紅燈。
建構交通信号系統
以下是舉例用系統的對象圖
例子系統構成如下包括:系統停止按鈕,橫穿馬路請求按鈕,行人通行音樂提示裝置,行人信号燈,車輛信号等。
接下來的文章會針對這個交通系統中的每一個要素的狀态機模組化。敬請期待。
一點感想
對于系統結構的分解,不同的設計者會有不同的視角,不同的觀點,是以就會有不同的模型。但是好的設計會有一些共同點,其中的一個特點應該就是分解的過程就像庖丁解牛。我想庖丁解牛至少需要兩個要素:熟悉,熟練。熟悉就是要對牛的結構要熟悉,熟練就是運用工具要熟練。
希望每一位讀者都能像庖丁解牛一樣對系統進行分解。
閱讀更多更新文章,請掃描下面二維碼,關注微信公衆号【面向對象思考】