Data Abstraction and Proble Solving with C++: Walls And Mirrors - Frank M. Carrano (Addison-Wesley)