C++ Programming: From Problem Analysis to Program Design, Second Edition