Part 1- Use of Design Patterns (1200 words)
Identify a real-life well known program (e.g. MS Excel, Chrome, the Calculator on a smartphone etc.) where you think the use of following patterns in the code would be useful and then justify the benefits each pattern provided to the developers and maintainers of the program in question and describe with concrete examples how the specific elements of the pattern would map to elements of that program. Throughout the report you are required to support any arguments with worked examples (evidence) and references (in Harvard Style) where appropriate.
- Abstract Factory
- and one more pattern of your choice from the Lecture notes/Design Patterns book
Part 2 - Implementation
Your task will be to modify code to incorporate the following three design patterns:
- Factory method- to incorporate the role of a Bank Manager (as an admin type of user of the ATM) which acts as a “factory method” to create customer accounts.
- Singleton- to implement singleton pattern (thread safe) to make sure only one instance of the ATM machine exists.
- Iterator- to implement iterator pattern to iterate through all customer information (name, available balance, total balance etc.)
The user interface of the software must be Graphical and contains following functionalities:
- appropriate GUI to use ATM as customers or a Bank Manager with a screen that displays messages to users (e.g. welcome messages to customers/Bank Manager or current balances to the customers)
- a keypad that receives numeric input from the user (e.g. PIN numbers or choices of options on the screen)
- appropriate GUI to allow customers to take money out of or put into an account
- appropriate GUI for bank manager to be able to delete/add customers and view customer information (name, available balance, total balance etc. but not the PIN)
Your implementation code must be well documented and you need to clearly identify in the code the places where you have implemented the design patterns and the GUI.
You application must use following users, PINs and other necessary test data to test the functionalities:
You should NOT use any tool that generates Java code. Only Eclipse IDE should be used.
Task 3 (Report- 700 words):
- The class diagram for the given text based ATM application is shown in Appendix A. Include modified UML class diagram only for the design patterns incorporated.
- You are required to reflect on the GUI you have made and each of the design patterns you have created in the course of modifying the given text based application. Your write-up should include a careful analysis of why you believe that your code work and if they do not fully work an analysis of the limitations. In your analysis you must give references to the code where you implemented the design patterns and GUI. You should also discuss any possible areas of improvement of the system including what you would need to understand to improve your programming capability. If you are unable to complete Task 2 please note that marks can still be gained by well-explained, well-documented partial solutions.
- Include instructions to use the program and details of the tests you did (examples of both white box and black box testing) and test results with screen shots showing all functionalities