Headfirst design pattern C++ code implementation