Publicado em

Propriedades em Java

Partilhar:

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

É 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

  1. Validação de Dados: Sempre valide os dados no método setter antes de atribuir ao campo.
  2. Encapsulamento Consistente: Evite expor campos diretamente. Utilize getters e setters.
  3. Documentação: Documente a função e as restrições de cada propriedade.
  4. 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.

Happy coding!