【问题标题】:Parking Lot, OOP Design - Custom Design [closed]停车场,OOP 设计 - 定制设计 [关闭]
【发布时间】:2012-03-16 06:45:28
【问题描述】:

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

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

1) 如果系统未分配停车位,即用户刚刚进入 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 将负责设置车辆的开始、结束时间,对吗?

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

【问题讨论】:

    标签: oop system-design


    【解决方案1】:

    好的,

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

    【讨论】:

    • 我已经编辑了问题,为第一部分添加了更多信息。第2个和第3个都很好。请查看第一部分。
    • 所以你问是否应该创建一个 Space 类或只是减少变量。我说保留一个空格数组(或每个空间类型的数组)。它允许灵活地检测哪辆车在哪辆车上,甚至可以参考实际的汽车持有空间(根据我的第三个答案)。
    • 谢谢.. 我在原帖末尾添加了额外的帖子,你能看看吗?
    • 问题,每个车位是否有收费表?还是每手?
    • 假设一个全球/单一停车咪表为很多,假设安装成本。
    猜你喜欢
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2011-12-07
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多