Data abstraction and problem solving with C++ : - Carrano, Frank M. (Addison Wesley, 2005)