diff options
added sem 14
1 files changed, 67 insertions, 0 deletions
| -rw-r--r-- | Sem. 14/ShapesCollection/ShapesCollection.cpp | 67 |
diff --git a/Sem. 14/ShapesCollection/ShapesCollection.cpp b/Sem. 14/ShapesCollection/ShapesCollection.cpp new file mode 100644 index 0000000..0fe828c --- /dev/null +++ b/Sem. 14/ShapesCollection/ShapesCollection.cpp @@ -0,0 +1,67 @@ +#include "ShapesCollection.h" + +void ShapesCollection::addCircle(double x, double y, double radius) +{ + Circle* ptr = new Circle(x, y, radius); + collection.push_back(ptr); +} +void ShapesCollection::addRectangle(double x1, double y1, double x3, double y3) +{ + Rectangle* ptr = new Rectangle(x1, y1, x3, y3); + collection.push_back(ptr); +} +void ShapesCollection::addTriangle(double x1, double y1, double x2, double y2, double x3, double y3) +{ + Triangle* ptr = new Triangle(x1, y1, x2, y2, x3, y3); + collection.push_back(ptr); +} +void ShapesCollection::addRhombus(double x1, double y1, double x2, double y2) +{ + collection.push_back(new Rhombus(x1, y1, x2, y2)); +} + +void ShapesCollection::addSquare(double x1, double y1, double sideLength) +{ + collection.push_back(new Square(x1, y1, sideLength)); +} + +void ShapesCollection::printAreas() +{ + for (int i = 0; i < collection.size(); i++) + std::cout << collection[i]->getArea() << " " << std::endl; +} +void ShapesCollection::printPers() +{ + for (int i = 0; i < collection.size(); i++) + std::cout << collection[i]->getPer() << " " << std::endl; +} + +void ShapesCollection::copyFrom(const ShapesCollection& other) +{ + for (int i = 0; i < other.collection.size(); i++) + collection.push_back(other.collection[i]->clone()); +} +void ShapesCollection::free() +{ + for (int i = 0; i < collection.size(); i++) + delete collection[i]; + collection.clear(); +} + +ShapesCollection::ShapesCollection(const ShapesCollection& other) +{ + copyFrom(other); +} +ShapesCollection& ShapesCollection::operator= (const ShapesCollection& other) +{ + if (this != &other) + { + free(); + copyFrom(other); + } + return *this; +} +ShapesCollection::~ShapesCollection() +{ + free(); +}
\ No newline at end of file |
