Problem solving, abstraction, design using C++ 3rd ed - Friedman, Frank L.; Koffman, Elliot B. (Addison-Wesley, 2000)