Problem solving, abstraction, and design using C++ - Friedman, Frank L. (Pearson, 2011)