For version 2.0 I am asking you to read through SDA's on Applying Design Principles and Class design rules. Your solution should be correct, flexible and reliable, with minimal coupling. The data that is used in reporting should use immutable objects. Version 2.0 BudgetPro is an expense ledger and budgeting application. The application acts like a ledger of daily expenses that are recorded and separated under a particular budgetary head. The user can now define the expense type and detail of expenses under it. In the second version, a simple console-based application is to be replaced with GUI. The expense has an amount, textual detail and date. The date is to be added by system when expense is created All Expense objects should be made immutable objects with no change in them once they Expense type is the category of the expense. Every Expense should be created and associated with an expense type: A typical expense should be noted as Date, Type, Detail, Amount in records. There is a list of expenses that is a collection of expenses. The expenses that are created are added to it and one method of it iterates and gives the total expenses. The code should be flexible enough to replace filing with Database connectivity in future. The code should be robust and should behave property in case of any error input by the are created user 1) 2) 3) 4) Expense (2 Marks) Expense Type (2 Marks) ExpenseList (2 Marks) Classes for Storing Expense list in Binary file format (4 Marks) 5) MainApplication with mainframes and GUI Interactions) (10 Marks) a) Use J Menu Bar, Menu Items, JOptionPane (2 Marks) b) Use J Frames, J Windows (4 Marks) c) Use JTable for reports (4 Marks) 6) UML Class Diagram (5 Marks) (Do not include GUI files) 7) Write a two page report that discusses your solution design's correctness, robustness, reusability and flexibility and by showing examples from your own code. You can copy snippets of your code to provide examples. One example is enough for each design principal. (5 Marks) GUI MockUp and GUI interactions: For version 2.0 I am asking you to read through SDA's on Applying Design Principles and Class design rules. Your solution should be correct, flexible and reliable, with minimal coupling. The data that is used in reporting should use immutable objects. Version 2.0 BudgetPro is an expense ledger and budgeting application. The application acts like a ledger of daily expenses that are recorded and separated under a particular budgetary head. The user can now define the expense type and detail of expenses under it. In the second version, a simple console-based application is to be replaced with GUI. The expense has an amount, textual detail and date. The date is to be added by system when expense is created All Expense objects should be made immutable objects with no change in them once they Expense type is the category of the expense. Every Expense should be created and associated with an expense type: A typical expense should be noted as Date, Type, Detail, Amount in records. There is a list of expenses that is a collection of expenses. The expenses that are created are added to it and one method of it iterates and gives the total expenses. The code should be flexible enough to replace filing with Database connectivity in future. The code should be robust and should behave property in case of any error input by the are created user 1) 2) 3) 4) Expense (2 Marks) Expense Type (2 Marks) ExpenseList (2 Marks) Classes for Storing Expense list in Binary file format (4 Marks) 5) MainApplication with mainframes and GUI Interactions) (10 Marks) a) Use J Menu Bar, Menu Items, JOptionPane (2 Marks) b) Use J Frames, J Windows (4 Marks) c) Use JTable for reports (4 Marks) 6) UML Class Diagram (5 Marks) (Do not include GUI files) 7) Write a two page report that discusses your solution design's correctness, robustness, reusability and flexibility and by showing examples from your own code. You can copy snippets of your code to provide examples. One example is enough for each design principal. (5 Marks) GUI MockUp and GUI interactions