headfirst design pattern C++ code