A C++ Primer for Engineers: An Object-Oriented Approach