From fe021e61e15174dff6c36ce016ab4b88e531aff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martyna=20=C5=81=C4=99cka?= Date: Mon, 14 Jan 2019 18:39:19 +0100 Subject: [PATCH 1/2] Makefile added --- Makefile | 9 +++++++++ includes/Circle.hpp | 20 ++++++++++++++++++++ includes/Rectangle.hpp | 22 ++++++++++++++++++++++ includes/Shape.hpp | 11 +++++++++++ includes/Square.hpp | 18 ++++++++++++++++++ 5 files changed, 80 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..7587d31 --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +.PHONY: all +all: debug release + +debug: *.cpp includes/*.hpp + g++ *.cpp -std=c++17 -Wall -Wextra -Wpedantic -Werror -g -o debug -Iincludes + +release: *.cpp includes/*.hpp + g++ *.cpp -std=c++17 -Wall -Wextra -Wpedantic -Werror -O3 -o release -Iincludes + 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(); +}; From 2c3d95697fac43bc7e833ac19736530781ae5d68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martyna=20=C5=81=C4=99cka?= Date: Sat, 19 Jan 2019 01:40:03 +0100 Subject: [PATCH 2/2] Changes in the Makefile file: improved using variables. Removed transferred files. --- CMakeLists.txt | 2 ++ Circle.hpp | 20 -------------------- Makefile | 21 ++++++++++++++++----- Rectangle.hpp | 22 ---------------------- Shape.hpp | 11 ----------- Square.hpp | 18 ------------------ includes/Shape.hpp | 2 +- 7 files changed, 19 insertions(+), 77 deletions(-) delete mode 100644 Circle.hpp delete mode 100644 Rectangle.hpp delete mode 100644 Shape.hpp delete mode 100644 Square.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 395f342..1f30b7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,4 +4,6 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) project(modern_cpp) cmake_minimum_required(VERSION 2.8) aux_source_directory(. SRC_LIST) +include_directories(./includes) +add_definitions(-Wall -Wpedantic -Werror -Wextra) add_executable(${PROJECT_NAME} ${SRC_LIST}) diff --git a/Circle.hpp b/Circle.hpp deleted file mode 100644 index 81897e7..0000000 --- a/Circle.hpp +++ /dev/null @@ -1,20 +0,0 @@ -#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/Makefile b/Makefile index 7587d31..3ae58dd 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,20 @@ +CXX= g++ +CXXFLAGS= -std=c++17 -Wall -Wpedantic -Wextra +SOURCES= *.cpp +OBJECTS= $(SOURCES:.cpp=.o) +INCLUDES= includes/*.hpp +include_dirs= -Iincludes +all_target= debug release + .PHONY: all -all: debug release +all: $(all_target) -debug: *.cpp includes/*.hpp - g++ *.cpp -std=c++17 -Wall -Wextra -Wpedantic -Werror -g -o debug -Iincludes +debug: $(SOURCES) $(INCLUDES) + $(CXX) $< $(CXXFLAGS) -g -o $@ $(include_dir) -release: *.cpp includes/*.hpp - g++ *.cpp -std=c++17 -Wall -Wextra -Wpedantic -Werror -O3 -o release -Iincludes +release: $(SOURCES) $(INCLUDES) + $(CXX) $< $(CXXFLAGS) -O3 -o $@ $(include_dir) +.PHONY: clean +clean: + rm $(all_target) diff --git a/Rectangle.hpp b/Rectangle.hpp deleted file mode 100644 index 077aed1..0000000 --- a/Rectangle.hpp +++ /dev/null @@ -1,22 +0,0 @@ -#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/Shape.hpp b/Shape.hpp deleted file mode 100644 index d86bda6..0000000 --- a/Shape.hpp +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -class Shape -{ -public: - virtual ~Shape() {} - - virtual double getArea() const = 0; - virtual double getPerimeter() const = 0; - virtual void print() const; -}; diff --git a/Square.hpp b/Square.hpp deleted file mode 100644 index 676606b..0000000 --- a/Square.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#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(); -}; diff --git a/includes/Shape.hpp b/includes/Shape.hpp index d86bda6..c011e40 100644 --- a/includes/Shape.hpp +++ b/includes/Shape.hpp @@ -3,7 +3,7 @@ class Shape { public: - virtual ~Shape() {} + virtual ~Shape() {}; virtual double getArea() const = 0; virtual double getPerimeter() const = 0;