Data abstraction and problem solving with C++ walls and mirrors - Carrano, Frank M. (Addison-Wesley, 1998)