somewhere in ex02

This commit is contained in:
whaffman 2025-04-07 17:47:36 +02:00
parent a8791889b7
commit f55c6faed3
27 changed files with 1005 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.vscode/settings.json

35
Makefile Normal file
View File

@ -0,0 +1,35 @@
# **************************************************************************** #
# #
# :::::::: #
# Makefile :+: :+: #
# +:+ #
# By: whaffman <whaffman@student.codam.nl> +#+ #
# +#+ #
# Created: 2025/03/21 14:50:00 by whaffman #+# #+# #
# Updated: 2025/03/21 14:58:40 by whaffman ######## odam.nl #
# #
# **************************************************************************** #
EX = $(shell find . -maxdepth 1 -type d -name 'ex*' -exec basename {} \;)
all:
for ex in $(EX); do \
$(MAKE) -C $$ex; \
done
clean:
for ex in $(EX); do \
$(MAKE) -C $$ex clean; \
done
fclean:
for ex in $(EX); do \
$(MAKE) -C $$ex fclean; \
done
re:
for ex in $(EX); do \
$(MAKE) -C $$ex re; \
done
.PHONY: all clean fclean re

35
common.mk Normal file
View File

@ -0,0 +1,35 @@
# **************************************************************************** #
# #
# :::::::: #
# common.mk :+: :+: #
# +:+ #
# By: whaffman <whaffman@student.codam.nl> +#+ #
# +#+ #
# Created: 2025/03/21 15:00:16 by whaffman #+# #+# #
# Updated: 2025/03/21 15:04:44 by whaffman ######## odam.nl #
# #
# **************************************************************************** #
INC = -I./inc
VPATH = src
OBJ = $(SRC:.cpp=.o)
CC = c++
CFLAGS = -Wall -Wextra -Werror
all: $(NAME)
$(NAME): $(OBJ)
$(CC) $(CFLAGS) $(OBJ) -o $(NAME)
%.o: %.cpp
$(CC) $(CFLAGS) $(INC) -c $< -o $@
clean:
rm -f $(OBJ)
fclean: clean
rm -f $(NAME)
re: fclean all
.PHONY: all clean fclean re

21
ex00/Makefile Normal file
View File

@ -0,0 +1,21 @@
# **************************************************************************** #
# #
# :::::::: #
# Makefile :+: :+: #
# +:+ #
# By: whaffman <whaffman@student.codam.nl> +#+ #
# +#+ #
# Created: 2025/03/24 15:14:58 by whaffman #+# #+# #
# Updated: 2025/04/05 17:33:17 by whaffman ######## odam.nl #
# #
# **************************************************************************** #
NAME= Polymorphism
SRC= main.cpp \
Animal.cpp \
Dog.cpp \
Cat.cpp \
WrongAnimal.cpp \
WrongCat.cpp
-include ../common.mk

30
ex00/inc/Animal.hpp Normal file
View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Animal.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 16:53:44 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include <string>
class Animal
{
protected:
std::string type;
public:
Animal();
Animal(const Animal &animal);
virtual ~Animal();
Animal &operator=(const Animal &animal);
virtual void makeSound(void) const;
std::string getType(void) const;
};

27
ex00/inc/Cat.hpp Normal file
View File

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Cat.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:02:57 by whaffman #+# #+# */
/* Updated: 2025/04/05 17:30:47 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include "Animal.hpp"
#include <string>
class Cat : public Animal
{
public:
Cat();
Cat(const Cat &cat);
~Cat() override;
Cat &operator=(const Cat &cat);
void makeSound(void) const override;
};

27
ex00/inc/Dog.hpp Normal file
View File

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Dog.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:04:03 by whaffman #+# #+# */
/* Updated: 2025/04/05 17:30:41 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include "Animal.hpp"
#include <string>
class Dog : public Animal
{
public:
Dog();
Dog(const Dog &Dog);
~Dog() override;
Dog &operator=(const Dog &Dog);
void makeSound(void) const override;
};

32
ex00/inc/WrongAnimal.hpp Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* WrongAnimal.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:24:04 by whaffman #+# #+# */
/* Updated: 2025/04/05 17:26:34 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include <string>
#include <iostream>
class WrongAnimal
{
protected:
std::string type;
public:
WrongAnimal();
WrongAnimal(const WrongAnimal &animal);
virtual ~WrongAnimal();
WrongAnimal &operator=(const WrongAnimal &animal);
virtual void makeSound(void) const;
std::string getType(void) const;
};

28
ex00/inc/WrongCat.hpp Normal file
View File

@ -0,0 +1,28 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* WrongCat.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:23:37 by whaffman #+# #+# */
/* Updated: 2025/04/05 17:30:32 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include "WrongAnimal.hpp"
#include <string>
#include <iostream>
class WrongCat : public WrongAnimal
{
public:
WrongCat();
WrongCat(const WrongCat &cat);
~WrongCat() override;
WrongCat &operator=(const WrongCat &cat);
void makeSound(void) const override;
};

45
ex00/src/Animal.cpp Normal file
View File

@ -0,0 +1,45 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Animal.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 16:59:26 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Animal.hpp"
#include <iostream>
#include <string>
Animal::Animal()
{
this->type = "Animal";
std::cout << "Animal default constructor called" << std::endl;
}
Animal::Animal(const Animal &animal) : type(animal.type)
{
std::cout << "Animal copy constructor called" << std::endl;
}
Animal::~Animal()
{
std::cout << "Animal destructor called" << std::endl;
}
Animal &Animal::operator=(const Animal &animal)
{
std::cout << "Animal assignment operator called" << std::endl;
if (this == &animal)
return *this;
type = animal.type;
return *this;
}
void Animal::makeSound(void) const
{
}
std::string Animal::getType(void) const
{
return type;
}

44
ex00/src/Cat.cpp Normal file
View File

@ -0,0 +1,44 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Cat.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:05:34 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Cat.hpp"
#include <iostream>
#include <string>
Cat::Cat()
{
this->type = "Cat";
std::cout << "Cat default constructor called" << std::endl;
}
Cat::Cat(const Cat &cat) : Animal(cat)
{
this->type = cat.type;
std::cout << "Cat copy constructor called" << std::endl;
}
Cat::~Cat()
{
std::cout << "Cat destructor called" << std::endl;
}
Cat &Cat::operator=(const Cat &cat)
{
std::cout << "Cat assignment operator called" << std::endl;
if (this == &cat)
return *this;
type = cat.type;
return *this;
}
void Cat::makeSound(void) const
{
std::cout << "Meow" << std::endl;
}

43
ex00/src/Dog.cpp Normal file
View File

@ -0,0 +1,43 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Dog.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:06:12 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Dog.hpp"
#include <iostream>
#include <string>
Dog::Dog()
{
this->type = "Dog";
std::cout << "Dog default constructor called" << std::endl;
}
Dog::Dog(const Dog &dog) : Animal(dog)
{
this->type = dog.type;
std::cout << "Dog copy constructor called" << std::endl;
}
Dog::~Dog()
{
std::cout << "Dog destructor called" << std::endl;
}
Dog &Dog::operator=(const Dog &dog)
{
std::cout << "Dog assignment operator called" << std::endl;
if (this == &dog)
return *this;
type = dog.type;
return *this;
}
void Dog::makeSound(void) const
{
std::cout << "Woof" << std::endl;
}

43
ex00/src/WrongAnimal.cpp Normal file
View File

@ -0,0 +1,43 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* WrongAnimal.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:26:52 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "WrongAnimal.hpp"
#include <iostream>
#include <string>
WrongAnimal::WrongAnimal()
{
this->type = "WrongAnimal";
std::cout << "WrongAnimal default constructor called" << std::endl;
}
WrongAnimal::WrongAnimal(const WrongAnimal &animal) : type(animal.type)
{
std::cout << "WrongAnimal copy constructor called" << std::endl;
}
WrongAnimal::~WrongAnimal()
{
std::cout << "WrongAnimal destructor called" << std::endl;
}
WrongAnimal &WrongAnimal::operator=(const WrongAnimal &animal)
{
std::cout << "WrongAnimal assignment operator called" << std::endl;
if (this == &animal)
return *this;
type = animal.type;
return *this;
}
void WrongAnimal::makeSound(void) const {}
std::string WrongAnimal::getType(void) const
{
return type;
}

41
ex00/src/WrongCat.cpp Normal file
View File

@ -0,0 +1,41 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* WrongCat.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:28:51 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "WrongCat.hpp"
WrongCat::WrongCat()
{
this->type = "WrongCat";
std::cout << "WrongCat default constructor called" << std::endl;
}
WrongCat::WrongCat(const WrongCat &cat) : WrongAnimal(cat)
{
this->type = cat.type;
std::cout << "WrongCat copy constructor called" << std::endl;
}
WrongCat::~WrongCat()
{
std::cout << "WrongCat destructor called" << std::endl;
}
WrongCat &WrongCat::operator=(const WrongCat &cat)
{
std::cout << "WrongCat assignment operator called" << std::endl;
if (this == &cat)
return *this;
type = cat.type;
return *this;
}
void WrongCat::makeSound(void) const
{
std::cout << "WrongMeow" << std::endl;
}

92
ex00/src/main.cpp Normal file
View File

@ -0,0 +1,92 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* main.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:06:50 by whaffman #+# #+# */
/* Updated: 2025/04/05 18:01:03 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Animal.hpp"
#include "WrongAnimal.hpp"
#include "Dog.hpp"
#include "Cat.hpp"
#include "WrongCat.hpp"
#include <iostream>
int main(void)
{
std::cout << "Construct Animal, Cat and Dog" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "construct an animal:" << std::endl;
const Animal* animal = new Animal();
std::cout << "construct a cat:" << std::endl;
const Animal* cat = new Cat();
std::cout << "construct a dog:" << std::endl;
const Animal* dog = new Dog();
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the getType function" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "animal is of type : " << animal->getType() << std::endl;
std::cout << "cat is of type : " << cat->getType() << std::endl;
std::cout << "dog is of type : " << dog->getType() << std::endl;
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the makeSound function" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "animal sound : ";
animal->makeSound();
std::cout << std::endl;
std::cout << "cat sound : ";
cat->makeSound();
std::cout << "dog sound : ";
dog->makeSound();
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the destructor" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "delete animal:" << std::endl;
delete animal;
std::cout << "delete cat:" << std::endl;
delete cat;
std::cout << "delete dog:" << std::endl;
delete dog;
std::cout << "========================================" << std::endl << std::endl;
std::cout << "Construct WrongAnimal, WrongCat" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "construct a wrongAnimal:" << std::endl;
const WrongAnimal* wrongAnimal = new WrongAnimal();
std::cout << "construct a wrongCat:" << std::endl;
const WrongAnimal* wrongCat = new WrongCat();
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the getType function" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "wrongAnimal is of type : " << wrongAnimal->getType() << std::endl;
std::cout << "wrongCat is of type : " << wrongCat->getType() << std::endl;
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the makeSound function" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "wrongAnimal sound : ";
wrongAnimal->makeSound();
std::cout << std::endl;
std::cout << "wrongCat sound : ";
wrongCat->makeSound();
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the destructor" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "delete wrongAnimal:" << std::endl;
delete wrongAnimal;
std::cout << "delete wrongCat:" << std::endl;
delete wrongCat;
std::cout << "========================================" << std::endl << std::endl;
return 0;
}

20
ex01/Makefile Normal file
View File

@ -0,0 +1,20 @@
# **************************************************************************** #
# #
# :::::::: #
# Makefile :+: :+: #
# +:+ #
# By: whaffman <whaffman@student.codam.nl> +#+ #
# +#+ #
# Created: 2025/03/24 15:14:58 by whaffman #+# #+# #
# Updated: 2025/04/05 17:53:27 by whaffman ######## odam.nl #
# #
# **************************************************************************** #
NAME= WithBrains
SRC= main.cpp \
Animal.cpp \
Dog.cpp \
Cat.cpp \
Brain.cpp
-include ../common.mk

30
ex01/inc/Animal.hpp Normal file
View File

@ -0,0 +1,30 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Animal.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 16:53:44 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include <string>
class Animal
{
protected:
std::string type;
public:
Animal();
Animal(const Animal &animal);
virtual ~Animal();
Animal &operator=(const Animal &animal);
virtual void makeSound(void) const;
std::string getType(void) const;
};

37
ex01/inc/Brain.hpp Normal file
View File

@ -0,0 +1,37 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Brain.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:40:33 by whaffman #+# #+# */
/* Updated: 2025/04/06 11:29:20 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include <string>
#include <array>
#define MAX_IDEAS 10
class Brain
{
private:
std::array<std::string, MAX_IDEAS> ideas;
public:
Brain();
Brain(const Brain &brain);
~Brain();
Brain &operator=(const Brain &brain);
void setIdea(int index, const std::string &idea);
std::string getIdea(int index) const;
void clearIdeas();
void fillRandomIdeas();
void printIdeas() const;
void printIdea(int index) const;
};

32
ex01/inc/Cat.hpp Normal file
View File

@ -0,0 +1,32 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Cat.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:02:57 by whaffman #+# #+# */
/* Updated: 2025/04/05 17:50:55 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include "Animal.hpp"
#include "Brain.hpp"
#include <string>
class Cat : public Animal
{
private:
Brain *brain;
public:
Cat();
Cat(const Cat &cat);
~Cat() override;
Cat &operator=(const Cat &cat);
void makeSound(void) const override;
};

31
ex01/inc/Dog.hpp Normal file
View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Dog.hpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:04:03 by whaffman #+# #+# */
/* Updated: 2025/04/05 17:49:51 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#pragma once
#include "Animal.hpp"
#include "Brain.hpp"
#include <string>
class Dog : public Animal
{
private:
Brain *brain;
public:
Dog();
Dog(const Dog &Dog);
~Dog() override;
Dog &operator=(const Dog &Dog);
void makeSound(void) const override;
};

45
ex01/src/Animal.cpp Normal file
View File

@ -0,0 +1,45 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Animal.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 16:59:26 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Animal.hpp"
#include <iostream>
#include <string>
Animal::Animal()
{
this->type = "Animal";
std::cout << "Animal default constructor called" << std::endl;
}
Animal::Animal(const Animal &animal) : type(animal.type)
{
std::cout << "Animal copy constructor called" << std::endl;
}
Animal::~Animal()
{
std::cout << "Animal destructor called" << std::endl;
}
Animal &Animal::operator=(const Animal &animal)
{
std::cout << "Animal assignment operator called" << std::endl;
if (this == &animal)
return *this;
type = animal.type;
return *this;
}
void Animal::makeSound(void) const
{
}
std::string Animal::getType(void) const
{
return type;
}

81
ex01/src/Brain.cpp Normal file
View File

@ -0,0 +1,81 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Brain.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:42:41 by whaffman #+# #+# */
/* Updated: 2025/04/06 11:27:41 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Brain.hpp"
#include <iostream>
#include <string>
#include <array>
Brain::Brain()
{
std::cout << "Brain default constructor called" << std::endl;
}
Brain::Brain(const Brain &brain)
{
std::cout << "Brain copy constructor called" << std::endl;
*this = brain;
}
Brain::~Brain()
{
std::cout << "Brain destructor called" << std::endl;
}
Brain &Brain::operator=(const Brain &brain)
{
std::cout << "Brain assignment operator called" << std::endl;
if (this == &brain)
return *this;
for (size_t i = 0; i < ideas.size(); ++i)
ideas[i] = brain.ideas[i];
return *this;
}
void Brain::setIdea(int index, const std::string &idea)
{
if (index >= 0 && index < 100)
ideas[index] = idea;
}
void Brain::fillRandomIdeas()
{
for (size_t i = 0; i < ideas.size(); ++i)
ideas[i] = "Random idea " + std::to_string(i);
}
std::string Brain::getIdea(int index) const
{
if (index >= 0 && index < 100)
return ideas[index];
return "";
}
void Brain::clearIdeas()
{
for (size_t i = 0; i < ideas.size(); ++i)
ideas[i] = "";
}
void Brain::printIdeas() const
{
for (size_t i = 0; i < ideas.size(); ++i)
{
if (!ideas[i].empty())
printIdea(i);
}
}
void Brain::printIdea(int index) const
{
if (index >= 0 && index < 100)
std::cout << "Idea " << index << ": " << ideas[index] << std::endl;
}

50
ex01/src/Cat.cpp Normal file
View File

@ -0,0 +1,50 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Cat.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:05:34 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Cat.hpp"
#include "Brain.hpp"
#include <iostream>
#include <string>
Cat::Cat() : Animal(), brain(new Brain())
{
type = "Cat";
std::cout << "Cat default constructor called" << std::endl;
}
Cat::Cat(const Cat &cat) : Animal(cat), brain(new Brain(*cat.brain))
{
std::cout << "Cat copy constructor called" << std::endl;
}
Cat::~Cat()
{
delete brain;
std::cout << "Cat destructor called" << std::endl;
}
Cat &Cat::operator=(const Cat &cat)
{
std::cout << "Cat assignment operator called" << std::endl;
if (this == &cat)
return *this;
delete brain;
brain = new Brain(*cat.brain);
type = cat.type;
return *this;
}
void Cat::makeSound(void) const
{
std::cout << "Meow" << std::endl;
}

43
ex01/src/Dog.cpp Normal file
View File

@ -0,0 +1,43 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* Dog.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:06:12 by whaffman #+# #+# */
/* Updated: 2025/04/06 12:26:31 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Dog.hpp"
#include <iostream>
#include <string>
Dog::Dog()
{
this->type = "Dog";
std::cout << "Dog default constructor called" << std::endl;
}
Dog::Dog(const Dog &dog) : Animal(dog)
{
this->type = dog.type;
std::cout << "Dog copy constructor called" << std::endl;
}
Dog::~Dog()
{
std::cout << "Dog destructor called" << std::endl;
}
Dog &Dog::operator=(const Dog &dog)
{
std::cout << "Dog assignment operator called" << std::endl;
if (this == &dog)
return *this;
type = dog.type;
return *this;
}
void Dog::makeSound(void) const
{
std::cout << "Woof" << std::endl;
}

60
ex01/src/main.cpp Normal file
View File

@ -0,0 +1,60 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* main.cpp :+: :+: */
/* +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/05 17:06:50 by whaffman #+# #+# */
/* Updated: 2025/04/05 18:01:13 by whaffman ######## odam.nl */
/* */
/* ************************************************************************** */
#include "Animal.hpp"
#include "Dog.hpp"
#include "Cat.hpp"
#include <iostream>
int main(void)
{
std::cout << "Construct Animal, Cat and Dog" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "construct an animal:" << std::endl;
const Animal* animal = new Animal();
std::cout << "construct a cat:" << std::endl;
const Animal* cat = new Cat();
std::cout << "construct a dog:" << std::endl;
const Animal* dog = new Dog();
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the getType function" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "animal is of type : " << animal->getType() << std::endl;
std::cout << "cat is of type : " << cat->getType() << std::endl;
std::cout << "dog is of type : " << dog->getType() << std::endl;
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the makeSound function" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "animal sound : ";
animal->makeSound();
std::cout << std::endl;
std::cout << "cat sound : ";
cat->makeSound();
std::cout << "dog sound : ";
dog->makeSound();
std::cout << "========================================" << std::endl << std::endl;
std::cout << "test the destructor" << std::endl;
std::cout << "----------------------------------------" << std::endl;
std::cout << "delete animal:" << std::endl;
delete animal;
std::cout << "delete cat:" << std::endl;
delete cat;
std::cout << "delete dog:" << std::endl;
delete dog;
std::cout << "========================================" << std::endl << std::endl;
return 0;
}

16
ex02/Makefile Normal file
View File

@ -0,0 +1,16 @@
# **************************************************************************** #
# #
# :::::::: #
# Makefile :+: :+: #
# +:+ #
# By: whaffman <whaffman@student.codam.nl> +#+ #
# +#+ #
# Created: 2025/03/24 15:14:58 by whaffman #+# #+# #
# Updated: 2025/04/05 16:49:25 by whaffman ######## odam.nl #
# #
# **************************************************************************** #
NAME=
SRC= main.cpp
-include ../common.mk

16
ex03/Makefile Normal file
View File

@ -0,0 +1,16 @@
# **************************************************************************** #
# #
# :::::::: #
# Makefile :+: :+: #
# +:+ #
# By: whaffman <whaffman@student.codam.nl> +#+ #
# +#+ #
# Created: 2025/03/24 15:14:58 by whaffman #+# #+# #
# Updated: 2025/04/05 16:49:25 by whaffman ######## odam.nl #
# #
# **************************************************************************** #
NAME=
SRC= main.cpp
-include ../common.mk