我正在研究停车场的例子,在设计时做了一些假设。

我在为项目/对象分配属性时有几个问题。

1) 如果系统未分配停车位,即用户刚刚进入停车场,找到合适的位置(汽车/自行车/卡车/残疾人)并停放他的汽车。

我认为我不需要 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 的属性吗?
或者
--> 车辆 ID、开始时间、结束时间是 ParkingMeter 的一部分。

3)假设需要parkingSpace对象,4_wheeler、2_wheeler、handicapped应该是一个枚举类型,还是一个单独的类。
如果是枚举,我们可以使用 findEmptySlot(parkingSpace_type);
如果它们完全是单独的类,并且 ParkingLot 有一个方法 findEmptySlot();
怎样才能得到合适的Slot呢?

ParkingMeter 会负责设置车辆的开始、结束时间,对吧?

如果有多个金额,1小时 - 20$、2小时 - 30$、3小时 - 40$、5小时 - 50$
将这些部分包含在 ParkingMeter 类中好还是将它们包含在单独的类“ParkingPrice”中好

有帮助吗?

解决方案

好的,

  1. 我不太明白这个问题,但我确实会使用数组 ParkingSpace 描述公园空间的物体。
  2. 由于时间是按车辆计算的,因此应在车辆上设置时间。
  3. 我会为每个类使用不同的类,并且每个类都应该扩展抽象类 Vehicle. 。它允许灵活地处理每种车辆类型的共同和独特属性(所有车辆的序列号,但例如只有四轮车有门)。至于如何找到空车位,各 ParkingSpace 对象会有一个 $takenBy 属性,该属性将保存车辆对象的实例。它应该默认为 null, ,然后,您只需迭代您的空间数组 ParkingLot 类,并找到具有 $space->takenBy == null.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top