Apply object-oriented design to model a multi-level parking lot with different vehicle types, payment strategies, and spot allocation.
Design the Vehicle hierarchy (Vehicle → Motorcycle, Car, Truck) and ParkingSpot hierarchy. Define what attributes and behaviours each class owns. Apply the Open/Closed Principle so new vehicle types can be added without modifying core allocation logic.