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