DifícilFase 4
Exercício Difícil — Classe ContaBancária
Cria uma classe completa com constructor, métodos, validações e um pequeno histórico de operações.
FerramentasVS CodeTerminalNode.js
Este exercício fecha a fase com o exemplo clássico de POO — uma conta bancária com regras de negócio reais, não só getters e setters simples.
Passos a realizar
- Cria conta-bancaria.js na pasta fase4.
- Cria uma classe ContaBancaria com constructor(titular, saldoInicial) que guarda titular, saldo, e um array vazio historico.
- Adiciona um método depositar(valor): se valor for menor ou igual a 0, imprime um erro e não faz nada; senão, soma ao saldo e adiciona uma string ao historico (ex: "Depósito de 50€").
- Adiciona um método levantar(valor): se valor for maior que o saldo disponível, imprime "Saldo insuficiente" e não faz nada; senão, subtrai do saldo e regista no historico.
- Adiciona um método extrato() que imprime o titular, o saldo atual, e cada linha do historico usando forEach.
- Cria duas instâncias de contas diferentes, faz várias operações em cada uma (incluindo pelo menos uma tentativa inválida em cada), e chama extrato() em ambas para confirmares que o estado de cada conta é independente.
Fluxo de funcionamento
- 1new ContaBancaria(titular, saldo)
- 2depositar / levantar valida regras
- 3Atualiza saldo e historico
- 4extrato() imprime tudo
Código de exemplo
conta-bancaria.js
class ContaBancaria {
constructor(titular, saldoInicial) {
this.titular = titular;
this.saldo = saldoInicial;
this.historico = [];
}
depositar(valor) {
if (valor <= 0) {
console.log("Valor de depósito inválido.");
return;
}
this.saldo += valor;
this.historico.push("Depósito de " + valor + "€");
}
levantar(valor) {
// completa aqui: valida e atualiza this.saldo e this.historico
}
extrato() {
// completa aqui: imprime titular, saldo, e cada linha do historico
}
}
const contaDaAna = new ContaBancaria("Ana", 100);
contaDaAna.depositar(50);
contaDaAna.levantar(30);
contaDaAna.levantar(1000); // deve falhar
contaDaAna.extrato();Dicas
- Cada instância criada com new tem o seu próprio saldo e historico — testa exatamente isso criando duas contas e confirmando que uma não afeta a outra.
- Valida sempre a operação antes de alterar o saldo — nunca deixes o código subtrair primeiro e "descobrir" depois que o saldo ficou negativo.
Erros comuns
- Esquecer this. antes de saldo ou historico dentro dos métodos, o que faz o JavaScript procurar uma variável solta que não existe.
- Validar a operação depois de já teres alterado o saldo, em vez de antes — a ordem da validação importa.