diff options
start from scratch
12 files changed, 0 insertions, 356 deletions
| -rw-r--r-- | Polymorphism/Shapes/Circle.cpp | 19 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Circle.h | 16 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Point.h | 18 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Rectangle.cpp | 24 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Rectangle.h | 11 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Shape.cpp | 50 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Shape.h | 27 | ||||
| -rw-r--r-- | Polymorphism/Shapes/ShapeCollection.cpp | 88 | ||||
| -rw-r--r-- | Polymorphism/Shapes/ShapeCollection.h | 30 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Source.cpp | 30 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Triangle.cpp | 31 | ||||
| -rw-r--r-- | Polymorphism/Shapes/Triangle.h | 12 |
diff --git a/Polymorphism/Shapes/Circle.cpp b/Polymorphism/Shapes/Circle.cpp deleted file mode 100644 index e625123..0000000 --- a/Polymorphism/Shapes/Circle.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "Circle.h" - -Circle::Circle(int x, int y, int r) : Shape(1), radius(r) -{ - setPoint(x, y, 0); -} -double Circle::getArea() -{ - return PI * radius * radius; -} -double Circle::getPer() -{ - return 2 * PI * radius; -} -Shape* Circle::clone() -{ - Circle* newCircle = new Circle(*this); - return newCircle; -}
\ No newline at end of file diff --git a/Polymorphism/Shapes/Circle.h b/Polymorphism/Shapes/Circle.h deleted file mode 100644 index c648690..0000000 --- a/Polymorphism/Shapes/Circle.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "Shape.h" - -const double PI = 3.14; -class Circle : public Shape -{ - - int radius; -public: - Circle(int x, int y, int radius); - - double getArea(); - double getPer(); - - Shape* clone(); - -};
\ No newline at end of file diff --git a/Polymorphism/Shapes/Point.h b/Polymorphism/Shapes/Point.h deleted file mode 100644 index acacb85..0000000 --- a/Polymorphism/Shapes/Point.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once -#include <iostream> -struct Point -{ - int x; - int y; - Point(int x, int y) - { - this->x = x; - this->y = y; - } - Point() : Point(0,0) - {} - double getDist(const Point& other) const - { - return sqrt((x - other.x)*(x - other.x) + (y - other.y) * (y - other.y)); - } -};
\ No newline at end of file diff --git a/Polymorphism/Shapes/Rectangle.cpp b/Polymorphism/Shapes/Rectangle.cpp deleted file mode 100644 index b684c50..0000000 --- a/Polymorphism/Shapes/Rectangle.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "Rectangle.h" - - -Rectangle::Rectangle(int x1, int y1, int x3, int y3) : Shape(4) -{ - setPoint(x1, y1, 0); - setPoint(x3, y3, 2); - setPoint(x1, y3, 1); - setPoint(x3, y1, 3); -} - -double Rectangle::getPer() -{ - return 2 * (getPoint(0).getDist(getPoint(1)) + getPoint(1).getDist(getPoint(2)) ); -} -double Rectangle::getArea() -{ - return getPoint(0).getDist(getPoint(1)) * getPoint(1).getDist(getPoint(2)); -} -Shape* Rectangle::clone() -{ - Rectangle* newRect = new Rectangle(*this); - return newRect; -}
\ No newline at end of file diff --git a/Polymorphism/Shapes/Rectangle.h b/Polymorphism/Shapes/Rectangle.h deleted file mode 100644 index 681a021..0000000 --- a/Polymorphism/Shapes/Rectangle.h +++ /dev/null @@ -1,11 +0,0 @@ -#include "Shape.h" -class Rectangle : public Shape -{ -public: - Rectangle(int x1, int y1, int x3, int y3); - - double getPer(); - double getArea(); - - Shape* clone(); -};
\ No newline at end of file diff --git a/Polymorphism/Shapes/Shape.cpp b/Polymorphism/Shapes/Shape.cpp deleted file mode 100644 index 0751108..0000000 --- a/Polymorphism/Shapes/Shape.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "Shape.h" - -Shape::Shape(int pointsCount) -{ - points = new Point[pointsCount]; - this->pointsCount = pointsCount; -} - -void Shape::setPoint(int x, int y, int ind) -{ - Point current(x, y); - points[ind] = current; - -} - -const Point& Shape::getPoint(int ind) -{ - return points[ind]; -} - -void Shape::CopyFrom(const Shape& other) -{ - points = new Point[other.pointsCount]; - pointsCount = other.pointsCount; - - for (int i = 0; i < pointsCount; i++) - points[i] = other.points[i]; -} -void Shape::Free() -{ - delete[] points; - pointsCount = 0; -} -Shape::Shape(const Shape& other) -{ - CopyFrom(other); -} -Shape& Shape::operator=(const Shape& other) -{ - if (this != &other) - { - Free(); - CopyFrom(other); - } - return *this; -} -Shape::~Shape() -{ - Free(); -} diff --git a/Polymorphism/Shapes/Shape.h b/Polymorphism/Shapes/Shape.h deleted file mode 100644 index f31e42e..0000000 --- a/Polymorphism/Shapes/Shape.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "Point.h" - -class Shape -{ - Point* points; - int pointsCount; - - void CopyFrom(const Shape& other); - void Free(); - -public: - Shape(int pointsCount); - Shape(const Shape& other); - Shape& operator=(const Shape& other); - virtual ~Shape(); - - void setPoint(int x, int y, int ind); - const Point& getPoint(int ind); - - virtual double getPer() =0; - virtual double getArea() = 0; - - virtual Shape* clone() = 0; - -};
\ No newline at end of file diff --git a/Polymorphism/Shapes/ShapeCollection.cpp b/Polymorphism/Shapes/ShapeCollection.cpp deleted file mode 100644 index 8fcad3c..0000000 --- a/Polymorphism/Shapes/ShapeCollection.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include "ShapeCollection.h" - -ShapeCollection::ShapeCollection() -{ - count = 0; - capacity = 8; - - data = new Shape*[capacity]; -} - -void ShapeCollection::AddCircle(int x1, int y1, int r) -{ - Circle* current = new Circle(x1, y1, r); - Add(current); - -} -void ShapeCollection::AddTriagnle(int x1, int y1, int x2, int y2, int x3, int y3) -{ - Triangle* current = new Triangle(x1, y1, x2, y2, x3, y3); - Add(current); -} -void ShapeCollection::AddRect(int x1, int y1, int x2, int y2) -{ - Rectangle* current = new Rectangle(x1, y1, x2, y2); - Add(current); -} -void ShapeCollection::Add(Shape* currentShape) -{ - if (count == capacity) - Resize(); - data[count++] = currentShape; -} -void ShapeCollection::Free() -{ - for (int i = 0; i < count; i++) - delete data[i]; - - delete[] data; -} -void ShapeCollection::CopyFrom(const ShapeCollection& other) -{ - data = new Shape*[other.count]; - capacity = other.capacity; - count = other.count; - for (int i = 0; i < other.count; i++) - data[i] = other.data[i]->clone(); - -} -ShapeCollection::ShapeCollection(const ShapeCollection& other) -{ - CopyFrom(other); -} -ShapeCollection& ShapeCollection::operator = (const ShapeCollection& other) -{ - if (this != &other) - { - Free(); - CopyFrom(other); - } - return *this; -} -ShapeCollection::~ShapeCollection() -{ - Free(); -} -void ShapeCollection::Resize() -{ - Shape** temp = new Shape*[capacity * 2]; - capacity *= 2; - for (int i = 0; i < count; i++) - temp[i] = data[i]; - delete[] data; - data = temp; - - -} -void ShapeCollection::PrintAllAreas() -{ - for (int i = 0; i < count; i++) - std::cout << data[i]->getArea() << " "; - std::cout<<std::endl; -} -void ShapeCollection::PrintAllPers() -{ - for (int i = 0; i < count; i++) - std::cout << data[i]->getPer() << " "; - std::cout << std::endl; -}
\ No newline at end of file diff --git a/Polymorphism/Shapes/ShapeCollection.h b/Polymorphism/Shapes/ShapeCollection.h deleted file mode 100644 index 36f6092..0000000 --- a/Polymorphism/Shapes/ShapeCollection.h +++ /dev/null @@ -1,30 +0,0 @@ -#include "Circle.h" -#include "Rectangle.h" -#include "Triangle.h" - -class ShapeCollection -{ - Shape** data; - int count; - int capacity; - - void Resize(); - - void Add(Shape* currentShape); - - void CopyFrom(const ShapeCollection& other); - void Free(); -public: - ShapeCollection(); - - ShapeCollection(const ShapeCollection& other); - ShapeCollection& operator=(const ShapeCollection& other); - ~ShapeCollection(); - - void AddCircle(int x1,int x2,int r); - void AddTriagnle(int x1,int y1,int x2,int y2,int x3,int y3); - void AddRect(int x1, int y1, int x2, int y2); - - void PrintAllAreas(); - void PrintAllPers(); -};
\ No newline at end of file diff --git a/Polymorphism/Shapes/Source.cpp b/Polymorphism/Shapes/Source.cpp deleted file mode 100644 index 3381111..0000000 --- a/Polymorphism/Shapes/Source.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -using namespace std; -#include <fstream> -#include <vector> -#include "ShapeCollection.h" - -int main() -{ - ShapeCollection sh; - - sh.AddCircle(3, 3, 5); - sh.AddTriagnle(1, 4, 2, 11, 7, 4); - sh.AddRect(1, 1, 4, 4); - - sh.PrintAllAreas(); - -/* lamda fucntion example - std::vector<Circle> s; - s.push_back(Circle(3, 4, 4)); - s.push_back(Circle(1, 2, 3)); - - std::sort(s.begin(), s.end(), - [](Circle& lhs, Circle& rhs) -> bool - { - return lhs.getArea() < rhs.getArea(); - });*/ - - - -}
\ No newline at end of file diff --git a/Polymorphism/Shapes/Triangle.cpp b/Polymorphism/Shapes/Triangle.cpp deleted file mode 100644 index 545e2a6..0000000 --- a/Polymorphism/Shapes/Triangle.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "Triangle.h" - -Triangle::Triangle(int x1, int y1, int x2, int y2, int x3, int y3) : Shape(3) -{ - setPoint(x1, y1, 0); - setPoint(x2, y2, 1); - setPoint(x3, y3, 2); -} - -double Triangle::getArea() -{ - double sideA = getPoint(0).getDist(getPoint(1)); - double sideB = getPoint(1).getDist(getPoint(2)); - double sideC = getPoint(2).getDist(getPoint(0)); - - double halfPer = getPer() / 2; - - return sqrt(halfPer * (halfPer - sideA) * - (halfPer - sideB) * (halfPer - sideC)); -} -double Triangle::getPer() -{ - return getPoint(0).getDist(getPoint(1)) + - getPoint(1).getDist(getPoint(2)) + - getPoint(2).getDist(getPoint(0)); -} -Shape* Triangle::clone() -{ - Triangle* newTriangle = new Triangle(*this); - return newTriangle; -}
\ No newline at end of file diff --git a/Polymorphism/Shapes/Triangle.h b/Polymorphism/Shapes/Triangle.h deleted file mode 100644 index b038e80..0000000 --- a/Polymorphism/Shapes/Triangle.h +++ /dev/null @@ -1,12 +0,0 @@ -#include "Shape.h" - -class Triangle : public Shape -{ -public: - Triangle(int x1, int y1, int x2, int y2, int x3, int y3); - - double getArea(); - double getPer(); - - Shape* clone(); -};
\ No newline at end of file |
