JavaScriptPOOintermediario

Encapsulamento completo

Em sistemas bancários reais, o saldo de uma conta nunca pode ser alterado diretamente — só através de operações como depósito e saque. Se o saldo fosse público, qualquer parte do código poderia atribuir um valor inválido, quebrando regras de negócio. O encapsulamento garante que o estado interno do objeto só seja modificado por métodos controlados, prevenindo bugs e fraudes.

O PROBLEMA

Crie ContaBancaria com #saldo privado. Métodos: depositar, sacar, transferir, extrato. Validar todos os valores.

EXEMPLO

const c = new ContaBancaria('Ana', 1000);
c.depositar(500);
c.sacar(200);
c.saldo → 1300
c.sacar(2000) → throw

SOBRE O CONCEITO

O encapsulamento é implementado com o prefixo # antes do nome do campo (#saldo), tornando-o privado e acessível apenas dentro da classe. Isso impede que código externo faça conta.saldo = 9999 — um erro comum que quebra a validação. Os métodos depositar, sacar e transferir devem verificar se o valor é positivo e, no saque e transferência, se há saldo suficiente. Outro erro frequente é não validar o saque: permitir sacar(2000) quando o saldo é 1300 deve lançar uma exceção com throw. O método extrato exibe o saldo com this.#saldo.toFixed(2), mantendo o campo privado.

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