JavaScriptPOOdesafio

Sistema bancário completo

Em sistemas financeiros reais, diferentes tipos de contas (corrente, poupança) têm regras distintas: cheque especial, rendimento, bloqueios. Usar herança com classes permite reutilizar código da conta base e especializar o comportamento sem duplicar lógica. Dominar encapsulamento com campos privados (#) evita que dados críticos como saldo sejam alterados diretamente, prevenindo bugs que poderiam causar prejuízos.

O PROBLEMA

Implemente ContaBancaria, ContaCorrente (cheque especial), ContaPoupanca (rendimento). Banco gerencia contas.

EXEMPLO

const cc = new ContaCorrente('Ana', 1000, 500);
cc.sacar(1200) → usa cheque especial
cc.saldo → -200
cc.limite → 500

SOBRE O CONCEITO

O exercício usa class, extends e super para criar uma hierarquia: ContaBancaria é a classe base com #saldo privado, #titular etc. ContaCorrente estende e adiciona #limite (cheque especial). O erro comum de deixar saldo público permite que conta.saldo = 9999 burle as regras de negócio. Outro erro é não tratar o cheque especial no método sacar: em ContaCorrente, deve-se permitir saque até #saldo + #limite, atualizando o saldo para negativo. Já em ContaPoupanca, não há cheque especial; o saque só é permitido se #saldo >= valor. Usar throw para lançar exceções quando a operação é inválida garante que o sistema não aceite movimentações indevidas. O método depositar e aplicarRendimento devem ser implementados respeitando as regras de cada tipo de conta.

RESOLUÇÃO

Mais exercícios de POO

JSP021 · AvançadoClasse LinkedListJSP005 · BásicoContador de instânciasJSP008 · Básicoinstanceof e verificação de tipoJSP009 · BásicoClasse abstrata simulada
Ver todos os exercícios de JavaScript