Data abstraction and problem solving with java walls and mirrors - Carrano, Frank M. (Addison Wesley, 2001)