From 1b867098e88ef8c0e731f7445ec96c25e667905c Mon Sep 17 00:00:00 2001 From: Adam JOLY Date: Fri, 6 Dec 2024 16:24:15 +0100 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=E2=9C=A8=E3=80=8D=20feat(Ex02):=20Fin?= =?UTF-8?q?ished?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ex02/AAnimal.cpp | 42 ++++++++++++++++++++++++++++++++ ex02/AAnimal.hpp | 32 +++++++++++++++++++++++++ ex02/Abstract | Bin 0 -> 45880 bytes ex02/Brain.cpp | 36 ++++++++++++++++++++++++++++ ex02/Brain.hpp | 26 ++++++++++++++++++++ ex02/Cat.cpp | 48 +++++++++++++++++++++++++++++++++++++ ex02/Cat.hpp | 30 +++++++++++++++++++++++ ex02/Dog.cpp | 48 +++++++++++++++++++++++++++++++++++++ ex02/Dog.hpp | 30 +++++++++++++++++++++++ ex02/Log.cpp | 22 +++++++++++++++++ ex02/Log.hpp | 19 +++++++++++++++ ex02/Makefile | 56 +++++++++++++++++++++++++++++++++++++++++++ ex02/WrongAnimal.cpp | 46 +++++++++++++++++++++++++++++++++++ ex02/WrongAnimal.hpp | 33 +++++++++++++++++++++++++ ex02/WrongCat.cpp | 38 +++++++++++++++++++++++++++++ ex02/WrongCat.hpp | 25 +++++++++++++++++++ ex02/main.cpp | 42 ++++++++++++++++++++++++++++++++ 17 files changed, 573 insertions(+) create mode 100644 ex02/AAnimal.cpp create mode 100644 ex02/AAnimal.hpp create mode 100755 ex02/Abstract create mode 100644 ex02/Brain.cpp create mode 100644 ex02/Brain.hpp create mode 100644 ex02/Cat.cpp create mode 100644 ex02/Cat.hpp create mode 100644 ex02/Dog.cpp create mode 100644 ex02/Dog.hpp create mode 100644 ex02/Log.cpp create mode 100644 ex02/Log.hpp create mode 100644 ex02/Makefile create mode 100644 ex02/WrongAnimal.cpp create mode 100644 ex02/WrongAnimal.hpp create mode 100644 ex02/WrongCat.cpp create mode 100644 ex02/WrongCat.hpp create mode 100644 ex02/main.cpp diff --git a/ex02/AAnimal.cpp b/ex02/AAnimal.cpp new file mode 100644 index 0000000..63edb81 --- /dev/null +++ b/ex02/AAnimal.cpp @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* AAnimal.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:14:27 by adjoly #+# #+# */ +/* Updated: 2024/12/06 16:23:53 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "AAnimal.hpp" + +AAnimal::AAnimal(void) { + log("➕", "AAnimal", "", "construtor called"); +} + +AAnimal::~AAnimal() { + log("➖", "AAnimal", _type, "destructor called"); +} + +AAnimal::AAnimal(std::string type) : _type(type) { + log("➕", "AAnimal", type, "construtor called"); +} + +AAnimal::AAnimal(const AAnimal &cpy) { + log("➕", "AAnimal", _type, "copy construtor called"); + *this = cpy; +} + +AAnimal &AAnimal::operator=(const AAnimal &cpy) { + log("🟰", "AAnimal", _type, "copy assignment construtor called"); + if (this != &cpy) { + _type = cpy._type; + } + return (*this); +} + +std::string AAnimal::getType(void) const { + return (_type); +} diff --git a/ex02/AAnimal.hpp b/ex02/AAnimal.hpp new file mode 100644 index 0000000..47b3598 --- /dev/null +++ b/ex02/AAnimal.hpp @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* AAnimal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/11/30 16:33:08 by adjoly #+# #+# */ +/* Updated: 2024/12/06 16:24:03 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include +#include "Log.hpp" + +class AAnimal { + protected: + std::string _type; + + public: + AAnimal(void); + AAnimal(std::string); + virtual ~AAnimal(void); + AAnimal(const AAnimal &); + virtual AAnimal &operator=(const AAnimal &); + + virtual std::string getType(void) const; + + virtual void makeSound(void) const = 0; +}; diff --git a/ex02/Abstract b/ex02/Abstract new file mode 100755 index 0000000000000000000000000000000000000000..1f911eb31e681452a62b3431674f3ff78c3b3d34 GIT binary patch literal 45880 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 M6zX)(01v7D4|2DV@c;k- literal 0 HcmV?d00001 diff --git a/ex02/Brain.cpp b/ex02/Brain.cpp new file mode 100644 index 0000000..24a3af4 --- /dev/null +++ b/ex02/Brain.cpp @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Brain.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/06 11:47:20 by adjoly #+# #+# */ +/* Updated: 2024/12/06 15:53:11 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Brain.hpp" + +Brain::Brain(void) { + log("➕", "Brain", "", "construtor called"); +} + +Brain::~Brain(void) { + log("➖", "Brain", "", "destructor called"); +} + +Brain::Brain(const Brain &cpy) { + log("➕", "Brain", "", "copy construtor called"); + *this = cpy; +} + +Brain &Brain::operator=(const Brain &cpy) { + log("🟰", "Brain", "", "copy assignment construtor called"); + if (this != &cpy) { + for (uint i = 0; i < 100; i++) { + this->_ideas[i] = cpy._ideas[i]; + } + } + return (*this); +} diff --git a/ex02/Brain.hpp b/ex02/Brain.hpp new file mode 100644 index 0000000..3454fa5 --- /dev/null +++ b/ex02/Brain.hpp @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Brain.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/06 11:35:05 by adjoly #+# #+# */ +/* Updated: 2024/12/06 15:53:18 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include +#include "Log.hpp" + +class Brain { + public: + Brain(void); + ~Brain(void); + Brain(const Brain &); + Brain &operator=(const Brain &); + + std::string _ideas[100]; +}; diff --git a/ex02/Cat.cpp b/ex02/Cat.cpp new file mode 100644 index 0000000..26c00d7 --- /dev/null +++ b/ex02/Cat.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:49:11 by adjoly #+# #+# */ +/* Updated: 2024/12/06 16:09:23 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Cat.hpp" + +Cat::Cat(void) : AAnimal("Cat"){ + _brain = new Brain(); + log("➕", "Cat", "", "construtor called"); +} + +Cat::~Cat(void) { + delete _brain; + log("➖", "Cat", "", "destructor called"); +} + +Cat::Cat(const Cat &cpy) : AAnimal("Cat"){ + log("➕", "Cat", _type, "copy construtor called"); + *this = cpy; +} + +Cat &Cat::operator=(const Cat &cpy) { + log("🟰", "Cat", "", "copy assignment construtor called"); + if (this != &cpy) { + this->_type = cpy._type; + } + return (*this); +} + +void Cat::makeSound(void) const { + log("🔊", "Cat", "", "Mmmmmmeeeeeeeeoooooooowwwwww"); +} + +void Cat::setIdea(std::string idea, uint i) { + _brain->_ideas[i] = idea; +} + +std::string Cat::getIdea(uint i) { + return (_brain->_ideas[i]); +} diff --git a/ex02/Cat.hpp b/ex02/Cat.hpp new file mode 100644 index 0000000..595323f --- /dev/null +++ b/ex02/Cat.hpp @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Cat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:06:08 by adjoly #+# #+# */ +/* Updated: 2024/12/06 16:08:59 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include "AAnimal.hpp" +#include "Brain.hpp" + +class Cat : public AAnimal { + private: + Brain *_brain; + public: + Cat(void); + ~Cat(void); + Cat(const Cat &); + Cat &operator=(const Cat &); + + void makeSound(void) const; + void setIdea(std::string, uint); + std::string getIdea(uint); +}; diff --git a/ex02/Dog.cpp b/ex02/Dog.cpp new file mode 100644 index 0000000..f895a91 --- /dev/null +++ b/ex02/Dog.cpp @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Dog.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 20:05:21 by adjoly #+# #+# */ +/* Updated: 2024/12/06 16:09:36 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "Dog.hpp" + +Dog::Dog(void) : AAnimal("Dog"){ + _brain = new Brain(); + log("➕", "Dog", "", "construtor called"); +} + +Dog::~Dog(void) { + delete _brain; + log("➖", "Dog", "", "destructor called"); +} + +Dog::Dog(const Dog &cpy) : AAnimal("Dog"){ + log("➕", "Dog", _type, "copy construtor called"); + *this = cpy; +} + +Dog &Dog::operator=(const Dog &cpy) { + log("🟰", "Dog", "", "copy assignment construtor called"); + if (this != &cpy) { + this->_type = cpy._type; + } + return (*this); +} + +void Dog::makeSound(void) const { + log("🔊", "Dog", "", "woof"); +} + +void Dog::setIdea(std::string idea, uint i) { + _brain->_ideas[i] = idea; +} + +std::string Dog::getIdea(uint i) { + return (_brain->_ideas[i]); +} diff --git a/ex02/Dog.hpp b/ex02/Dog.hpp new file mode 100644 index 0000000..d38fcc3 --- /dev/null +++ b/ex02/Dog.hpp @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* Dog.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 20:06:20 by adjoly #+# #+# */ +/* Updated: 2024/12/06 16:08:53 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include "AAnimal.hpp" +#include "Brain.hpp" + +class Dog : public AAnimal { + private: + Brain *_brain; + public: + Dog(void); + ~Dog(void); + Dog(const Dog &); + Dog &operator=(const Dog &); + + void makeSound(void) const; + void setIdea(std::string, uint); + std::string getIdea(uint); +}; diff --git a/ex02/Log.cpp b/ex02/Log.cpp new file mode 100644 index 0000000..9dbf721 --- /dev/null +++ b/ex02/Log.cpp @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* log.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/11/30 16:30:53 by adjoly #+# #+# */ +/* Updated: 2024/11/30 16:32:37 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +void log(std::string emoji, std::string what, std::string who, std::string str) { + if (who.empty()) + std::cout << "「" << emoji << "」" << what << ": " << str << std::endl; + else + std::cout << "「" << emoji << "」" << what << "(" << who << "): " << str << std::endl; +} + diff --git a/ex02/Log.hpp b/ex02/Log.hpp new file mode 100644 index 0000000..5b8e7fe --- /dev/null +++ b/ex02/Log.hpp @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* log.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/06 12:01:21 by adjoly #+# #+# */ +/* Updated: 2024/12/06 13:12:13 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include + +typedef unsigned int uint; + +void log(std::string, std::string, std::string, std::string); diff --git a/ex02/Makefile b/ex02/Makefile new file mode 100644 index 0000000..6d5d0a5 --- /dev/null +++ b/ex02/Makefile @@ -0,0 +1,56 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: adjoly +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2024/10/25 16:09:27 by adjoly #+# #+# # +# Updated: 2024/12/06 16:11:18 by adjoly ### ########.fr # +# # +# **************************************************************************** # + +SHELL = bash + +NAME = Abstract + +CC = c++ + +OBJSDIR = obj/ + +SRCS = $(shell find . -name '*.cpp') + +OBJS = $(addprefix $(OBJSDIR), $(SRCS:.cpp=.o)) + +FLAGS = -Wall -Werror -Wextra -std=c++98 -MMD -MP + +RED = \033[0;31m +GREEN = \033[0;32m +YELLOW = \033[1;33m +PURPLE = \e[0;35m +NC = \033[0m +DELETE = \x1B[2K\r + +all: $(NAME) + +$(NAME): $(OBJS) + @$(CC) $(FLAGS) $(OBJS) -o $(NAME) + @printf "$(YELLOW)「✨」($(NAME)) Program compiled\n" + +$(OBJSDIR)%.o: %.cpp + @mkdir -p $(@D) + @$(CC) $(FLAGS) -c $< -o $@ + @printf "$(DELETE)$(GREEN)「🔨」($<) Object compiled\n" + +clean: + @rm -f $(OBJS) + @printf "$(DELETE)$(RED)「🗑️」($(OBJS)) Object deleted\n" + +fclean: clean + @rm -f $(NAME) + @rm -Rf $(OBJSDIR) + @printf "$(RED)「🗑️」($(NAME)) Program deleted\n" + +re: fclean all + +.PHONY: clean fclean all re diff --git a/ex02/WrongAnimal.cpp b/ex02/WrongAnimal.cpp new file mode 100644 index 0000000..418fa70 --- /dev/null +++ b/ex02/WrongAnimal.cpp @@ -0,0 +1,46 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongAnimal.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:14:27 by adjoly #+# #+# */ +/* Updated: 2024/12/04 13:56:34 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "WrongAnimal.hpp" + +WrongAnimal::WrongAnimal(void) { + log("➕", "WrongAnimal", "", "construtor called"); +} + +WrongAnimal::~WrongAnimal() { + log("➖", "WrongAnimal", _type, "destructor called"); +} + +WrongAnimal::WrongAnimal(std::string type) : _type(type) { + log("➕", "WrongAnimal", type, "construtor called"); +} + +WrongAnimal::WrongAnimal(const WrongAnimal &cpy) { + log("➕", "WrongAnimal", _type, "copy construtor called"); + *this = cpy; +} + +WrongAnimal &WrongAnimal::operator=(const WrongAnimal &cpy) { + log("🟰", "WrongAnimal", _type, "copy assignment construtor called"); + if (this != &cpy) { + _type = cpy._type; + } + return (*this); +} + +void WrongAnimal::makeSound(void) const { + log("🔊", "WrongAnimal", "", "making a wrong sound OOOOOOOOOOOOOOOoo"); +} + +std::string WrongAnimal::getType(void) const { + return (_type); +} diff --git a/ex02/WrongAnimal.hpp b/ex02/WrongAnimal.hpp new file mode 100644 index 0000000..14ba80e --- /dev/null +++ b/ex02/WrongAnimal.hpp @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongAnimal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/11/30 16:33:08 by adjoly #+# #+# */ +/* Updated: 2024/12/04 13:50:36 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include + +class WrongAnimal { + protected: + std::string _type; + + public: + WrongAnimal(void); + ~WrongAnimal(void); + WrongAnimal(std::string); + WrongAnimal(const WrongAnimal &); + WrongAnimal &operator=(const WrongAnimal &); + + std::string getType(void) const; + + void makeSound(void) const; +}; + +void log(std::string, std::string, std::string, std::string); diff --git a/ex02/WrongCat.cpp b/ex02/WrongCat.cpp new file mode 100644 index 0000000..1121b3c --- /dev/null +++ b/ex02/WrongCat.cpp @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongCat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:49:11 by adjoly #+# #+# */ +/* Updated: 2024/12/06 15:55:37 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "WrongCat.hpp" + +WrongCat::WrongCat(void) : WrongAnimal("WrongCat"){ + log("➕", "WrongCat", "", "construtor called"); +} + +WrongCat::~WrongCat(void) { + log("➖", "WrongCat", "", "destructor called"); +} + +WrongCat::WrongCat(const WrongCat &cpy) : WrongAnimal("WrongCat"){ + log("➕", "WrongCat", _type, "copy construtor called"); + *this = cpy; +} + +WrongCat &WrongCat::operator=(const WrongCat &cpy) { + log("🟰", "WrongCat", "", "copy assignment construtor called"); + if (this != &cpy) { + this->_type = cpy._type; + } + return (*this); +} + +void WrongCat::makeSound(void) const { + log("🔊", "WrongCat", "", "wwwwwwwwooooooooeeeeeeeeemmmmmmm"); +} diff --git a/ex02/WrongCat.hpp b/ex02/WrongCat.hpp new file mode 100644 index 0000000..6dd78a2 --- /dev/null +++ b/ex02/WrongCat.hpp @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* WrongCat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:06:08 by adjoly #+# #+# */ +/* Updated: 2024/12/06 15:55:47 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include "WrongAnimal.hpp" + +class WrongCat : public WrongAnimal { + public: + WrongCat(void); + ~WrongCat(void); + WrongCat(const WrongCat &); + WrongCat &operator=(const WrongCat &); + + void makeSound(void) const; +}; diff --git a/ex02/main.cpp b/ex02/main.cpp new file mode 100644 index 0000000..231b667 --- /dev/null +++ b/ex02/main.cpp @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/06 11:20:59 by adjoly #+# #+# */ +/* Updated: 2024/12/06 16:21:49 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "AAnimal.hpp" +#include "Dog.hpp" +#include "Cat.hpp" + +int main() { + const AAnimal* dog = new Dog(); + Cat* cat = new Cat(); + + cat->setIdea("I want to eat", 0); + cat->setIdea("I want to eat", 1); + cat->setIdea("I want to eat", 2); + cat->setIdea("I want to eat", 3); + cat->setIdea("I want to eat", 4); + cat->setIdea("I want to eat", 5); + cat->setIdea("I want to eat", 6); + dog->makeSound(); + cat->makeSound(); + log("🥩", "Idea", "Cat", cat->getIdea(0)); + log("🥩", "Idea", "Cat", cat->getIdea(1)); + log("🥩", "Idea", "Cat", cat->getIdea(2)); + log("🥩", "Idea", "Cat", cat->getIdea(3)); + log("🥩", "Idea", "Cat", cat->getIdea(4)); + log("🥩", "Idea", "Cat", cat->getIdea(5)); + log("🥩", "Idea", "Cat", cat->getIdea(6)); + + delete cat; + delete dog; + + return 0; +}