Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 14 / ShapesCollection / Shape.h
diff options
context:
space:
mode:
Commit7f4cfc6c2114b81bc480f05ceebc643598a92d25 (patch)
Author
 angeld55 <angel_dimitriev@abv.bg>
2021-05-28 14:27:39 +0300
Committer
 angeld55 <angel_dimitriev@abv.bg>
2021-05-28 14:27:39 +0300
Files3fd6c5ddea164367478f97a492f604cb8bfb7755 /Sem. 14/ShapesCollection/Shape.h
Object-oriented_programming_FMI-7f4cfc6c2114b81bc480f05ceebc643598a92d25.tar
Object-oriented_programming_FMI-7f4cfc6c2114b81bc480f05ceebc643598a92d25.tar.gz
Object-oriented_programming_FMI-7f4cfc6c2114b81bc480f05ceebc643598a92d25.zip
Parentb0f9a859685ecad4682fdb41b8b6d94a1ee64471 (diff)
added sem 14
1 files changed, 43 insertions, 0 deletions
-rw-r--r--Sem. 14/ShapesCollection/Shape.h43
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