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(); +}