C++ Program Design: An Introduction to Programming and Object-Oriented Design