First version using OOP

This commit is contained in:
2025-01-24 16:42:13 -03:00
parent 8df1ae8f25
commit 8044fa3c32
12 changed files with 161 additions and 0 deletions

1
.gitignore vendored
View File

@@ -45,3 +45,4 @@ compile_commands.json
CTestTestfile.cmake
_deps
build/

6
Acordavel.hpp Normal file
View File

@@ -0,0 +1,6 @@
#pragma once
class Acordavel{
public:
virtual void acorda() = 0;
};

19
Alarme.cpp Normal file
View File

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

14
Alarme.hpp Normal file
View File

@@ -0,0 +1,14 @@
#pragma once
#include <vector>
#include <cinttypes>
#include "Acordavel.hpp"
class Alarme{
public:
Alarme();
~Alarme();
void registraAcordavel(Acordavel* acordavel);
void toca();
std::vector<Acordavel*> acordaveis;
};

17
Animal.cpp Normal file
View File

@@ -0,0 +1,17 @@
#include "Animal.hpp"
#include <iostream>
using namespace std;
Animal::Animal(){
}
Animal::~Animal(){
}
void Animal::acorda(){
cout << "Só acorda, sem fazer barulho" << endl;
}

15
Animal.hpp Normal file
View File

@@ -0,0 +1,15 @@
#pragma once
#include <cinttypes>
#include <string>
#include "Acordavel.hpp"
class Animal : public Acordavel{
public:
Animal();
~Animal();
virtual void acorda();
int32_t raca;
std::string _nome;
};

5
CMakeLists.txt Normal file
View File

@@ -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)

21
Cachorro.cpp Normal file
View File

@@ -0,0 +1,21 @@
#include "Cachorro.hpp"
#include <iostream>
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;
}

11
Cachorro.hpp Normal file
View File

@@ -0,0 +1,11 @@
#pragma once
#include "Animal.hpp"
class Cachorro : public Animal{
public:
Cachorro(std::string nome);
~Cachorro();
void acorda();
void late();
};

21
Gato.cpp Normal file
View File

@@ -0,0 +1,21 @@
#include "Gato.hpp"
#include <iostream>
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;
}

11
Gato.hpp Normal file
View File

@@ -0,0 +1,11 @@
#pragma once
#include "Animal.hpp"
class Gato : public Animal{
public:
Gato(std::string nome);
~Gato();
void acorda();
void mia();
};

20
main.cpp Normal file
View File

@@ -0,0 +1,20 @@
#include <iostream>
#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();
}