Design: Elevator Control System
Design the core classes and their interactions for elevator, floor, and request management. Exclude hardware control and detailed UI design.
Functional Requirements
FR1: Manage multiple elevators in a building
FR2: Handle requests from floors to go up or down
FR3: Handle requests from inside elevators to select destination floors
FR4: Optimize elevator movement to reduce wait and travel time
FR5: Track elevator current floor and direction
FR6: Support at least 10 floors and 4 elevators
Non-Functional Requirements
NFR1: Response time for request assignment should be under 200ms
NFR2: System should handle up to 100 concurrent requests
NFR3: Elevator state updates must be consistent and thread-safe
NFR4: Availability target: 99.9% uptime
