add virtual destructors to all classes.
update Composite.hpp, use C++11.
add Observer pattern.