Problem Solving, Abstraction, And Design Using C++ by Elliot B. Koffman, Frank Friedman & Frank L. Friedman