Apply the Java concepts that you learned (OOP, polymorphism, interfaces, packaging, …), SOLID design principles as well as Design Patterns to design/extend a Parking Garage application and implement it using the java programming language. This application manages a parking space for a configurable maximum number of vehicles. The designed application must handle the following functions: ● Each garage slot has a width and depth that describes the slot dimensions as well as slot hourly cost. ● The garage consists of a configurable maximum number of slots as well as a global slot selection algorithm i.e. First Fit or Best Fit where ○ First Fit selection where the first slot with big enough dimension to host the vehicle will be selected ○ Best Fit selection where the slot with the best dimension match should be used where the wasting area of the slot is minimized. ● Each vehicle shall be identified by a model name, unique identification number, owner mobile number, Model year and vehicle dimensions (width and length). ● Park-in function that marks the arrival time of a vehicle if there is an available slot that matches vehicle dimensions based on the configured selection algorithm.. ● Park-out function that marks the departure time of a vehicle and might allow notifying the vehicle owner through sending Email or SMS with the receipt that contains the parking costs and details of arrival and departure times. ● Sending Email and SMS shall be simulated as a method/function that just prints the receipt details to screen mentioning the type of notification either it’s an email or SMS. ● Calculate the parking fees during the park-out based on the time-of-stay with an hourly rate that depends on the selected slot ● Calculate the total income as well as the total number of vehicles that used the parking garage at any given point in time. ● Display the available parking slots for specific vehicle dimensions. ● Enrich your application with the capability to handle a set of exceptions that can happen during user interaction and through any other calculations. The displayed error message for exceptional behavior should be descriptive
Apply the Java concepts that you learned (OOP, polymorphism, interfaces, packaging, …), SOLID
design principles as well as Design Patterns to design/extend a Parking Garage application
and implement it using the java programming language. This application manages a parking space
for a configurable maximum number of vehicles. The designed application must handle the
following functions:
● Each garage slot has a width and depth that describes the slot dimensions as well as slot
hourly cost.
● The garage consists of a configurable maximum number of slots as well as a global slot
selection
○ First Fit selection where the first slot with big enough dimension to host the vehicle
will be selected
○ Best Fit selection where the slot with the best dimension match should be used
where the wasting area of the slot is minimized.
● Each vehicle shall be identified by a model name, unique identification number, owner
mobile number, Model year and vehicle dimensions (width and length).
● Park-in function that marks the arrival time of a vehicle if there is an available slot that
matches vehicle dimensions based on the configured selection algorithm..
● Park-out function that marks the departure time of a vehicle and might allow notifying the
vehicle owner through sending Email or SMS with the receipt that contains the parking costs
and details of arrival and departure times.
● Sending Email and SMS shall be simulated as a method/function that just prints the receipt
details to screen mentioning the type of notification either it’s an email or SMS.
● Calculate the parking fees during the park-out based on the time-of-stay with an hourly rate
that depends on the selected slot
● Calculate the total income as well as the total number of vehicles that used the parking
garage at any given point in time.
● Display the available parking slots for specific vehicle dimensions.
● Enrich your application with the capability to handle a set of exceptions that can happen
during user interaction and through any other calculations. The displayed error message
for exceptional behavior should be descriptive
![](/static/compass_v2/shared-icons/check-mark.png)
Step by step
Solved in 4 steps
![Blurred answer](/static/compass_v2/solution-images/blurred-answer.jpg)
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Starting Out with Python (4th Edition)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Starting Out with Python (4th Edition)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![C How to Program (8th Edition)](https://www.bartleby.com/isbn_cover_images/9780133976892/9780133976892_smallCoverImage.gif)
![Database Systems: Design, Implementation, & Manag…](https://www.bartleby.com/isbn_cover_images/9781337627900/9781337627900_smallCoverImage.gif)
![Programmable Logic Controllers](https://www.bartleby.com/isbn_cover_images/9780073373843/9780073373843_smallCoverImage.gif)