diff options
added shapes collection
1 files changed, 44 insertions, 0 deletions
| -rw-r--r-- | Sem. 13/ShapeCollection/Shape.h | 44 |
diff --git a/Sem. 13/ShapeCollection/Shape.h b/Sem. 13/ShapeCollection/Shape.h new file mode 100644 index 0000000..143acc6 --- /dev/null +++ b/Sem. 13/ShapeCollection/Shape.h @@ -0,0 +1,44 @@ +#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; + virtual double getPer() const = 0; + virtual bool isPointIn(int x, int y) const = 0; + virtual Shape* clone() const = 0; + +};
\ No newline at end of file |
