從一道面試題講起. 分析
第一點: 顯然需要有park,floor,place三個類
第二點: 每個車位(place)應有乙個in和out方法監控車輛, 同時應該有乙個狀態.
第三點: 顯示空餘車輛的數量, 這個行為應該由停車場park來實現,並且是通過每個floor的彙總
第四點: 攝像頭class輸入的是乙個車輛,記錄則由park進行記錄,記錄後要有地方進行儲存,因此park中要有個carlist屬性進行記錄.
第五點: 顯然我們還需要新增乙個顯示器screen類.需要顯示車牌號和停車時長.因此需要獲取車輛的車牌資訊以及進入時間,再通過當前時間減去進入時間獲得獲得停車時長.
主要的車輛的in和out是由park進行彙總的,park的in方法裡面可能有很多步驟(攝像頭拍攝,顯示器輸出等)
可畫出uml類圖如下
最終可寫出**如下;
//停車場
class park
this.camera = new camera()
this.screen = new screen()
this.carlist = {}
}in(car)
out(car)
emptynum()
return num
}}//層類
class floor
}emptynum()
}return num
}}//車位類
class place
in()
out()
}//攝像頭類
class camera
shot(car)
}}//顯示器類
class screen
showtime(car) 停車時長為$`)
}}//車輛
class car
}const park = new park(3,100)
// 初始化車輛
const car1 = new car('a1')
const car2 = new car('a2')
const car3 = new car('a3')
console.log('第一輛車進入')
console.log(park.emptynum())
park.in(car1)
console.log('第二輛車進入')
console.log(park.emptynum())
park.in(car2)
settimeout(()=> ,1000);
重新認識物件導向和物件導向的設計原則
理解隔離變化 從巨集觀層面來看,物件導向的構建方式更能適應軟體的變化,能將變化所帶來的影響降到最小 各司其職 從微觀層面來看,物件導向的方式更強調各個類的 責任 由於需求變化導致的新增型別不應該影響原來型別的實現 是所謂各負其責 物件是什麼?從語言實現層面來看,物件封裝了 和資料 從規格層面講,物件...
重新認識container
我還清楚的記得,第一次從 那兒聽說container這個詞 結果他給我解釋了半天還是似懂非懂的。今天,偷閒翻了下posa4,發現裡面對container的解釋特別清楚。粗略的理解下來是,為了分離關注點,而實現的對系統資源的封裝。豁然開朗的發現,os就是應用程式的container。突發奇想的,開發乙...
重新認識測試
以前總覺得測試是軟體開發的邊緣職位,開發人員才是軟體生命週期的核心人員。隨著對網際網路公司的了解,逐步了解到測試的重要性。以bat為例,三家公司均設定了測試開發工程師崗位,該崗位的主要職責就是編寫自動化測試案例,通過對 的邏輯進行分析,設計出能夠覆蓋大部分 的測試用例。如阿里的測試開發工程師的崗位描...