From c22dad6f834d8a2f390c71fdf33cc5eb7b02c6c1 Mon Sep 17 00:00:00 2001 From: Adam JOLY Date: Sun, 1 Dec 2024 20:24:38 +0100 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=E2=9C=A8=E3=80=8D=20feat(Ex00):=20add?= =?UTF-8?q?ed=20a=20very=20cool=20feature=20!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ex00/Makefile | 56 ++++++++++++++++++++++++++++++++++++++++++++++ ex00/Polymorphism | Bin 0 -> 27800 bytes ex00/animal.cpp | 46 +++++++++++++++++++++++++++++++++++++ ex00/animal.hpp | 33 +++++++++++++++++++++++++++ ex00/cat.cpp | 38 +++++++++++++++++++++++++++++++ ex00/cat.hpp | 25 +++++++++++++++++++++ ex00/dog.cpp | 38 +++++++++++++++++++++++++++++++ ex00/dog.hpp | 25 +++++++++++++++++++++ ex00/log.cpp | 22 ++++++++++++++++++ ex00/main.cpp | 37 ++++++++++++++++++++++++++++++ ex00/obj/animal.d | 2 ++ ex00/obj/cat.d | 3 +++ ex00/obj/dog.d | 3 +++ ex00/obj/log.d | 1 + ex00/obj/main.d | 4 ++++ 15 files changed, 333 insertions(+) create mode 100644 ex00/Makefile create mode 100755 ex00/Polymorphism create mode 100644 ex00/animal.cpp create mode 100644 ex00/animal.hpp create mode 100644 ex00/cat.cpp create mode 100644 ex00/cat.hpp create mode 100644 ex00/dog.cpp create mode 100644 ex00/dog.hpp create mode 100644 ex00/log.cpp create mode 100644 ex00/main.cpp create mode 100644 ex00/obj/animal.d create mode 100644 ex00/obj/cat.d create mode 100644 ex00/obj/dog.d create mode 100644 ex00/obj/log.d create mode 100644 ex00/obj/main.d diff --git a/ex00/Makefile b/ex00/Makefile new file mode 100644 index 0000000..a19c5bc --- /dev/null +++ b/ex00/Makefile @@ -0,0 +1,56 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: adjoly +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2024/10/25 16:09:27 by adjoly #+# #+# # +# Updated: 2024/11/30 16:22:30 by adjoly ### ########.fr # +# # +# **************************************************************************** # + +SHELL = bash + +NAME = Polymorphism + +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/ex00/Polymorphism b/ex00/Polymorphism new file mode 100755 index 0000000000000000000000000000000000000000..fc647e817376ea657283c13c2bc222c6bff8e1b2 GIT binary patch literal 27800 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:14:27 by adjoly #+# #+# */ +/* Updated: 2024/12/01 20:22:32 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "animal.hpp" + +Animal::Animal(void) { + log("➕", "Animal", "", "construtor called"); +} + +Animal::~Animal() { + log("➖", "Animal", _type, "destructor called"); +} + +Animal::Animal(std::string type) : _type(type) { + log("➕", "Animal", type, "construtor called"); +} + +Animal::Animal(const Animal &cpy) { + log("➕", "Animal", _type, "copy construtor called"); + *this = cpy; +} + +Animal &Animal::operator=(const Animal &cpy) { + log("🟰", "Animal", _type, "copy assignment construtor called"); + if (this != &cpy) { + _type = cpy._type; + } + return (*this); +} + +void Animal::makeSound(void) const { + log("🔊", "Animal", "", "making a sound MEOWMEOW"); +} + +std::string Animal::getType(void) const { + return (_type); +} diff --git a/ex00/animal.hpp b/ex00/animal.hpp new file mode 100644 index 0000000..7fb07d5 --- /dev/null +++ b/ex00/animal.hpp @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* animal.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/11/30 16:33:08 by adjoly #+# #+# */ +/* Updated: 2024/12/01 20:22:41 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include + +class Animal { + protected: + std::string _type; + + public: + Animal(void); + ~Animal(void); + Animal(std::string); + Animal(const Animal &); + Animal &operator=(const Animal &); + + std::string getType(void) const; + + virtual void makeSound(void) const; +}; + +void log(std::string, std::string, std::string, std::string); diff --git a/ex00/cat.cpp b/ex00/cat.cpp new file mode 100644 index 0000000..e23227b --- /dev/null +++ b/ex00/cat.cpp @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* cat.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:49:11 by adjoly #+# #+# */ +/* Updated: 2024/12/01 20:18:55 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "cat.hpp" + +Cat::Cat(void) : Animal("Cat"){ + log("➕", "Cat", "", "construtor called"); +} + +Cat::~Cat(void) { + log("➖", "Cat", "", "destructor called"); +} + +Cat::Cat(const Cat &cpy) : Animal("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"); +} diff --git a/ex00/cat.hpp b/ex00/cat.hpp new file mode 100644 index 0000000..399a22f --- /dev/null +++ b/ex00/cat.hpp @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* cat.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 19:06:08 by adjoly #+# #+# */ +/* Updated: 2024/12/01 20:18:42 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include "animal.hpp" + +class Cat : public Animal { + public: + Cat(void); + ~Cat(void); + Cat(const Cat &); + Cat &operator=(const Cat &); + + void makeSound(void) const; +}; diff --git a/ex00/dog.cpp b/ex00/dog.cpp new file mode 100644 index 0000000..ac57842 --- /dev/null +++ b/ex00/dog.cpp @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* dog.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 20:05:21 by adjoly #+# #+# */ +/* Updated: 2024/12/01 20:18:27 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "dog.hpp" + +Dog::Dog(void) : Animal("Dog"){ + log("➕", "Dog", "", "construtor called"); +} + +Dog::~Dog(void) { + log("➖", "Dog", "", "destructor called"); +} + +Dog::Dog(const Dog &cpy) : Animal("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"); +} diff --git a/ex00/dog.hpp b/ex00/dog.hpp new file mode 100644 index 0000000..a32cc7c --- /dev/null +++ b/ex00/dog.hpp @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* dog.hpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/12/01 20:06:20 by adjoly #+# #+# */ +/* Updated: 2024/12/01 20:18:35 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#pragma once + +#include "animal.hpp" + +class Dog : public Animal { + public: + Dog(void); + ~Dog(void); + Dog(const Dog &); + Dog &operator=(const Dog &); + + void makeSound(void) const; +}; diff --git a/ex00/log.cpp b/ex00/log.cpp new file mode 100644 index 0000000..9dbf721 --- /dev/null +++ b/ex00/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/ex00/main.cpp b/ex00/main.cpp new file mode 100644 index 0000000..2dddb6c --- /dev/null +++ b/ex00/main.cpp @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.cpp :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/11/30 16:21:28 by adjoly #+# #+# */ +/* Updated: 2024/12/01 20:23:26 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "cat.hpp" +#include "dog.hpp" +#include + +//int main(void) { +// cat cutie; +// dog dogo; +// +// cutie.makeSound(); +// dogo.makeSound(); +//} + +int main() { + const Animal* meta = new Animal(); + const Animal* j = new Dog(); + const Animal* i = new Cat(); + + std::cout << j->getType() << " " << std::endl; + std::cout << i->getType() << " " << std::endl; + i->makeSound(); //will output the cat sound! + j->makeSound(); + meta->makeSound(); + + return 0; +} diff --git a/ex00/obj/animal.d b/ex00/obj/animal.d new file mode 100644 index 0000000..b663f5a --- /dev/null +++ b/ex00/obj/animal.d @@ -0,0 +1,2 @@ +obj/./animal.o: animal.cpp animal.hpp +animal.hpp: diff --git a/ex00/obj/cat.d b/ex00/obj/cat.d new file mode 100644 index 0000000..8de22f8 --- /dev/null +++ b/ex00/obj/cat.d @@ -0,0 +1,3 @@ +obj/./cat.o: cat.cpp cat.hpp animal.hpp +cat.hpp: +animal.hpp: diff --git a/ex00/obj/dog.d b/ex00/obj/dog.d new file mode 100644 index 0000000..62240f3 --- /dev/null +++ b/ex00/obj/dog.d @@ -0,0 +1,3 @@ +obj/./dog.o: dog.cpp dog.hpp animal.hpp +dog.hpp: +animal.hpp: diff --git a/ex00/obj/log.d b/ex00/obj/log.d new file mode 100644 index 0000000..da9c7eb --- /dev/null +++ b/ex00/obj/log.d @@ -0,0 +1 @@ +obj/./log.o: log.cpp diff --git a/ex00/obj/main.d b/ex00/obj/main.d new file mode 100644 index 0000000..ece6bf2 --- /dev/null +++ b/ex00/obj/main.d @@ -0,0 +1,4 @@ +obj/./main.o: main.cpp cat.hpp animal.hpp dog.hpp +cat.hpp: +animal.hpp: +dog.hpp: