Data structures and algorithms with object-oriented design patterns in C++ - Preiss, Bruno R. (John Wiley and Sons, 1999)