Based on the requirements and use cases, identify the main objects of the system and analyze how they interact and relate to each other...
class User{
id,
name,
email id,
phoneNo,
List
}
Abstract classVehicle{
id,
licensePlate,
vehicleName,
vehicleType,
userId,
}
class MotorCycle extend vehicle{
}
class car extend vehicle{
}
class Truck extend vehicle{
}
user and vehicle will relate to each other with userId
one user can have multiple vehicle.
Abstract class ParkingSpot{
spotId,
isAvailable,
parkingType,
parkingStartTime,
parkingEndTime,
Vehicle vehicle,
}
class HandicappedSpot extends ParkingSpot{
}
class CompactSpot extends ParkingSpot{
}
class LargeSpot extends ParkingSpot{
}
A parking spot has a reference to the vehicle currently occupying it.
ParkingFloor{
Map
findAvailableSpot(vehicleType type);
}
ParkingLot(SingleTone){
ParkingFloor;
}
ParkingTicket{
ParkingSpot parkingSpot;
}
Tranaction{
id,
transactionId,
amount,
transactionType,
ParkingTicket ticket;
}
parking and transaction table will relate to each other through with parkingID
For each class, define the attributes (data) it will hold and the methods (functions) that operate on the attributes. Ensure they align with the object's responsibilities and adhere to the principle of encapsulation. Write your code in the code editor below.
Explain design tradeoffs you considered. Check and explain whether your design adheres to SOLID principles. Explain how your design can handle changes in scale and whether it would be easy to extend with new functionalities. Identify areas for future improvement...