首先,交通燈管理的需求如下:
1、能夠非同步隨機生成按照各個路線行駛的車輛
2、訊號燈忽略黃燈,只考慮紅燈和綠燈
3、應考慮左轉車輛控制訊號燈,右轉車輛不受控制
4、具體訊號燈控制邏輯與現實生活中普通交通燈的控制邏輯相同,不考慮特殊情況下的控制邏輯
注:南北向車輛與東西向車輛交替放行,同方向等待車輛應先放行直行車輛,而後放行左轉車輛
5、每輛車通過路口的時間為1秒
6、不要求實現gui,只考慮系統邏輯實現
通過對需求的分析,可以抽象出以下的概念:
1、東西南北一共是4個方向,其中每個方向駛來的車又分別有左轉、右轉、直行3種前進方向
2、對於正對的兩個方向來說(東正對西,南正對北),可以使用同一盞交通燈來控制
3、對於每個方向來說,需要使用交通燈控制的都只有兩個行進方向:左轉和直行
綜上所述,我們可以得到以下結論
1、在隨機生成車輛時,車輛一共有12條行進路線
它們分別是:s2w(south to west,下同)、s2m、s2e、w2s、w2n、w2e、n2s、n2w、n2e、e2s、e2w、e2n
2、在交通燈控制模型中,就需要實現4盞交通燈的控制邏輯就足夠了
它們分別控制的路線是:s2n,s2w,e2w,e2s
其中,這四盞交通燈亮起的順序應當為:s2n -> s2w -> e2w -> e2s
並且,在前一盞交通燈滅掉之後,後一盞交通燈就需要亮起
需要抽象出來的物件:
在我們這個問題中,我們關注的只是每條路線上車輛的數量,以及這個數量的增減情況
所以,我們只需要建立乙個路線物件
並在路線物件中提供增加車輛和減少車輛的方法就足夠了
至於車以什麼形式來表示並不重要(例如可以用字串)
所以,從這個問題中,我們就可以抽象出以下3個物件:
交通燈類、路線類、交通燈控制類
物件導向設計的兩個基本原則:
1、誰擁有資料,誰就提供對資料進行操作的方法
例如:球從繩子的一端移動到另一端
由於繩子擁有的資料為一端和另一端,所以,繩子就應當提供從一端移動到另一端的方法
由於球擁有的資料為當前所處的位置,所以,球就應當提供設定當前所處的位置的方法
2、如果在對物件操作的過程中,物件的型別發生了轉變,那麼就應當由第三個類來提供對它們進行操作的方法
例如:石頭可以被加工成石刀
由於石頭和石刀分別為兩個不同的物件,所以應當提供乙個石刀加工廠,來提供將石頭變成石刀的方法
交通燈管理系統
銀行業務排程系統模擬銀行排程系統邏輯。需求 銀行內有6個業務視窗,1 4為普通視窗,5為快速視窗,6為vip視窗。有三種型別客戶 vip客戶,快速客戶 交水電費類業務 普通客戶。一部隨機生成各種型別的客戶,概率比例為 vip客戶 快速客戶 普通客戶 1 3 6。客戶辦理用時設定最少時間。各型別客戶在...
交通燈管理系統
需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下 1.非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2.訊號燈忽略黃燈,只考慮紅燈和綠燈。3.應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈...
交通燈管理系統
1 非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2 訊號燈忽略黃燈,只考慮綠燈和紅燈。3 應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制 4 具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯...