黑馬程式設計師 交通燈管理系統筆記

2021-06-21 02:03:11 字數 3269 閱讀 2532

----------------------

asp.net+unity開發、

.net培訓、期待與您交流! ----------------------

學習張孝祥老師交通燈管理系統筆記

交通燈管理系統需求:交通燈管理系統的專案需求 非同步隨機生成按照各個路線行駛的車輛。

例如: 由南向而來去往北向的車輛 ---- 直行車輛

由西向而來去往南向的車輛 ---- 右轉車輛

由東向而來去往南向的車輛 ---- 左轉車輛 。。。

訊號燈忽略黃燈,只考慮紅燈和綠燈。 應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制。 具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯相同,不考慮特殊情況下的控制邏輯。

隨機生成車輛時間間隔以及紅綠燈交換時間間隔自定,可以設定。 不要求實現gui,只考慮系統邏輯實現,可通過log方式展現程式執行結果。

誰擁有資料,誰就對外提供操作這些資料的方法。

eg:人在黑板上畫圓。有人,圓兩個物件。畫圓的方法在圓中,因為畫圓涉及的圓的半徑座標這些資料封裝在圓中。

列車司機緊急剎車。有列車,有司機。剎車這個方法是列車裡面的。

售票員統計收穫小票的金額。有人,有小票。統計小票金額這個方法是小票提供的。人只是呼叫小票的gettotalmoney()這個方法

你把門關上了。關門的動作是門自己的。

球從一根繩子的一段移動到了另一端。

球作為乙個類。球裡面有繩子物件,通過建構函式傳遞進來。有當前點的屬性。有移動的方法,是通過呼叫繩子的下一點方法來移動。

繩子也是乙個類。開始點,結束點。有下一點的方法。

這樣子,就可以把繩子和球繫結在一起了。

兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材做成椅子。

石頭怎麼變石刀呢?通過工廠類的方法。

石頭 stone

石刀 stoneknife

stoneknife knife=knifefactory(stone);

樹=knife.cut()//石刀砍樹

木材=木材工廠(樹)

椅子=椅子工廠(木材)

(1)有路,有車,有路燈。

(2)首先路上有車,因為這裡只是模擬一下車的實現路過,所以沒必要把車寫成乙個類,直接用string字串表示即可。因為車是屬於路的資料。所以路這乙個類要有增加車和刪除車的方法(即車開走)。

(3)路上會有燈,一共有12個方向的路線,圖中紅色線實際情況是沒有燈的。但為了簡化**,我們可以假設那紅色路線處有一盞常亮的燈。另外,分析圖可以發現,當s2n的燈亮時,s2n對面的燈n2s也會亮。這樣子我們可以簡化為四組燈了。s2n和n2s為一組,e2w和w2e為一組,s2w和n2e為一組,e2s和w2n為一組。可以將燈定義為列舉類,裡面包含了12盞燈的名字。

燈有是否亮的狀態屬性。

有燈變綠的方法。燈變變紅的方法。

當一燈亮時,和它同一組的燈也會亮(即為綠燈)。當燈滅時(即為紅燈)和它同一組的燈也滅,同時下一組燈亮。

(4)有燈的控制類,來呼叫燈的變亮和變滅的方法,使得燈能迴圈變亮變滅。

(5)設計主類,初始化12條路,初始化燈的控制類。就相當於把路建立出來,車子隨路出來。紅綠燈啟動起來。車子看紅綠燈的情況執行。

1.rode路線作為乙個類。路線上有車(車子用arraylist集合裝起來,用乙個執行緒每隔在1秒到10秒的時間間隔內在集合裡給路線新增一輛車)。當該路線上的路燈變亮的時候,該路線上排第一位的車子可以移動(開另乙個執行緒來判斷該路線路燈是否亮,如果亮,移除車子集合第一輛車子移動)。

2.關鍵:lamp路燈,(由於用到的路燈都是乙個例項所以用列舉)。封裝了12種路線,其中四條路線可以假設是路燈常綠的,因為不需要看紅綠燈就可以過。路燈有變亮方法和變暗方法(相當於變紅燈)。方法一:某燈亮時,對面的燈也亮(注意不能死迴圈)。方法二:某燈暗時,對面的燈也暗,(可以返回下乙個亮的路線,後面可以用到)。

3.路燈的控制類,用執行緒使每隔十秒,當前路線上的路燈亮。之後返回當前路線。使四條路線不斷的迴圈。

4.主類,例項化12條路,例項化路燈控制類。

executors.newsinglethreadexecutor().execute(new runnable()  catch (interruptedexception e) 

vechicles.add(rode.this.name + "_" + i);}}

});

執行緒池的意思和資料庫的連線池意思差不多,都是在乙個執行緒池裡面一下子建立了很多鏈結,你要呼叫執行緒的時候就找池,池會自動幫你選擇乙個執行緒來呼叫的。

這個在(銀行排程有說了,不詳細說了)。

s2n("n2s", "s2w", false), s2w("n2e", "e2w", false), e2w("w2e", "e2s", false), e2s("w2n", "s2n", false),

n2s(null, null, false), n2e(null, null, false), w2e(null, null, false), w2n(null, null, false),

s2e(null, null, true), e2n(null, null, true), n2w(null, null, true), w2s(null, null, true);

private boolean islighted;

private string opposite;

private string next;

private lamp(string opposite, string next, boolean islighted)

1.在實現列舉類的時候,記得初始化每乙個類物件的時候,即初始化

s2n("n2s", "s2w", false)
是,要傳string進來,不能直接傳乙個lamp進來,因為這樣會有編譯錯誤。會出現該物件還沒呼叫就被使用的情況。

2.同時你把下面這兩個屬性定義為lamp型別,引數傳進來是string型別,在建構函式裡面用列舉的方法轉換為lamp,這樣也不對的。雖然編譯沒錯,但是執行的時候,會出現找不到類的情況。原因和上面的原因一樣。

private string opposite; 

private string next;

---------------------- 

asp.net+unity開發、

.net培訓、期待與您交流! ----------------------

黑馬程式設計師 交通燈管理系統

本來的想法 交通燈管理系統,初步有car lamp road三個物件吧,車碰到紅綠燈的時候,各個方向會有12個方向可以行使,這12條路線可以用12個執行緒來表示,要是沒有紅綠燈控制的話,很容易發生事故,根據實際情況,實際只有8條路線受控制,其中能同時執行的只有2條路線,還有4條供車輛隨時向右拐的路線...

黑馬程式設計師 交通燈管理系統

asp.net unity開發 net培訓 期待與您交流!專案需求分析 1 首先,要根據我們生活中的交通模型來建立程式設計模型,並畫出草圖進行分析 根據需求做出草圖如圖 2 在圖中一共有12條線路,所有的右轉路線也即綠色線路為常通線,黃燈不做考慮,為了設計一致每一條線路有紅綠燈,右轉線路上的燈常用,...

黑馬程式設計師 交通燈管理

asp.net android io開發s net培訓 期待與您交流!交通燈管理系統 首先我們應該明確 在路上一共有幾條通路,由幾個燈來控制 這個問題我們的考慮只要是一下這些線路,在十字路口有各個同行的車,而紅綠燈能控制的只有八個路線即 四條直行的 線路,和南往西 北往東 東往南和西往北這些線路,有...