PythonPOObasico

Encapsulamento básico

Em sistemas bancários reais, o saldo de uma conta não pode ser alterado diretamente — todo depósito ou saque precisa passar por regras de validação. Usar o underscore (_saldo) é a convenção do Python para indicar que um atributo é interno e não deve ser tocado de fora da classe. Dominar isso evita que seu código vire uma bagunça quando outros programadores (ou você no futuro) usarem sua classe.

O PROBLEMA

ContaBancaria com _saldo privado, depositar() e get_saldo().

EXEMPLO

ContaBancaria(1000).depositar(500).get_saldo() → 1500

SOBRE O CONCEITO

Encapsulamento com underscore (_) é uma convenção, não uma trava de segurança. Quando você escreve self._saldo = 0 dentro do __init__, está avisando: "isso é detalhe interno, use os métodos da classe para mexer aqui". O erro comum é fazer conta._saldo = 9999 — isso quebra o encapsulamento porque permite definir um valor sem passar por depositar(), que poderia conectar a regras (ex.: não aceitar depósito negativo). O método get_saldo() e depositar() são a porta de entrada oficial: o primeiro só lê, o segundo valida e altera. Assim, você mantém o controle sobre o estado do objeto.

RESOLUÇÃO

Mais exercícios de POO

PYPOI2I · IntermediárioHerança simplesPYPOI1I · IntermediárioProperty e setterPYPOI5I · IntermediárioClasse abstrataPYPOO7B · BásicoMétodo estático
Ver todos os exercícios de Python