设计一个面向对象的 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。