Data abstraction & problem solving with Java(tm) : walls and mirrors - Prichard, Janet J.; Carrano, Frank M. (Pearson, 2011)