2012-02-26 124 views
1

我正在研究停車場示例,並且在設計時做出了一些假設。停車場,OOP設計 - 定製設計

我有幾個問題的屬性分配給項目/對象。 1)如果parkingSpace不是由系統分配的,即進入Lot的用戶找到適當的地方(汽車/自行車/卡車/殘疾人)並停放他的汽車。

我想我不需要ParkingSpace對象,但是我可以爲每個category_of_parking_space保留一個no_of_free_places計數。

由於停車位很大,我們只保留三個變量。

  • no_of_free_slots_Car
  • no_of_free_slots_Bike
  • no_free_slots_Truck
  • no_free_slots_Handicapped
當車輛進來

,我們只是減少上述值之一(這意味着,可用X的地方,用戶選擇一個在那裏停車),&當車輛熄滅時,我們增加相應的值。 (總之,停車場不是任何人分配的,車輛只是去那裏有資格的地方&)

2)假設我們有一個單一的全球停車計時器。
- > start_time/end_time應該是Vehicle的屬性嗎?

- > vehicle_id,start_time,end_time是ParkingMeter的一部分。 3)假設需要parkingSpace對象,4_wheeler,2_wheeler,殘疾人應該是一個枚舉類型,或者是一個單獨的類。
如果它的枚舉,我們可以使用findEmptySlot(parkingSpace_type);
如果它們完全是單獨的類,並且ParkingLot有一個方法findEmptySlot();
我們如何獲得適當的插槽?

ParkingMeter將負責設置車輛的開始和結束時間是否正確?

如果有多個量,1個小時 - $ 20,2個小時 - $ 30,3個小時 - $ 40,5小時 - 50 $
它的好處是有ParkingMeter類的這些部分,或者將它們包含在一個單獨的類「ParkingPrice 「

回答

2

好吧,

  1. 我真的不明白的問題,但我確實會使用一個數組ParkingSpace對象來描述在公園的空間。
  2. 由於時間是每輛車,時間應在車輛上設置。
  3. 我會爲每個類使用不同的類,每個類都應該擴展抽象類Vehicle。它允許每種車型的通用和獨特屬性具有靈活性(所有車輛的序列號,但只有4_車纔有門)。至於如何找到空的停車位,每個ParkingSpace對象都會有一個$takenBy屬性,這會保持車輛對象的一個​​實例佔據它。它應該默認爲null,然後,只需遍歷ParkingLot類中的空格數組,然後找到$space->takenBy == null
+0

我編輯了這個問題,增加了第一部分的更多信息。 第二和第三個很好。請看第一部分。 – sravanreddy001 2012-02-26 16:41:39

+1

所以你問你應該做一個空間類還是減少變量。我說保留一個空格數組(或每個空間類型的數組)。它可以靈活地檢測哪輛車在哪個位置,甚至參考持有該車位的實際車輛(根據我的第三個答案)。 – 2012-02-26 17:20:05

+0

謝謝..我已經添加了額外的帖子,以原始帖子的結尾,你可以看看嗎? – sravanreddy001 2012-02-26 23:21:15