Data Abstraction and Problem Solving with Java - Frank M. Carrano (John Wiley & Sons, 2001)