From cbe098fdaf6509b6a3c8bd33b3064d8f620dd58c Mon Sep 17 00:00:00 2001 From: angeld55 Date: Fri, 28 May 2021 16:45:24 +0300 Subject: sem 14 --- Sem. 14/Shapes/Shape.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Sem. 14/Shapes/Shape.h (limited to 'Sem. 14/Shapes/Shape.h') diff --git a/Sem. 14/Shapes/Shape.h b/Sem. 14/Shapes/Shape.h new file mode 100644 index 0000000..caf7919 --- /dev/null +++ b/Sem. 14/Shapes/Shape.h @@ -0,0 +1,43 @@ +#pragma once +#include + +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 -- cgit v1.3.1-23-gd82d