Adapted from Sandro Mancuso's Bank Account Kata.
This is an example of how to create an application using:
- composable objects
- generic interfaces
- contract testing of fakes to ensure your test doubles behave like the real thing
The app just prints out a bank statement after making a few transactions.