#include #include using namespace std; class Component{ public: virtual string Operation()=0; }; class ConcreteComponent:public Component{ public: string Operation(){ return "I am walking "; } }; class Decorator : public Component{ protected: Component *component; public: virtual string Operation()=0; Decorator(Component *c) { component = c; } }; class DecoratorA : public Decorator { public: DecoratorA(Component *c):Decorator(c){} string Operation(){ return component->Operation() + "and listening to Classic FM "; } }; class DecoratorB : public Decorator { public: string addedState = "past the Coffee Shop "; DecoratorB(Component *c):Decorator(c){} string Operation() { return component->Operation() + "to school "; } string AddedBehavior(){ return "and I bought a cappucino "; } }; void Display(string s, Component *c){ cout<<(s + c->Operation())<