2

私は駐車場の例に取り組んでおり、設計時にいくつかの仮定をしました。

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

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

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

車両が到着すると、上記の値の1つを減らし(つまり、利用可能なXの場所のうち、ユーザーが1つを選択してそこに駐車します)、車両が出ると、対応する値を増やします。(要するに、駐車場は誰にも割り当てられておらず、車両はそこにある適格な場所と公園の1つに行くだけです)

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

3)parkingSpaceオブジェクトの必要性を想定して、4_wheeler、2_wheeler、障害者は列挙型、または完全に別のクラスである必要があります。
その列挙型の場合、findEmptySlot(parkingSpace_type);を使用できます。
それらが完全に別個のクラスであり、ParkingLotにメソッドfindEmptySlot()がある場合。
適切なスロットを取得するにはどうすればよいですか?

パーキングメーターは、車両の開始時刻と終了時刻を設定する責任がありますか?

複数の金額がある場合、1時間-20ドル、2時間-30ドル、3時間-40ドル、5時間-50ドル
は、ParkingMeterクラスのこれらの部分を使用するか、別のクラス「ParkingPrice」に含めるのが適切です。

4

1 に答える 1

3

わかった、

  1. 質問の意味がよくわかりませんでしたが、実際には配列ParkingSpaceオブジェクトを使用して公園内のスペースを記述していました。
  2. 時間は車両ごとなので、時間は車両に設定する必要があります。
  3. それぞれに異なるクラスを使用し、それぞれが抽象クラスを拡張する必要がありますVehicle。これにより、各車両タイプの共通および固有の属性を柔軟に使用できます (たとえば、すべての車両のシリアル番号ですが、ドアがあるのは 4 輪車だけです)。空いている駐車スペースを見つける方法については、各ParkingSpaceオブジェクトに$takenByプロパティがあり、そこにある車両オブジェクトのインスタンスを保持します。デフォルトは です。その後、クラスnull内のスペースの配列を反復処理し、 を含むものを見つけます。ParkingLot$space->takenBy == null
于 2012-02-26T15:06:48.617 に答える