- 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 controlo refinado sobre a forma como os dados de um objeto são acedidos e modificados.
- Porque usar Propriedades?
- Como Implementar
- Melhores Práticas ao usar Propriedades
- Exemplo Prático
- Dicas Adicionais
Porque usar Propriedades?
1. Controlo sobre os dados
É possível validar ou modificar dados antes de estes serem armazenados ou devolvidos.
2. Flexibilidade
Alterações internas nos métodos getter e setter podem ser feitas sem modificar a forma como um objeto é utilizado 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: Valide sempre os dados no método setter antes de os 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: Utilize convenções de nomeação consistentes para propriedades. Geralmente, utilizam-se métodos que começam com "get" e "set".
Exemplo Prático
Vejamos um exemplo em que implementamos uma classe Propriedades que representa uma pessoa com nome, apelido 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 determinados cenários, pode ser vantajoso criar propriedades apenas de leitura, reforçando o conceito de imutabilidade.
- Performance: Tenha cuidado ao implementar lógica complexa em getters e setters, pois isso pode afectar a performance.
- Propriedades Calculadas: Além de simplesmente devolver um campo, os getters podem ser utilizados para calcular e devolver um valor com base 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 este recurso. Ao dominá-los, garante robustez e clareza nas suas aplicações.