Design: Parking Lot Management System
Design the core classes and their relationships to model the parking lot, floors, spots, and vehicles. Out of scope: payment processing, user authentication, mobile app UI.
Functional Requirements
FR1: Allow vehicles to enter and find a parking spot
FR2: Support multiple floors with multiple spots per floor
FR3: Track which spots are occupied and which are free
FR4: Support different vehicle types (car, motorcycle, truck)
FR5: Allow vehicles to leave and free up spots
FR6: Provide a way to check availability of spots
Non-Functional Requirements
NFR1: System should handle up to 1000 vehicles simultaneously
NFR2: Spot allocation and release should be done within 200ms
NFR3: System should be designed for easy extension (e.g., new vehicle types)
NFR4: Maintain consistency of spot occupancy status
