1. 程式人生 > >黑馬程式設計師_7K面試題_交通燈管理系統

黑馬程式設計師_7K面試題_交通燈管理系統

-面向物件分析設計經驗:誰用於資料,誰就對外提供操作這些資料的方法。

典型案例:

     人在黑板上畫圓。

分析:

共有三個物件:人、黑板、圓。動作:畫

畫圓需要圓心和半徑,圓心和半徑都是圓的屬性上,圓擁有資料,所以圓物件提供畫圓的方法

圓在黑板上,黑板擁有資料,搜易對外提供訪問圓的方法。

列車司機緊急剎車:

分析:

共有兩個物件:車、司機。動作:剎車

剎車需要摩擦車輪使車輪停轉,抱死,車輪和抱死系統都在車上,車擁有資料,所以車物件提供剎車的方法。

交通燈管理系統:

需求:交通燈燈需要紅、綠,需要紅的時候下一個燈綠,有間隔時間控制等轉換。車在路口上有左轉、右轉、直行,通過路口,有通過路口的時間。

物件:

交通燈:有紅綠、下一個燈的資料,考慮現實情況,相反方向的燈一樣,所以還有相反方向的燈的資料。

控制系統:間隔時間控制燈轉換,控制系統中有燈資料,以及轉換的時間。

路:左轉、右轉、直行。由於車沒有自己的資料。只有通過路口的時間,所以把通過路口的時間放在路物件上,路上有車資料,綠燈時間隔一秒通過前面的第一輛車

設計:

路:設計一個表示路線的類:Road

路口的一個方向,有三個路線(左轉、右轉、前行),共有四個路口,所以有十二條路線,十二個Road物件。

每條路線都有車輛,用集合儲存,隨機往路線上增加車輛,新增到集合中,當本路線的燈為綠時每秒通過一輛車,從集合中刪除。

所以

Road類中要定義燈的物件、一個集合用於存放車輛、隨機增加車輛的功能、每秒判斷一次等是否為綠,為綠時從集合中刪除一輛車

交通燈:設計一個表示交通燈的類:Lamp

每個交通燈都有兩個狀態:亮(綠)或不亮(紅),需要有變亮的方法,下一個燈的資料,當前燈變黑下一個燈變亮的方法,並且能返回當前狀態。

總共有十二條路線,每條路線有一個燈,所以有十二個燈,右轉的路線不受等的控制,但為了採用統一的處理方式,設定四個右轉的燈,設定為常亮(綠)。

除了右轉的四個燈外,相反方向的路線燈狀態是一樣的,所以其他八個燈兩兩成對,可以分為四組,在程式設計處理時,只要從這4組中各取出一個燈,對這4個燈依次輪詢變亮,與這

4個燈方向對應的燈則隨之一同變化。所以需要一個變數記錄相反方向的燈。

管理燈狀態的系統:設計LampController一個類表示:類裡有定時讓當前綠燈變紅的方法。