- Autor
- Nome
- Nelson Silva
- Social
Introdução
Em Java, o encapsulamento é um dos pilares fundamentais da programação orientada a objetos. Através das propriedades, usando métodos "getter" e "setter", este pilar é concretizado. Estas funções permitem um controle refinado de como os dados de um objeto são acessados e modificados.
- Porque usar Propriedades?
- 1. Controle sobre os dados
- 2. Flexibilidade
- 3. Segurança
- Como Implementar
- Melhores Práticas ao usar Propriedades
- Exemplo Prático
- Dicas Adicionais
Porque usar Propriedades?
1. Controle sobre os dados
É possível validar ou modificar dados antes que estes sejam armazenados ou retornados.
2. Flexibilidade
Mudanças internas nos métodos getter e setter podem ser feitas sem alterar a forma como um objeto é usado externamente.
3. Segurança
Limita o acesso direto aos campos de dados, assegurando a integridade dos mesmos.
Como Implementar
Uma implementação comum envolve declarar um campo privado com métodos públicos para obter (get
) e definir (set
) os valores.
public class Exemplo {
private String nome;
// Getter
public String getNome() {
return nome;
}
// Setter
public void setNome(String nome) {
if(nome != null && !nome.trim().isEmpty()) {
this.nome = nome;
} else {
throw new IllegalArgumentException("Nome inválido");
}
}
}
Melhores Práticas ao usar Propriedades
- Validação de Dados: Sempre valide os dados no método setter antes de atribuir ao campo.
- Encapsulamento Consistente: Evite expor campos diretamente. Utilize getters e setters.
- Documentação: Documente a função e as restrições de cada propriedade.
- Nomeação Conveniente: Use convenções de nomeação consistentes para propriedades. Geralmente, métodos que começam com "get" e "set" são usados.
Exemplo Prático
Vejamos um exemplo em que implementamos uma classe Propriedades
representando uma pessoa com nome, sobrenome e idade.
package com.caffeinealgorithm.programaremjava;
public class Propriedades {
private String primeiroNome = "", ultimoNome = "";
private int idade = 28;
public void setPrimeiroNome(String primeiroNome) {
if (primeiroNome != "")
this.primeiroNome = primeiroNome;
else
System.out.println("A string referente ao primeiro nome não pode estar vazia.");
}
public void setUltimoNome(String ultimoNome) {
if (ultimoNome != "")
this.ultimoNome = ultimoNome;
else
System.out.println("A string referente ao último nome não pode estar vazia.");
}
public int getIdade() {
return idade;
}
public void informacao() {
System.out.printf("Nome: %s %s\n", primeiroNome, ultimoNome);
}
}
Dicas Adicionais
- Imutabilidade: Em certos cenários, pode ser benéfico criar propriedades somente de leitura, reforçando o conceito de imutabilidade.
- Performance: Tenha cuidado ao implementar lógica complexa em getters e setters, pois isso pode impactar a performance.
- Propriedades Calculadas: Além de simplesmente retornar um campo, os getters podem ser usados para calcular e retornar um valor baseado em múltiplos campos.
Conclusão
As propriedades, quando bem utilizadas, enriquecem o código, tornando-o seguro, flexível e de fácil manutenção. Em Java, os métodos getter e setter são a forma padrão de implementar esse recurso. Ao dominá-los, você garante robustez e clareza nas suas aplicações.