2012-02-26 10 views
1

私は駐車場の例を取り組んでおり、私が設計しているようにいくつかの仮定をしました。駐車場、OOPデザイン - カスタムデザイン

アイテム/オブジェクトに属性を割り当てる際には、いくつか質問があります。

1)駐車スペースがシステムによって割り当てられていない場合(つまり、ユーザーがロットにのみ割り当てられている場合)、適切な場所(自動車/自転車/トラック/障害者)を見つけて駐車します。

私はParkingSpaceオブジェクトは必要ないと思っていますが、代わりに、category_of_parking_spaceのそれぞれにno_of_free_placesの数を保持できます。

駐車スペースが大きいので、3つの変数を維持するだけです。

  • no_of_free_slots_Car
  • no_of_free_slots_Bike
  • no_free_slots_Truck
  • 車が入ってくるときno_free_slots_Handicapped

、私たちは可能なXの場所の意味上記の値(の一つ、利用者を減らします1つを選択し、そこに駐車する)、&車両が出るときに、対応する値を増やします。 (要するに駐車場は誰にも割り当てられていないため、車両は適任の場所の1つに行きます)

2)私たちには1台のグローバルパーキングメーターがあるとします。
- > start_time/end_timeをVehicleの属性にする必要がありますか?
または
- > vehicle_id、start_time、end_timeはParkingMeterの一部です。

3)parkingSpaceオブジェクトの必要性を仮定して、4_wheeler、2_wheeler、handicappedはenum型、または別のクラスであるべきです。
enumの場合、findEmptySlot(parkingSpace_type)を使用できます。
それらが別々のクラスであり、ParkingLotにメソッドfindEmptySlot()がある場合。
どのように適切なスロットを取得できますか?

ParkingMeterは車両のスタート、終了時刻を正しく設定する責任がありますか?

複数の量を持っている場合は、1時間 - 20 $、2時間 - 30 $、3時間 - 40 $、5hr - 50 $
はそれで良いParkingMeterクラスのこれらの部分を持っているか、別のクラス「ParkingPriceにそれらを含めます「

答えて

2

さて、

  1. は、私は本当に質問を理解していなかったが、私は確かに公園でスペースを記述するために、配列ParkingSpaceオブジェクトを使用します。
  2. 車1台あたりの時間であるため、車両に時刻を設定する必要があります。
  3. それぞれ別のクラスを使用し、それぞれ抽象クラスVehicleを拡張する必要があります。これにより、各車種の一般的でユニークな属性(すべての車両のシリアル番号ですが、たとえば4_wheelersのみがドアを持っています)を柔軟に設定できます。空の駐車スペースを見つける方法については、ParkingSpaceの各オブジェクトには$takenByというプロパティがあり、それは車両オブジェクトのインスタンスを保持することになります。これはデフォルトでnullになるはずです。次に、ParkingLotクラスの空白の配列を繰り返し処理し、$space->takenBy == nullという文字列を探します。
+0

最初の部分の追加情報を追加して質問を編集しました。 2番目と3番目のものは問題ありません。第1部を見てください。 – sravanreddy001

+1

これで、Spaceクラスを作成するか変数を減らすかを尋ねています。私はスペースの配列(または各スペースタイプの配列)を保つと言う。それは、どの車が存在しているかを検出するという点で柔軟性を持ち、スペースを保持している実際の車への参照さえも(私の3番目の答えに従って)可能にします。 –

+0

ありがとうございました..元の投稿の最後に追加の投稿を追加しました。 – sravanreddy001

関連する問題