Based on the requirements and use cases, identify the main objects of the system and analyze how they interact and relate to each other...
Bank --> handles deposits
Account --> account ID, add or withdraw. Handles the amount of funds in an account
Logger --> records transaction history
Bank handles the operations from clients such as withdraw and deposit and transfers however delegates the exact operations to the specific account to handle balances. Bank also allows users to create new accounts
For each class, define the attributes (data) it will hold and the methods (functions) that operate on the attributes. Ensure they align with the object's responsibilities and adhere to the principle of encapsulation. Write your code in the code editor below.
Explain design tradeoffs you considered. Check and explain whether your design adheres to SOLID principles. Explain how your design can handle changes in scale and whether it would be easy to extend with new functionalities. Identify areas for future improvement...
S --> each interface handles one thing
O --> functions can be added to any class without modifying existing functionality
L --> child class can do anything parent class can do
I --> interfaces only do what is necessary and nothing additional
D --> dependent on interfaces not implementations