C++ Program Design: an Introduction to Programming and Object-Oriented Design - James P. Cohoon (McGraw Hill, 2002)