面向对象的停车场设计

时间:2014-09-25 00:04:51

标签: class oop object inheritance

在为Interviews学习时,我想到了这个问题。 我打算设计一个停车场,我假设以下事项:

  1. 它有多个级别。每个级别有2行。
  2. 车型可以小巧紧凑。
  3. 某一级别的每一行都有多个停车位。
  4. 每个停车位都有红/绿灯指示灯(红色 - 无空间,绿色 - 自由空间)
  5. 此外,每个停车位的尺寸都小巧紧凑。
  6. 6(可选)。还想加残疾人的情况。

    这些是我可以提出的一些假设(不确定它们是否足够或我需要更多)。

    我正在考虑以车辆进入停车场入口的方式设计系统。

    应该向他提供有关最近空置点的信息(例如 - 第3级,第2行,第10点)

    我想知道如何设计这样的系统?我见过许多其他设计,但我猜没有达到这个目的。

1 个答案:

答案 0 :(得分:2)

不确定你想通过第6点实现什么,但通过通常的抽象,继承和多态原则,通过OO设计实现其余的非常简单。

你可以拥有一个名为interface的{​​{1}},它有一个布尔方法AvailabilityIndicator,代表指示灯(如果isAvailable()是{{1,则灯泡会显示红色如果isAvailable(),则为绿色。

您可以拥有一个名为false的{​​{1}},它会实现true。 这可能包含水平,行和点数。

您可以有3个abstract classParkingSlotAvailabilityIndicator分组LargeParkingSlot。 (并不是说你的功能确实需要这个,除非不同的停车位有你想要建模的不同行为或数据,但是因为你提到你想要一个OO方法我提到它,否则{{1}中的一个简单的CompactParkingSlot参数会做的。)

然后问题是车辆什么时候到达,检查它需要什么类型的插槽并查找哪些是匹配的可用插槽。您可能希望将它们放在SmallParkingSlot数据结构中,该结构将每个插槽类型映射到可用的列表类型,以便在获取一个时将其删除并放入单独的ParkingSlot列表中,以便快速在车辆到达时查找slotType个插槽。