The ATM Object-Oriented Design and Implementation Case Study