Problem solving, abstraction, and design using C++ 6th ed - Friedman, Frank L.; Koffman, Elliot B. (Addison-Wesley, 2011)