From c803ec53060365d10e9a8f255744c30555718313 Mon Sep 17 00:00:00 2001 From: Damian Stasiak Date: Sun, 20 Jan 2019 21:37:34 +0100 Subject: [PATCH] task done? --- Makefile | 18 ++++++++++++++++++ includes/Circle.hpp | 20 ++++++++++++++++++++ includes/Rectangle.hpp | 22 ++++++++++++++++++++++ includes/Shape.hpp | 11 +++++++++++ includes/Square.hpp | 18 ++++++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 Makefile create mode 100644 includes/Circle.hpp create mode 100644 includes/Rectangle.hpp create mode 100644 includes/Shape.hpp create mode 100644 includes/Square.hpp diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7070a0e --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +# Variable declaration +CC= g++ +CFLAGS= -Iincludes +SOURCE= *.cpp +INCUDE= includes/*.hpp + + +.PHONY: all +all:debug release + +debug: $(SOURCE) $(INCLUDE) + $(CC) $(SOURCE) -g -o debug $(CFLAGS) +release: $(SOURCE) $(INCLUDE) + $(CC) $(SOURCE) -O3 -o release $(CFLAGS) + +.PHONY: clean +clean : + rm debug release diff --git a/includes/Circle.hpp b/includes/Circle.hpp new file mode 100644 index 0000000..81897e7 --- /dev/null +++ b/includes/Circle.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include "Shape.hpp" + +class Circle : public Shape +{ +public: + Circle(double r); + Circle(const Circle & other); + + double getArea() const; + double getPerimeter() const; + double getRadius() const; + void print() const; + +private: + Circle(); // doesn't allow to call default constructor + + double r_; +}; diff --git a/includes/Rectangle.hpp b/includes/Rectangle.hpp new file mode 100644 index 0000000..077aed1 --- /dev/null +++ b/includes/Rectangle.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "Shape.hpp" + +class Rectangle : public Shape +{ +public: + Rectangle(double x, double y); + Rectangle(const Rectangle & other); + + double getArea() const; + double getPerimeter() const; + double getX() const; + double getY() const; + void print() const; + +private: + Rectangle(); + + double x_; + double y_; +}; diff --git a/includes/Shape.hpp b/includes/Shape.hpp new file mode 100644 index 0000000..d86bda6 --- /dev/null +++ b/includes/Shape.hpp @@ -0,0 +1,11 @@ +#pragma once + +class Shape +{ +public: + virtual ~Shape() {} + + virtual double getArea() const = 0; + virtual double getPerimeter() const = 0; + virtual void print() const; +}; diff --git a/includes/Square.hpp b/includes/Square.hpp new file mode 100644 index 0000000..676606b --- /dev/null +++ b/includes/Square.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include "Rectangle.hpp" + +class Square : public Rectangle +{ +public: + Square(double x); + Square(const Square & other); + + double getArea(); + double getPerimeter(); + void print(); + +private: + double getY(); // should not have Y dimension + Square(); +};