diff options
added sem 14
1 files changed, 43 insertions, 0 deletions
| -rw-r--r-- | Sem. 14/ShapesCollection/Shape.h | 43 |
diff --git a/Sem. 14/ShapesCollection/Shape.h b/Sem. 14/ShapesCollection/Shape.h new file mode 100644 index 0000000..caf7919 --- /dev/null +++ b/Sem. 14/ShapesCollection/Shape.h @@ -0,0 +1,43 @@ +#pragma once +#include <iostream> + +class Shape // Abstract class - no instances of Shape are allowed! +{ +protected: + struct point + { + point() :x(0), y(0){} + point(double x, double y) :x(x), y(y){} + double x; + double 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, double x, double y); + + virtual double getArea() const = 0; //pure virtual + virtual double getPer() const = 0; // pure virtual + + virtual Shape* clone() const = 0; // +};
\ No newline at end of file |
