Problem solving, abstraction, & design using C++ - Friedman, Frank L. (Addison-Wesley, 2000)