Data Structures and Algorithms with Object-Oriented Design Patterns in C++