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

c9b163acca4bdd581c94b5a3730b729c #18

Open
wants to merge 1 commit 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
27 changes: 27 additions & 0 deletions Banco.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include "Banco.hpp"
#include <iostream>
#include <vector>

ContaPoupanca* Banco::adicionar_conta_poupanca(std::string titular, double saldo, double taxa_juros) {
ContaPoupanca* conta = new ContaPoupanca(titular, saldo, taxa_juros);
contas.push_back(conta);
return conta;
}

ContaCorrente* Banco::adicionar_conta_corrente(std::string titular, double saldo, double limite_cheque_especial) {
ContaCorrente* conta = new ContaCorrente(titular, saldo, limite_cheque_especial);
contas.push_back(conta);
return conta;
}

void Banco::exibir_todas_contas() {
for (ContaBancaria* conta : contas) {
std::cout << "Saldo da conta de " << conta->get_titular() << ": R$" << conta->get_saldo() << "\n";
}
}

Banco::~Banco() {
for (ContaBancaria* conta : contas) {
delete conta;
}
}
22 changes: 9 additions & 13 deletions Banco.hpp
Original file line number Diff line number Diff line change
@@ -1,26 +1,22 @@
#ifndef BANCO_H
#define BANCO_H

#include <iostream>
#include <string>
#include <vector>
#include "ContaBancaria.hpp"

using namespace std;
#include "ContaPoupanca.hpp"
#include "ContaCorrente.hpp"

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

public:
void adicionarConta(ContaBancaria* conta) {
contas.push_back(conta);
}
ContaPoupanca* adicionar_conta_poupanca(std::string titular, double saldo, double taxa_juros);
ContaCorrente* adicionar_conta_corrente(std::string titular, double saldo, double limite_cheque_especial);

void exibir_todas_contas() {
for (ContaBancaria* conta : contas) {
std::cout << "Saldo da conta de " << conta->titular << ": R$" << conta->saldo << "\n";
}
}
void exibir_todas_contas();

std::vector<ContaBancaria*> contas;
~Banco();
};

#endif
36 changes: 36 additions & 0 deletions ContaBancaria.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#include "ContaBancaria.hpp"
#include <iostream>
#include <string>
#include <vector>

ContaBancaria::ContaBancaria(std::string titular, double saldo) : titular(titular), saldo(saldo) {}

void ContaBancaria::depositar(double valor) {
if (valor > 0) {
saldo += valor;
std::cout << "Depósito de R$" << valor << " efetuado com sucesso.\n";
}else {
std::cout << "Valor de depósito inválido.\n";
}
}

void ContaBancaria::sacar(double valor) {
if (valor > 0 && valor <= saldo) {
saldo -= valor;
std::cout << "Saque de R$" << valor << " efetuado com sucesso.\n";
}else {
std::cout << "Saque inválido. Verifique o valor ou saldo insuficiente.\n";
}
}

double ContaBancaria::get_saldo() const {
return saldo;
}

std::string ContaBancaria::get_titular() const {
return titular;
}

void ContaBancaria::set_saldo(double _saldo){
saldo = _saldo;
}
39 changes: 18 additions & 21 deletions ContaBancaria.hpp
Original file line number Diff line number Diff line change
@@ -1,33 +1,30 @@
#ifndef CONTA_BANCARIA_H
#define CONTA_BANCARIA_H
#ifndef CONTABANCARIA_H
#define CONTABANCARIA_H

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

class ContaBancaria {
private:
std::string titular;
double saldo;

public:
void depositar(double valor) {
if (valor > 0) {
saldo += valor;
std::cout << "Depósito de R$" << valor << " efetuado com sucesso.\n";
} else {
std::cout << "Valor de depósito inválido.\n";
}
}

void sacar(double valor) {
if (valor > 0 && valor <= saldo) {
saldo -= valor;
std::cout << "Saque de R$" << valor << " efetuado com sucesso.\n";
} else {
std::cout << "Saque inválido. Verifique o valor ou saldo insuficiente.\n";
}
}
ContaBancaria(std::string titular, double saldo);

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

std::string get_titular() const;
double get_saldo() const;


protected:
void set_saldo(double _saldo);

std::string titular;
double saldo;
};


#endif

22 changes: 22 additions & 0 deletions ContaCorrente.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#include "ContaCorrente.hpp"

ContaCorrente::ContaCorrente(std::string titular, double saldo, double limite_cheque_especial)
: ContaBancaria(titular, saldo), limite_cheque_especial(limite_cheque_especial) {}

void ContaCorrente::usar_cheque_especial(double valor) {
double valor_total = get_saldo() + limite_cheque_especial;
if (valor > 0 && valor <= valor_total) {
set_saldo(get_saldo() - valor);
std::cout << "Uso de cheque especial de R$" << valor << " efetuado com sucesso.\n";
} else {
std::cout << "Uso de cheque especial inválido. Verifique o valor ou limite.\n";
}
}

double ContaCorrente::get_limite_cheque_especial() const {
return limite_cheque_especial;
}

void ContaCorrente::set_limite_cheque_especial(double _limite_cheque_especial) {
limite_cheque_especial = _limite_cheque_especial;
}
26 changes: 12 additions & 14 deletions ContaCorrente.hpp
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
#ifndef CONTA_CORRENTE_H
#define CONTA_CORRENTE_H
#ifndef CONTACORRENTE_H
#define CONTACORRENTE_H

#include <iostream>
#include "ContaBancaria.hpp"

class conta_corrente : public ContaBancaria {
class ContaCorrente : public ContaBancaria {
private:
double limite_cheque_especial;

public:
void usarChequeEspecial(double valor) {
double valorTotal = saldo + limiteChequeEspecial;
if (valor > 0 && valor <= valorTotal) {
saldo -= valor;
std::cout << "Uso de cheque especial de R$" << valor << " efetuado com sucesso.\n";
} else {
std::cout << "Uso de cheque especial inválido. Verifique o valor ou limite.\n";
}
}
ContaCorrente(std::string titular, double saldo, double limite_cheque_especial);

void usar_cheque_especial(double valor);

double limiteChequeEspecial;
};
double get_limite_cheque_especial() const;
void set_limite_cheque_especial(double limite_cheque_especial);

};

#endif
26 changes: 26 additions & 0 deletions ContaPoupanca.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include "ContaPoupanca.hpp"
#include <iostream>

ContaPoupanca::ContaPoupanca(const std::string titular, double saldo, double taxa_juros)
: ContaBancaria(titular, saldo), taxa_juros(taxa_juros) {}

void ContaPoupanca::calcular_juros() {
if (taxa_juros >= 0) {
double juros = get_saldo() * taxa_juros / 100;
adicionar_juros_ao_saldo(juros);
}
}

void ContaPoupanca::adicionar_juros_ao_saldo(double juros) {
set_saldo(juros + get_saldo());
std::cout << "Juros de R$" << juros << " calculados e adicionados à conta.\n";
}

double ContaPoupanca::get_juros() const {
return taxa_juros;
}

void ContaPoupanca::set_juros(double _taxa_juros) {
taxa_juros = _taxa_juros;
}

28 changes: 16 additions & 12 deletions ContaPoupanca.hpp
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
#ifndef CONTA_POUPANCA_H
#define CONTA_POUPANCA_H
#ifndef CONTAPOUPANCA_H
#define CONTAPOUPANCA_H

#include <iostream>
#include "ContaBancaria.hpp"
#include <iostream>

class conta_poupanca : public ContaBancaria {
public:
void calcularJuros() {
double juros = saldo * taxaJuros / 100;
saldo += juros;
std::cout << "Juros de R$" << juros << " calculados e adicionados à conta.\n";
}
double taxaJuros;
};
class ContaPoupanca : public ContaBancaria {
private:
double taxa_juros;

public:
ContaPoupanca(std::string titular, double saldo, double taxa_juros);

void calcular_juros();
void adicionar_juros_ao_saldo(double juros);

double get_juros() const;
void set_juros(double taxa_juros);

};

#endif
61 changes: 19 additions & 42 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,64 +8,41 @@


int main() {
Banco meuBanco;
Banco* meu_banco = new Banco();

conta_corrente* conta1 = new conta_corrente();
conta1->titular = "Joao";
conta1->saldo = 1500;
conta1->limiteChequeEspecial = 200;
ContaCorrente* conta1 = meu_banco->adicionar_conta_corrente("Joao", 1500, 200);
ContaPoupanca* conta2 = meu_banco->adicionar_conta_poupanca("Maria", 1000, 2.0);
ContaPoupanca* conta3 = meu_banco->adicionar_conta_poupanca("Luiz", 3000, 1.5);
ContaPoupanca* conta4 = meu_banco->adicionar_conta_poupanca("Lara", 2000, 2.5);
ContaCorrente* conta5 = meu_banco->adicionar_conta_corrente("Luisa", 5000, 300);

conta_poupanca* conta2 = new conta_poupanca();
conta2->titular = "Maria";
conta2->saldo = 1000;
conta2->taxaJuros = 2.0;

conta_poupanca* conta3 = new conta_poupanca();
conta3->titular = "Luiz";
conta3->saldo = 3000;
conta3->taxaJuros = 1.5;

conta_poupanca* conta4 = new conta_poupanca();
conta4->titular = "Lara";
conta4->saldo = 2000;
conta4->taxaJuros = 2.5;

conta_corrente* conta5 = new conta_corrente();
conta5->titular = "Luisa";
conta5->saldo = 5000;
conta5->limiteChequeEspecial = 300;

meuBanco.adicionarConta(conta1);
meuBanco.adicionarConta(conta2);
meuBanco.adicionarConta(conta3);
meuBanco.adicionarConta(conta4);
meuBanco.adicionarConta(conta5);

meuBanco.exibir_todas_contas();
meu_banco->exibir_todas_contas();

conta1->depositar(500);
conta2->sacar(200);
conta3->sacar(100);
conta4->depositar(-1);
conta5->sacar(5001);

meuBanco.exibir_todas_contas();
meu_banco->exibir_todas_contas();

conta1->sacar(500);
conta2->depositar(200);
conta3->depositar(100);
conta4->sacar(300);
conta5->depositar(50);

meuBanco.exibir_todas_contas();
meu_banco->exibir_todas_contas();

conta1->usar_cheque_especial(500);
conta2->calcular_juros();
conta3->calcular_juros();
conta4->calcular_juros();
conta5->usar_cheque_especial(50);

meu_banco->exibir_todas_contas();

conta1->usarChequeEspecial(500);
conta2->calcularJuros();
conta3->calcularJuros();
conta4->calcularJuros();
conta5->usarChequeEspecial(50);

meuBanco.exibir_todas_contas();
delete meu_banco;

return 0;
}
}
Binary file added vpl_exec
Binary file not shown.