需求:
模擬實現十字路口的交通燈管理系統邏輯,具體需求如下:
1.非同步隨機生成按照各個路線行駛的車輛。
例如:由南向而來去往北向的車輛 ----
直行車輛
由西向而來去往南向的車輛 ----
右轉車輛
由東向而來去往南向的車輛 ----
左轉車輛
。。。2.訊號燈忽略黃燈,只考慮紅燈和綠燈。
3.應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制。
4.具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯相同,不考慮特殊情況下的控制邏輯。
注:南北向車輛與東西向車輛交替放行,同方向等待車輛應先放行直行車輛而後放行左轉車輛。
5.每輛車通過路口時間為
1sleep
的方式模擬)。
6.隨機生成車輛時間間隔以及紅綠燈交換時間間隔自定,可以設定。
7.不要求實現
gui,只考慮系統邏輯實現,可通過
log方式展現程式執行結果。
物件導向的分析與設計:
1.車的通行方式:先由南北通向直行,直行以後是南北通向的左轉彎的車輛通行。
接下來是東西方向的直行車輛,直行後是東西通向的左轉彎車輛。
之後再次是南北直行車輛,如此迴圈交替行駛。
2.設想一下有哪些物件:紅綠燈,紅綠燈的控制系統,汽車,路。汽車看到自己所在的路線對應的燈
綠了就穿過路口嗎?不是,還需要看其前面是否有車,該問那個物件呢?該問路,路中存數這車輛的
集合,顯然路上就應該有增加車輛和減少車輛的方法了。回顧題目,我們這裡並不要體現車輛移動的
過程,只是捕捉出車輛穿過路口的過程,也就是捕捉路上減少一輛車的過程,所以,這個車並不需要
單獨設計成乙個物件,用乙個字串表示就可以了。
物件導向設計把握乙個重要的經驗:誰擁有資料,誰就對外提供操作這些資料的方法。在牢牢掌握幾
個典型的案例就可以了:人在黑板上花園,列車司機緊急剎車,售貨員統計收貨小票的金額。
兩塊石頭磨成一把石刀,用石刀把樹砍成木材,用木材做成椅子。實現模擬:
stoneknife = knifefactory.createknife(stone);石頭工廠把石頭變成石刀。
mood = stoneknife.cut(tree);石刀把樹砍成木材
chair = chai***ctory.makechair(mood);椅子工廠把木材做成椅子。
為什麼不把做椅子的方法分配給木材呢?
因為,木材把自己變成椅子後,木材物件就不存在了。把自己變沒了。不科學。
**如下:
road類:
public class road catch (interruptedexception e)
verchicles.add(road.this.name+"_"+i);
}}
});//定時器
executors.newscheduledthreadpool(1).scheduleatfixedrate(
new runnable()}}
},1,
1,timeunit.seconds); }}
lamp類:
public enum lamp ;
//列舉的構造方法必須為私有,
opposite
:與之對應的燈,
next
:下乙個要亮的燈,
lighted
:燈的初始狀態
private lamp(string opposite,string next,boolean lighted)
public boolean islighted()
public void light()
}//此燈變黑的同時,要將下乙個燈點亮。並且返回下乙個燈的物件
nextlamp
,為了方便下一次呼叫此方法。
public lamp blackout()
lamp nextlamp =null;
if(this.next!=null)
return nextlamp;}}
lampcontroller類:
//實現燈的按時亮滅控制
public class lampcontroller
},10,
10,timeunit.seconds);}}
mainclass類:
public class mainclass ;
//建立
12個路物件
for(int i =0;i因為路內部有定時器和建立車輛的執行緒,所以路物件不會馬上被
gc**,
//只有等
1000
輛車都通過後物件才會失效。
new road(directions[i]);
}//建立乙個燈控制器。
new lampcontroller();}}
定時器:
scheduleatfixedrate(runnable command, long initialdelay, long period, timeunit unit)
按照固定的頻率重複一件事
引數:command
:要執行的事務,實現
runnable
介面,和
run方法。
run方法中存放要執行的事務;
引數:initialdelay
:第一次延遲多少時間以後執行
command
事務;引數:period
:以後每次迴圈的週期;
引數:unit
:定義時間單位;
交通燈管理系統
銀行業務排程系統模擬銀行排程系統邏輯。需求 銀行內有6個業務視窗,1 4為普通視窗,5為快速視窗,6為vip視窗。有三種型別客戶 vip客戶,快速客戶 交水電費類業務 普通客戶。一部隨機生成各種型別的客戶,概率比例為 vip客戶 快速客戶 普通客戶 1 3 6。客戶辦理用時設定最少時間。各型別客戶在...
交通燈管理系統
1 非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2 訊號燈忽略黃燈,只考慮綠燈和紅燈。3 應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制 4 具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯...
交通燈管理系統
實現步驟 1,建立乙個lamp類 列舉 用於操作燈.定義12個列舉物件,相當於十二盞燈 每個物件包含三個成員物件,自身燈的狀態,相對的燈的名稱,下乙個燈的名稱 初始各個狀態都為false 定義乙個islight 方法,用於返回燈物件的狀態.定義乙個light 方法,用於將當前燈和相對的燈的狀態變綠 ...