From eda2b5dee821c474644cd72df4d0bd93b0940ec6 Mon Sep 17 00:00:00 2001 From: angeld55 Date: Tue, 17 May 2022 20:15:26 +0300 Subject: sem 12 --- Sem. 12/Example_polymorphism/Shape.h | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Sem. 12/Example_polymorphism/Shape.h (limited to 'Sem. 12/Example_polymorphism/Shape.h') 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 + +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 -- cgit v1.3.1-23-gd82d