A car manufacturer wants to allow his customers to customize their car order as they wish. They come to you asking to help them design their software solution. A basic car model wouldbe costing$1000. Here is the list of items you can add, along with their respective price:
-Air condition: $500
-Power windows: $200
-Sunroof: $250
-GPS: $200
The most important fact is that your design/code needs to be opened for expansion and closed for modification; i.e. we want to be able to expand the functionality by plugging in additional features, like enabling to add more items (Bluetooth, Internet, ...) without changing any existing code, but adding some.
Your program needs to display a menu of the items to add to the basic model. You are free to use a basic command line menu or a Java Swing one or even a JavaFX if you want. Once you get the set o
f selections the user wants to add to the basic model (zero or more), your code would produce the new model, listing all the additional items, along with each item's cost and the total cost of the newly ordered car model. Again, part of the marking is that your code needs to handlethe expansion factor by simply allowing me adding a new class to your code, without touching any of yours, and my class should work smoothly.
Of course, I would be implementing or extending what is needed from your code. Following one of the design pattern covered in class, I should be able to do so. Your code should have all the try/catch necessary to accept any type of input and to recover from any wrongly entered type (ex: if you expect an int, I should be able to enter a letter and your code should be able to recover from it properly). Once a car model has been successfully ordered with zero or more added items to thebasic one, your code would end by stating that the new car will be ready to be picked up, two weeks from current date at respective local car dealer (i.e. get currentdate and add two weeks to it); just use "at local car dealer" in your message.