Data abstraction and problem solving with Java - Carrano, Frank M. (Pearson, 2003)