2

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

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

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、handicapped 应该是一个枚举类型,还是一个单独的类。
如果是枚举,我们可以使用 findEmptySlot(parkingSpace_type);
如果它们完全是单独的类,并且 ParkingLot 有一个方法 findEmptySlot();
我们如何才能获得合适的 Slot?

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

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

4

1 回答 1

3

好的,

  1. 我并没有真正理解这个问题,但我确实会使用数组ParkingSpace对象来描述公园中的空间。
  2. 由于时间是每辆车,时间应该在车辆上设置。
  3. 我会为每个使用不同的类,并且每个都应该扩展抽象类Vehicle。它允许具有每种车辆类型的共同和独特属性的灵活性(所有车辆的序列号,但只有 4_wheelers 有门)。至于如何找到空的停车位,每个ParkingSpace对象都会有一个$takenBy属性,该属性会保存一个车辆对象的实例占用它。它应该默认为null,然后,您只需遍历ParkingLot类中的空格数组,并找到带有$space->takenBy == null.
于 2012-02-26T15:06:48.617 回答