C++ Effective Object-Oriented Software Construction