Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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
20 changes: 20 additions & 0 deletions includes/Circle.hpp
Original file line number Diff line number Diff line change
@@ -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_;
};
22 changes: 22 additions & 0 deletions includes/Rectangle.hpp
Original file line number Diff line number Diff line change
@@ -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_;
};
11 changes: 11 additions & 0 deletions includes/Shape.hpp
Original file line number Diff line number Diff line change
@@ -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;
};
18 changes: 18 additions & 0 deletions includes/Square.hpp
Original file line number Diff line number Diff line change
@@ -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();
};