diff --git a/Banco.cpp b/Banco.cpp new file mode 100644 index 0000000..57afa7a --- /dev/null +++ b/Banco.cpp @@ -0,0 +1,18 @@ +#include "Banco.hpp" +#include "ContaBancaria.hpp" + +void Banco::adicionarConta(ContaBancaria* conta) { + contas.push_back(conta); +} + +void Banco::exibirTodasContas() { + for (ContaBancaria* conta : contas) { + std::cout << "Saldo da conta de " << conta->getTitular() << ": R$" << conta->getSaldo() << "\n"; + } +} + +Banco::~Banco() { + for (ContaBancaria* conta : contas) { + delete conta; + } +} diff --git a/Banco.hpp b/Banco.hpp index 66b8739..eb842b7 100644 --- a/Banco.hpp +++ b/Banco.hpp @@ -6,21 +6,13 @@ #include #include "ContaBancaria.hpp" -using namespace std; - class Banco { -public: - void adicionarConta(ContaBancaria* conta) { - contas.push_back(conta); - } - - void exibir_todas_contas() { - for (ContaBancaria* conta : contas) { - std::cout << "Saldo da conta de " << conta->titular << ": R$" << conta->saldo << "\n"; - } - } - +private: std::vector contas; +public: + void adicionarConta(ContaBancaria* conta); + void exibirTodasContas(); + ~Banco(); }; -#endif \ No newline at end of file +#endif diff --git a/ContaBancaria.cpp b/ContaBancaria.cpp new file mode 100644 index 0000000..d19bff2 --- /dev/null +++ b/ContaBancaria.cpp @@ -0,0 +1,30 @@ +#include "ContaBancaria.hpp" +#include + +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"; + } +} + +std::string ContaBancaria::getTitular() { + return titular; +} + +double ContaBancaria::getSaldo() { + return saldo; +} diff --git a/ContaBancaria.hpp b/ContaBancaria.hpp index b11e26c..cce9f7c 100644 --- a/ContaBancaria.hpp +++ b/ContaBancaria.hpp @@ -6,28 +6,15 @@ #include class ContaBancaria { -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"; -} -} - - +protected: std::string titular; double saldo; +public: + ContaBancaria(std::string titular, double saldo); + void depositar(double valor); + void sacar(double valor); + std::string getTitular(); + double getSaldo(); }; #endif diff --git a/ContaCorrente.cpp b/ContaCorrente.cpp new file mode 100644 index 0000000..88bfd53 --- /dev/null +++ b/ContaCorrente.cpp @@ -0,0 +1,16 @@ +#include "ContaCorrente.hpp" +#include "ContaBancaria.hpp" +#include + +ContaCorrente::ContaCorrente(std::string titular, double saldo, double limiteChequeEspecial) : +ContaBancaria(titular, saldo), limiteChequeEspecial(limiteChequeEspecial) {} + +void ContaCorrente::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"; + } +} diff --git a/ContaCorrente.hpp b/ContaCorrente.hpp index 5736421..50e143f 100644 --- a/ContaCorrente.hpp +++ b/ContaCorrente.hpp @@ -1,23 +1,17 @@ #ifndef CONTA_CORRENTE_H #define CONTA_CORRENTE_H +#include #include #include "ContaBancaria.hpp" -class conta_corrente : public ContaBancaria { -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"; - } - } - +class ContaCorrente : public ContaBancaria { +private: double limiteChequeEspecial; +public: + ContaCorrente(std::string titular, double saldo, double limiteChequeEspecial); + void usarChequeEspecial(double valor); }; -#endif \ No newline at end of file +#endif diff --git a/ContaPoupanca.cpp b/ContaPoupanca.cpp new file mode 100644 index 0000000..dbe38dd --- /dev/null +++ b/ContaPoupanca.cpp @@ -0,0 +1,12 @@ +#include "ContaPoupanca.hpp" +#include "ContaBancaria.hpp" +#include + +ContaPoupanca::ContaPoupanca(std::string titular, double saldo, double taxaJuros) : +ContaBancaria(titular, saldo), taxaJuros(taxaJuros) {} + +void ContaPoupanca::calcularJuros() { + double juros = saldo * taxaJuros / 100; + saldo += juros; + std::cout << "Juros de R$" << juros << " calculados e adicionados à conta.\n"; +} diff --git a/ContaPoupanca.hpp b/ContaPoupanca.hpp index 25c986a..ca87e2e 100644 --- a/ContaPoupanca.hpp +++ b/ContaPoupanca.hpp @@ -4,15 +4,13 @@ #include #include "ContaBancaria.hpp" -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 taxaJuros; +public: + ContaPoupanca(std::string titular, double saldo, double taxaJuros); + void calcularJuros(); }; -#endif \ No newline at end of file +#endif diff --git a/main.cpp b/main.cpp index 8d0111b..e3fbeeb 100644 --- a/main.cpp +++ b/main.cpp @@ -10,30 +10,11 @@ int main() { Banco meuBanco; - conta_corrente* conta1 = new conta_corrente(); - conta1->titular = "Joao"; - conta1->saldo = 1500; - conta1->limiteChequeEspecial = 200; - - 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; + ContaCorrente* conta1 = new ContaCorrente("Joao", 1500, 200); + ContaPoupanca* conta2 = new ContaPoupanca("Maria", 1000, 2.0); + ContaPoupanca* conta3 = new ContaPoupanca("Luiz", 3000, 1.5); + ContaPoupanca* conta4 = new ContaPoupanca("Lara", 2000, 2.5); + ContaCorrente* conta5 = new ContaCorrente("Luisa", 5000, 300); meuBanco.adicionarConta(conta1); meuBanco.adicionarConta(conta2); @@ -41,7 +22,7 @@ int main() { meuBanco.adicionarConta(conta4); meuBanco.adicionarConta(conta5); - meuBanco.exibir_todas_contas(); + meuBanco.exibirTodasContas(); conta1->depositar(500); conta2->sacar(200); @@ -49,7 +30,7 @@ int main() { conta4->depositar(-1); conta5->sacar(5001); - meuBanco.exibir_todas_contas(); + meuBanco.exibirTodasContas(); conta1->sacar(500); conta2->depositar(200); @@ -57,7 +38,7 @@ int main() { conta4->sacar(300); conta5->depositar(50); - meuBanco.exibir_todas_contas(); + meuBanco.exibirTodasContas(); conta1->usarChequeEspecial(500); conta2->calcularJuros(); @@ -65,7 +46,7 @@ int main() { conta4->calcularJuros(); conta5->usarChequeEspecial(50); - meuBanco.exibir_todas_contas(); + meuBanco.exibirTodasContas(); return 0; }