"Um objeto deve ser responsável por manter seu próprio estado e proteger sua integridade."
📜 A Perspectiva Histórica
Nos primórdios da programação, as variáveis eram globais. Qualquer parte do código podia alterar o valor de qualquer outra parte. O resultado? O "Efeito Colateral": você consertava um erro no login e, inexplicavelmente, quebrava o cálculo do frete. O Encapsulamento surgiu para criar fronteiras, garantindo que o que acontece dentro de um objeto, fica dentro do objeto.
💡 O Conceito
Encapsular é a arte de esconder a complexidade interna e expor apenas o necessário.
Pense no objeto como uma célula: ela tem uma membrana que protege o núcleo. Você não altera o DNA da célula cutucando-a com o dedo; você interage com os receptores da membrana.
O foco do Encapsulamento é a PROTEÇÃO e a VALIDAÇÃO dos dados.
🛠️ O Encapsulamento no Mundo Real (Agnóstico)
Imagine um Relógio de Pulso:
- Interface Pública: O visor e o botão de ajuste de hora.
- Encapsulamento (Privado): As engrenagens, a bateria e o cristal de quartzo.
- Por que isso é bom? Se você pudesse tocar diretamente nas engrenagens para mudar a hora, acabaria entortando uma peça. O relógio te obriga a usar o botão, que garante que as engrenagens girem da forma correta.
💻 Implementação em C# (Nossa Ferramenta)
Aqui, usamos Modificadores de Acesso (private, public, protected) e Properties (get e set) para controlar o acesso aos dados.
public class ContaBancaria
{
// O saldo é privado: ninguém de fora pode simplesmente digitar um novo valor.
private decimal _saldo;
public decimal Saldo
{
get { return _saldo; } // Apenas leitura externa
}
// O método é a única "porta" de entrada segura.
public void Depositar(decimal valor)
{
if (valor > 0)
{
_saldo += valor;
Console.WriteLine($"Depósito de {valor} realizado com sucesso.");
}
}
public void Sacar(decimal valor)
{
if (valor <= _saldo)
{
_saldo -= valor;
}
else
{
Console.WriteLine("Saldo insuficiente.");
}
}
}
🎯 Desafio de Mentalidade
Ao olhar para o código nesta pasta, pergunte-se:
- Meus campos (
fields) são privados? - Existe alguma forma de deixar o objeto em um "estado inválido" (ex: saldo negativo, idade -5)? Se sim, falta encapsulamento.
- O mundo externo realmente precisa saber como esse cálculo é feito, ou apenas o resultado final dele?
Top comments (0)