From 8044fa3c326185968e71d3a2eba2795e1b4f0eb1 Mon Sep 17 00:00:00 2001 From: Gabriel Lima Date: Fri, 24 Jan 2025 16:42:13 -0300 Subject: [PATCH] First version using OOP --- .gitignore | 1 + Acordavel.hpp | 6 ++++++ Alarme.cpp | 19 +++++++++++++++++++ Alarme.hpp | 14 ++++++++++++++ Animal.cpp | 17 +++++++++++++++++ Animal.hpp | 15 +++++++++++++++ CMakeLists.txt | 5 +++++ Cachorro.cpp | 21 +++++++++++++++++++++ Cachorro.hpp | 11 +++++++++++ Gato.cpp | 21 +++++++++++++++++++++ Gato.hpp | 11 +++++++++++ main.cpp | 20 ++++++++++++++++++++ 12 files changed, 161 insertions(+) create mode 100644 Acordavel.hpp create mode 100644 Alarme.cpp create mode 100644 Alarme.hpp create mode 100644 Animal.cpp create mode 100644 Animal.hpp create mode 100644 CMakeLists.txt create mode 100644 Cachorro.cpp create mode 100644 Cachorro.hpp create mode 100644 Gato.cpp create mode 100644 Gato.hpp create mode 100644 main.cpp diff --git a/.gitignore b/.gitignore index 12404dd..43b20c3 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ compile_commands.json CTestTestfile.cmake _deps +build/ \ No newline at end of file diff --git a/Acordavel.hpp b/Acordavel.hpp new file mode 100644 index 0000000..c665cf4 --- /dev/null +++ b/Acordavel.hpp @@ -0,0 +1,6 @@ +#pragma once + +class Acordavel{ +public: + virtual void acorda() = 0; +}; \ No newline at end of file diff --git a/Alarme.cpp b/Alarme.cpp new file mode 100644 index 0000000..e60c6eb --- /dev/null +++ b/Alarme.cpp @@ -0,0 +1,19 @@ +#include "Alarme.hpp" + +Alarme::Alarme(){ + +} + +Alarme::~Alarme(){ + +} + +void Alarme::registraAcordavel(Acordavel* acordavel){ + acordaveis.push_back(acordavel); +} + +void Alarme::toca(){ + for(int32_t i=0; i < acordaveis.size(); i++){ + acordaveis.at(i)->acorda(); + } +} diff --git a/Alarme.hpp b/Alarme.hpp new file mode 100644 index 0000000..d320a30 --- /dev/null +++ b/Alarme.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include +#include +#include "Acordavel.hpp" + +class Alarme{ +public: + Alarme(); + ~Alarme(); + void registraAcordavel(Acordavel* acordavel); + void toca(); + std::vector acordaveis; +}; \ No newline at end of file diff --git a/Animal.cpp b/Animal.cpp new file mode 100644 index 0000000..d88ab67 --- /dev/null +++ b/Animal.cpp @@ -0,0 +1,17 @@ +#include "Animal.hpp" + +#include + +using namespace std; + +Animal::Animal(){ + +} + +Animal::~Animal(){ + +} + +void Animal::acorda(){ + cout << "Só acorda, sem fazer barulho" << endl; +} \ No newline at end of file diff --git a/Animal.hpp b/Animal.hpp new file mode 100644 index 0000000..6647c54 --- /dev/null +++ b/Animal.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include +#include + +#include "Acordavel.hpp" + +class Animal : public Acordavel{ +public: + Animal(); + ~Animal(); + virtual void acorda(); + int32_t raca; + std::string _nome; +}; \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4045a94 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.5.0) +project(HelloWorld VERSION 0.1.0 LANGUAGES C CXX) + +add_executable(HelloWorld main.cpp Cachorro.cpp Gato.cpp Animal.cpp Alarme.cpp) + diff --git a/Cachorro.cpp b/Cachorro.cpp new file mode 100644 index 0000000..3357e23 --- /dev/null +++ b/Cachorro.cpp @@ -0,0 +1,21 @@ +#include "Cachorro.hpp" +#include + +using namespace std; + +Cachorro::Cachorro(std::string nome){ + cout << "Nasce um doguinho chamado " << nome << endl; + _nome = nome; +} + +Cachorro::~Cachorro(){ + cout << "E " << _nome << " nos deixou" << endl; +} + +void Cachorro::acorda(){ + late(); +} + +void Cachorro::late(){ + cout << _nome << " faz AUAU" << endl; +} \ No newline at end of file diff --git a/Cachorro.hpp b/Cachorro.hpp new file mode 100644 index 0000000..ae10f0d --- /dev/null +++ b/Cachorro.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "Animal.hpp" + +class Cachorro : public Animal{ +public: + Cachorro(std::string nome); + ~Cachorro(); + void acorda(); + void late(); +}; \ No newline at end of file diff --git a/Gato.cpp b/Gato.cpp new file mode 100644 index 0000000..c6ac7bb --- /dev/null +++ b/Gato.cpp @@ -0,0 +1,21 @@ +#include "Gato.hpp" +#include + +using namespace std; + +Gato::Gato(std::string nome){ + cout << "Nasce um gatinho chamado " << nome << endl; + _nome = nome; +} + +Gato::~Gato(){ + cout << "E " << _nome << " nos deixou" << endl; +} + +void Gato::acorda(){ + mia(); +} + +void Gato::mia(){ + cout << _nome << " faz MIAU" << endl; +} \ No newline at end of file diff --git a/Gato.hpp b/Gato.hpp new file mode 100644 index 0000000..0430e78 --- /dev/null +++ b/Gato.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "Animal.hpp" + +class Gato : public Animal{ +public: + Gato(std::string nome); + ~Gato(); + void acorda(); + void mia(); +}; \ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..1cbf13f --- /dev/null +++ b/main.cpp @@ -0,0 +1,20 @@ +#include + +#include "Animal.hpp" +#include "Cachorro.hpp" +#include "Gato.hpp" +#include "Alarme.hpp" + +Animal aleatorio; +Cachorro bob("Bob"); +Gato selva("Selva"); + +Alarme relogio; + +int main(int, char**){ + std::cout << "Hello, from HelloWorld!\n"; + relogio.registraAcordavel(&aleatorio); + relogio.registraAcordavel(&bob); + relogio.registraAcordavel(&selva); + relogio.toca(); +}