1.
交通燈管理系統圖:
2.預備知識:
(1)「誰擁有資料那麼運算元據的方法就屬於誰」:
如,人在黑板上畫圓,存在三個物件,即人、黑板和圓,但是畫圓的方法drawcircle()
屬於誰呢,畫圓需要半徑和圓心,半徑和圓心屬於圓,所以
drawcircle()
就屬於圓;
如,人剎車,存在人和車兩個物件,那麼剎車方法屬於誰呢?
剎車是靠
剎車片與
剎車鼓之間的激烈磨擦來完成的
,而剎車片和剎車鼓屬於車上的東西,那麼剎車的方法應該屬於車,人只是乙個驅動力而已;
3.分析:(1)
road
的設計:
成員變數:路的名稱以及路上的車(由於車只涉及到了名稱,所以用乙個泛型實際型別引數為string
的arraylist
集合代表路上的所有車)
(2
)lamp
的設計:
型別:由於每個十字路口的燈是固定數量的,所以lamp
適合使用列舉;
列舉元素:在現實生活中每個路口有八個燈,四個右拐角是不需要燈的,但是為了程式設計方便,假定在四個拐角有四個常亮的燈,所以乙個路口總共有12
個燈;由於相反方向的燈的狀態一致,所以把燈分為三組,一組是「主控燈」,即受控制器控制的燈,一組是「隨控燈」,即受相反方向的主控燈控制的燈,最後一組是「長綠燈」,即四個拐角的燈;主控燈需要設定自己的狀態,相反方向的燈,以及下乙個燈;而隨控燈只需要設定當前狀態,自己相反方向的燈;長綠燈只需要設定自己的狀態為綠即可;
構造方法:需要接受三個引數,引數個數以及型別和成員變數對應;
成員變數:燈的狀態(紅和綠,不考慮黃),相反方向的燈,下乙個燈;
成員方法:讓燈變亮的方法,方法控制當前的主控燈變亮,同時讓隨控燈變亮;讓燈變紅的方法,方法控制當前的主控燈變紅,同時讓主控燈相反方向的隨控燈變紅,然後在讓下乙個燈變綠(下乙個燈的相反方向的燈也同時變綠); (3
)lampcontroller
的設計:
有乙個成員變數,記住當前亮的燈;
在構造方法內部啟動乙個定時器,每隔一定時間呼叫當前燈變紅的方法來讓當前燈和相反方向的變紅並且讓當前燈的下乙個燈變綠;
4.其它知識(用物件導向的思想分析下面的話):
(1)「兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材做成椅子」
knife knife = knifefactory.createknife(new stone());
material material = knife.cut(new tree());
chair chair = chai***ctory.createchair(meterial);
(2)「球從一根繩子的一段移動到了另一端」
m :
public class rope
public float getnextpoint(float currentpoint){
currentpoint=currentpoint+0.1f;
return (currentpoint>endpoint||currentpoint
交通燈管理系統
銀行業務排程系統模擬銀行排程系統邏輯。需求 銀行內有6個業務視窗,1 4為普通視窗,5為快速視窗,6為vip視窗。有三種型別客戶 vip客戶,快速客戶 交水電費類業務 普通客戶。一部隨機生成各種型別的客戶,概率比例為 vip客戶 快速客戶 普通客戶 1 3 6。客戶辦理用時設定最少時間。各型別客戶在...
交通燈管理系統
需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下 1.非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2.訊號燈忽略黃燈,只考慮紅燈和綠燈。3.應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈...
交通燈管理系統
1 非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2 訊號燈忽略黃燈,只考慮綠燈和紅燈。3 應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制 4 具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯...