Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

34377d1f70ec09da0774da717f99ae4d #48

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions Banco.hpp

This file was deleted.

33 changes: 0 additions & 33 deletions ContaBancaria.hpp

This file was deleted.

23 changes: 0 additions & 23 deletions ContaCorrente.hpp

This file was deleted.

18 changes: 0 additions & 18 deletions ContaPoupanca.hpp

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ O objetivo dessa atividade é praticar a parte de revisão e refatoração utili

O código atual pode ser compilado/executado usando os seguintes comandos:
```
g++ *.cpp -o vpl_exec
g++ -I ./include src/*.cpp -o vpl_exec
./vpl_exec
```

Expand Down
48 changes: 48 additions & 0 deletions descricao.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
1 - Modularização:
Separei a especificação(contrato) da implementação, criando um arquivo .cpp para cada arquivo de cabeçalho.

2 - Atributos:
Troquei os modificadores de acesso dos atributos de public para private.
Colocando um UnderScore( _ ) antes de cada nome de atributo para fins de melhor identificação.

3 - Indentação:
Utilizei tab para obter um melhor espaçamento e manter uma "boa narartiva de código" (melhorando a legibilidade).

4 - Exceções:
Inclui Exceções na Classe ContaBancaria de forma a tratar melhor os dois casos excepcionais de valor inválido em depositar e saldo invélido em sacar.

5 - Nomenclatura:
Em ContaCorrente troquei o nome da classe de forma a manter a padronização CamelCase no código.

6 - Getters:
Criação de métodos get para retornar dados privados da classe base ContaBancaria para classes derivadas ContaCorrente e ContaPoupanca, além da classe Banco.
Criação de métodos get para retornar dados privados das classes derivadas.

7 - Setters:
Criação de métodos set para modificar dados privados da classe base ContaBancaria para classes derivadas ContaCorrente e ContaPoupanca, além da classe Banco.
Criação de métodos set para modificar dados privados das classes derivadas.

8 - Ordem de Precedência:
Foi imposto no cálculo de juros em ContaPoupanca uma ordem para efetuação das operações.

9 - Using Namespace std:
Retirado por ser desnecessário o uso total do escopo, sendo utilizado o operador de resolução de escopo em todo o programa quando necessário,
a fins de maior legibilidade, coerência e evitar conflitos.

10 - Uso do Ponteiro This.

11 - Criação de Construtores e Destrutores.
Inicialização de atributos.
Destrutor da classe base ContaBancaria definido como virtual.

12 - Modificações no main para adequar as modifcações no código.
Passando argumentos para o construtor.
Tratando Exceções com Try e Catch.

13 - Desalocação de memória.
Delete de cada conta no fim do programa.

14 - Criação de Diretórios.
Todos os arquivos de cabeçalho colocados na pasta include e todos os arquivos de origem na pasta src(Source).

15 - Novo código de compilação incluído no READ.ME: g++ -I ./include src/*.cpp -o vpl_exec
15 changes: 15 additions & 0 deletions include/Banco.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#ifndef BANCO_H
#define BANCO_H

#include "ContaBancaria.hpp"

class Banco {
private:
std::vector<ContaBancaria*> contas;

public:
void adicionarConta(ContaBancaria* conta);
void exibirTodasAsContas();
};

#endif
40 changes: 40 additions & 0 deletions include/ContaBancaria.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#ifndef CONTA_BANCARIA_H
#define CONTA_BANCARIA_H

#include <iostream>
#include <string>
#include <vector>
#include <exception>

class ValorInvalido : public std::exception {
public:
virtual const char* what() const throw() {
return "Valor de depósito inválido.\n";
}
};

class SaqueInvalido : public std::exception {
public:
virtual const char* what() const throw(){
return "Saque inválido. Verifique o valor ou saldo insuficiente.\n";
}
};

class ContaBancaria {
private:
std::string _titular;
double _saldo;

public:
ContaBancaria(std::string nome);
virtual ~ContaBancaria();

void depositar(double valor);
void sacar(double valor);

std::string getTitular();
double getSaldo();
void setSaldo(double novoSaldo);
};

#endif
28 changes: 28 additions & 0 deletions include/ContaCorrente.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#ifndef CONTA_CORRENTE_H
#define CONTA_CORRENTE_H

#include "ContaBancaria.hpp"

class ChequeEspecialInvalido : public std::exception{
public:
virtual const char* what() const throw(){
return "Uso de cheque especial inválido. Verifique o valor ou limite.\n";
}
};

class ContaCorrente : public ContaBancaria {
private:
double _limiteChequeEspecial;

public:
ContaCorrente(std::string nome, double saldo, double limite);
~ContaCorrente();

void usarChequeEspecial(double valor);

double getLimiteChequeEspecial();
void setLimiteChequeEspecial(double limite);
};


#endif
21 changes: 21 additions & 0 deletions include/ContaPoupanca.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#ifndef CONTA_POUPANCA_H
#define CONTA_POUPANCA_H

#include "ContaBancaria.hpp"

class ContaPoupanca : public ContaBancaria {
private:
double _taxaJuros;

public:
ContaPoupanca(std::string nome, double saldo, double taxaDeJuros);
~ContaPoupanca();

void calcularJuros();

double getTaxaJuros();
void setTaxaJuros(double novaTaxa);

};

#endif
71 changes: 0 additions & 71 deletions main.cpp

This file was deleted.

11 changes: 11 additions & 0 deletions src/Banco.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#include "Banco.hpp"

void Banco::adicionarConta(ContaBancaria* conta) {
contas.push_back(conta);
}

void Banco::exibirTodasAsContas() {
for (ContaBancaria* conta : contas) {
std::cout << "Saldo da conta de " << conta->getTitular() << ": R$" << conta->getSaldo() << "\n";
}
}
Loading