diff options
1 files changed, 41 insertions, 0 deletions
| -rw-r--r-- | Sem. 12/Example_polymorphism/Shape.h | 41 |
diff --git a/Sem. 12/Example_polymorphism/Shape.h b/Sem. 12/Example_polymorphism/Shape.h new file mode 100644 index 0000000..62f5c41 --- /dev/null +++ b/Sem. 12/Example_polymorphism/Shape.h @@ -0,0 +1,41 @@ +#pragma once +#include <iostream> + +class Shape // Abstract class - no instances of Shape are allowed! +{ +protected: + struct point + { + point() :x(0), y(0){} + point(int x, int y) :x(x), y(y){} + int x; + int y; + double getDist(const point& other) const + { + int dx = x - other.x; + int dy = y - other.y; + + return sqrt(dx*dx + dy*dy); + } + }; + const point& getPointAtIndex(size_t index) const; +private: + point* points; + size_t pointsCount; + + void copyFrom(const Shape& other); + void free(); + + +public: + Shape(size_t pointsCount); + + Shape(const Shape& other); + Shape& operator=(const Shape& other); + virtual ~Shape(); //!!!!!! + + void setPoint(size_t pointIndex, int x, int y); + + virtual double getArea() const = 0; //pure virtual + virtual double getPer() const = 0; // pure virtual +};
\ No newline at end of file |
