GUI \& Polymorphism Before attempting this project, be sure you have completed all the reading assignments, non-graded exercises, discussions, and assignments to date. Caution: This assignment uses GUI as part of the requirements. The GUI interface exists to make the display of the program look more user friendly. The GUI interface has nothing to do with the purpose of the program: to convert values from one mode to another. Do not consider making the GUI element the class for the assignment. Converter is the class of the program; GUI can be removed, and the program will still perform its task of converting. Many folks get caught up in working on the GUI part. Please put it in perspective: it is a tool to enhance the program and make it more user-friendly. There is only one java file for all the coding of this assignment allowed. Multiple java files are not acceptable. Design and implement Java program as follows: 1) Implement converter class hierarchy as follows: a. Converter class which includes: - Private attribute for input of data type double - Default constructor with no parameter which sets input to Double.NaN [Not a Number] - Overloaded constructor with input for parameter - Method convert0 which returns input value b. TemperatureConverter class which is a child of Conrerter class and includes: - Constructors which call parent constructors - Overridden convert() method to convert input Fahrenheit temperature to Celsius and returns the value. If the instance has no input value or not a number, it should return Double. NaN -. Use the following formula for conversion: C=((F32)5)/9 c. DistanceConverter class which is a child of Converter class and includes: - Constructors which call parent constructors - Overridden convertO method to convert input distance in miles to distance in kilometers and returns the value. If the instance has no input value or not a number, it should return Double.NaN d. Use the following formula for conversion: KM=M=1.609. 2) Do not use javax.swing.SwingUtilities in this program. 3) Implement GUIConverter class using JFrame and JPanel as follows a. The window should be centered in the computer screen, [Hint: frame setLocationRelativeTo(null);] b. GUI will have 3 buttons: Distance, Temperature, and Exit that generate prompts. Please select which converter you would like: c. When user clicks Exit, the program will terminate. d. When user clicks Distance, an input dialog will pop up where user can type value and click OK. e. Once user clicks OK, message dialog will pop up. f. After review of the result, the OK is clicked the program returns to the original window. g. When user clicks on Temperature button, an input dialog will pop up to input value and then when clicks OK, the message dialog with pop up with converted result: h. The format for the windows should be appropriately sized. As a guideline for the window the three buttons should all be of the same dimension surrounded by not more than 1/4 or 1/2 inch of space. In this case, the two conversion buttons should be on one line and the Exit on another. All the buttons should be surrounded by not more than an inch of space. 4) There is a main 0 method at the end of the program. - The method begins with instantiation of the Converter class. - An Interface is displayed either in this method or called by another method. - The Interface will consist of the two options [Temperature and Distance] and an exit button. [See above illustration]. - The main 0 should be considered as a driver, that is, only the minimum number of code lines are in it. Most of the coding is done in methods that are outside of the main 0 method. SUGGESTIONS: - For the input dialog you can use JOptionPane,showlnputDialog. - The ActionListener for each Converter button should create the appropriate Converter child instance, set the input, and call its convert ( ) method. - For the pop up with converted value you can use JOptionPane.showMessageDialog Style and Documen tation: M ake sure your Java program is using the recommended style such as: - Javadoc comment up front with your name as author, date, and brief purpose of the program. - Comments for variables and blocks of code to describe major functionality (refer to the Documentation of Programs found in Week 1 ). - Meaningful variable names and prompts - no single character that is meaningless. - Class names are written in upper CamelCase - Constants are written in All Capitals - Use proper spacing and empty lines to make code more user-friendly, readable. Cap ture execution: You should capture and label screen captures associated with compiling your code for each test cases for each functionality. Assignment Deliverables: Deliverables include a single Java program (java) and a single Word (or PDF) document. No zipped files are acceptable. The Java and Word/PDF files should be named appropriately for the assignment (as indicated in the CMIS242 Submissions Expectations document posted in Week 1): CMIS242ASG3[name].java, CMIS242AS3[name].docx, or CMIS242ASG3[name].pdf. Though you might construct the assignment with multiple classes, the final submission must be a single Java program. The process of combining multiple classes into a single Java program is found in Week 1 Content under the Practice Exercise thread and titled Practice Exercise as ONE Java program. Submit the combined Java program as the attachment for Assignment 3. The word (or PDF) document should include a Test Plan with multiple test cases. Each test case should be referenced to a screen capture showing the successful compiling and running of each of the test case. Each screen capture should be properly labeled clearly indicated what the screen capture represents. It is suggested that the test table include these columns: -. Test Case \# - Button Click (Temperature, Distance, Exit) - Temperature Value Textbox (+/-) [JOptionPane showInputDialog] - Distance Value Textbox [JOptionPane.showInputDialog] - Processing Command(s) - Output from convert calculation [JOptionPane.showMessageDialog] - Messages for errors and other information to the user Submit your files to Assignment 3 submission area no later than the due date listed in your online classroom