Two abstract classes above are core objects to show the relation between spot and vehicle.
If a vehicle parks it requires Spot, while Spot can be instantiated stand alone.
If a vehicle does not park, just roaming around to locate parking spot, Spot can be null.
ParkingLotService is the top manager service of managing all floors, spots, and entered vehicles.
FloorManager will be instantiated per each floor, from ParkingLotService, and will be injected to ParkingLotService.
Spot will be instantiated per each spots on specific floor, from FloorManager, and will be injected to FloorManager.
Refer to diagram
Attributes: For each class, define the attributes (data) it will hold...
Methods: Define the methods (functions) that operate on the attributes. Ensure they align with the object's responsibilities and adhere to the principle of encapsulation.
public class Car { ... } // ExampleCheck and explain whether your design adheres to solid principles (Ask interviewer what SOLID principle is if you can not recall it.)...
Explain how your design can handle changes in scale and whether it would be easily to extend with new functionalities...
Try creating a class, flow, state and/or sequence diagram using the diagramming tool. Mermaid flow diagrams can be used to represent system use cases. You can ask the interviewer bot to create a starter diagram if unfamiliar with the tool. Briefly explain your diagrams if necessary...
Critically examine your design for any flaws or areas for future improvement...