ParkingLot
+ park(v): Ticket
+ unpark(t)
Level
- spots: List
+ findSpot(size)
«interface»
FeeStrategy
+ calc(hrs): money
ParkingSpot
- size: Size
- vehicle
+ assign(v)
«abstract»
Vehicle
- size: Size
Ticket
- spot
- inTime
Model the domain
1enum Size { MOTORCYCLE, CAR, LARGE }23class ParkingLot {4 List<Level> levels;5 FeeStrategy pricing;6 Ticket park(Vehicle v) { ... }7}
State
requirementpark / unpark + ticket + fee