#include "first_interface.h" class Shape { public: virtual ~Shape(){} DrawApi *getDrawApi() { return this->drawApi; } virtual void draw() = 0; protected: DrawApi *drawApi; Shape(DrawApi *drawApi): drawApi(drawApi){} }; class Circle: public Shape { public: Circle(int radius, int x, int y, DrawApi *drawApi): Shape(drawApi) { this->x = x; this->y = y; this->radius = radius; } void draw() { getDrawApi()->drawCircle(radius, x, y); } private: int x; int y; int radius; };