Data structures and algorithms with object-oriented design patterns in C++ - Preiss, Bruno R (John Wiley, New York, 2001)