Skip to main content
 首页 » 编程设计

oop之亚马逊面试问题: Design an OO parking lot

2024年02月24日21jpfss

设计一个面向对象的 parking 场。它有什么类和功能。应该说,满了,空了,还可以找到代客泊车的地方。该 parking 场有 3 种不同类型的 parking 位:普通 parking 位、残疾人 parking 位和紧凑型 parking 位。

谢谢!

请您参考如下方法:

这是让齿轮转动的快速入门...

ParkingLot 是一个类。

ParkingSpace 是一个类。

parking 位有一个入口。

入口有一个位置,或更具体地说,是距入口的距离。

ParkingLotSign 是一个类。

parking 场有一个 parking 场标志。

parking 场的 parking 位数量有限。

残疾人 parking 位是 parking 位的子类。

RegularParkingSpace 是 ParkingSpace 的子类。

CompactParkingSpace 是 ParkingSpace 的子类。

ParkingLot 保留了 ParkingSpaces 数组,以及按照距其入口的距离的顺序排列的单独的空闲 ParkingSpaces 数组。

可以通过调用 .Full()、.Empty() 或 .Normal() 来告诉 ParkingLotSign 显示“已满”、“空”或“空白/正常/部分占用”

帕克是一个类。

帕克可以 Park()。

Parker 可以 Unpark()。

Valet 是 Parker 的子类,可以调用 ParkingLot.FindVacantSpaceNearestEntrance(),返回一个 ParkingSpace。

帕克有一个 parking 位。

Parker 可以调用 ParkingSpace.Take() 和 ParkingSpace.Vacate()。

Parker 调用 Entrance.Entering() 和 Entrance.Exiting(),ParkingSpace 会在有人或空出时通知 ParkingLot,以便 ParkingLot 可以确定是否已满。如果它是新满或新空或新未满或空,则应更改 ParkingLotSign.Full() 或 ParkingLotSign.Empty() 或 ParkingLotSign.Normal()。

HandicappedParker 可以是 Parker 的子类,CompactParker 可以是 Parker 的子类,RegularParker 可以是 Parker 的子类。 (实际上可能有点矫枉过正。)

在此解决方案中,Parker 可能应重命名为 Car。