🧠 Encapsulamento em Java
📌 O que é Encapsulamento?
-
Princípio da programação orientada a objetos.
-
Objetivo: esconder detalhes internos de implementação de uma classe.
-
Expor apenas operações seguras, garantindo que o objeto esteja sempre em um estado consistente.
🎛️ Analogia com Aparelho Eletrônico
-
Um aparelho de som tem circuitos internos complexos.
-
O usuário não pode acessar esses circuitos diretamente.
-
Apenas operações seguras são expostas:
tocar,pausar,avançar,retroceder. -
Evita que o aparelho entre em um estado inválido.
💡 Regra de Ouro
O objeto deve estar sempre em um estado consistente.
A própria classe deve garantir isso.
🧱 Implementação em Java
1. Modificadores de Acesso
-
Os atributos devem ser declarados como
private. -
Exemplo:
private String name;
private double price;2. Acesso via Métodos Getters e Setters
Getter
- Permite acessar o valor de um atributo.
public String getName() {
return name;
}Setter
- Permite alterar o valor de um atributo.
public void setName(String name) {
this.name = name;
}Esse padrão segue a convenção JavaBeans.
🧪 Exemplo Prático
Classe Product com atributos: name, price, quantity.
Etapas:
-
Tornar todos os atributos
private. -
Criar métodos
getesetparanameeprice. -
Criar apenas o método
getparaquantity.
Motivo:
-
quantitysó pode ser alterado por métodos específicos (addProducts,removeProducts). -
Regra de negócio: protege a integridade do objeto.
🔁 Testando no Programa Principal
Exemplo de uso:
product.setName("Computer");
System.out.println(product.getName());
product.setPrice(1200.00);
System.out.println(product.getPrice());Acesso Direto (Inválido):
product.name = "TV"; // ❌ Erro: name is not accessible🚫 Por que não criar setQuantity?
-
Evita inconsistências.
-
quantitysó deve mudar por entrada/saída de estoque. -
Garante que a lógica de negócio seja sempre respeitada.
🛠️ Organização dos Métodos
-
Colocar os métodos
getesetapós os construtores. -
Agrupar os métodos relacionados (ex:
getPriceesetPricejuntos).
📚 Conclusão
-
Encapsulamento melhora a segurança e integridade do sistema.
-
Facilita a manutenção e evolução do código.
-
Permite aplicar regras de negócio diretamente na classe.