UML and C++: A Practical Guide to Object-Oriented Development