A list is a data structure that can be defined recursively. Give a recursive definition of a list. If you are familiar with a programming language that has recursive procedures (such as LISP or PL/I), explain how elements are added to and deleted from a list in that language.
Consider a simplified OO design, for a banking system. Accounts can be created at the bank, and money can be deposited and withdrawn from the account. An account is accessed by its account number. Use the Decorator design pattern to add two new banking features to the design:
Transaction fee: charges the customer a fixed fee for each deposit and withdrawal transaction.