私は駐車場の例に取り組んでおり、設計時にいくつかの仮定をしました。
アイテム/オブジェクトに属性を割り当てる際にいくつか質問があります。
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」に含めるのが適切です。