Object-Oriented Design for C++