12.6. Encapsulamento e métodos acessores (getters e setters): Convenções de nomenclatura para getters e setters

Página 80

12.6 Encapsulamento e Métodos Acessores (Getters e Setters)

O encapsulamento é um dos quatro pilares fundamentais da programação orientada a objetos (POO), juntamente com a herança, a polimorfismo e a abstração. Encapsulamento é a prática de manter os campos (variáveis de instância) de uma classe privados e fornecer acesso a eles através de métodos públicos. Isso é feito para manter o controle sobre os valores que estão sendo definidos e obtidos, e para proteger a integridade dos dados mantidos pela classe.

Os métodos acessores, conhecidos como getters e setters, são a forma padrão de implementar encapsulamento em Java. Eles são métodos públicos que servem para obter (get) e definir (set) o valor de campos privados de uma classe.

Convenções de Nomenclatura para Getters e Setters

Em Java, há uma convenção de nomenclatura bem estabelecida para getters e setters que ajuda a manter o código legível, consistente e acessível para outras ferramentas e frameworks que dependem dessas convenções.

Para um campo chamado nome, por exemplo, o getter seria nomeado getNome() e o setter seria nomeado setNome(). Essa convenção se aplica a todos os campos, com algumas regras específicas para campos booleanos, onde o getter muitas vezes começa com is em vez de get, como isAtivo() para um campo chamado ativo.

Aqui estão as regras gerais para nomear getters e setters:

  • Getters: O método começa com a palavra get seguida pelo nome do campo com a primeira letra maiúscula. Se o campo for do tipo boolean, você também pode usar is em vez de get.
  • Setters: O método começa com a palavra set seguida pelo nome do campo com a primeira letra maiúscula.

Esses métodos devem ser marcados como públicos para que possam ser acessados de fora da classe. Além disso, o método setter geralmente retorna void e aceita um parâmetro do mesmo tipo do campo que está definindo, enquanto o getter retorna um valor do mesmo tipo do campo.

Exemplo de Implementação de Getters e Setters


public class Pessoa {
    private String nome;
    private int idade;
    private boolean ativo;
    
    // Getter para o campo nome
    public String getNome() {
        return nome;
    }
    
    // Setter para o campo nome
    public void setNome(String nome) {
        this.nome = nome;
    }
    
    // Getter para o campo idade
    public int getIdade() {
        return idade;
    }
    
    // Setter para o campo idade
    public void setIdade(int idade) {
        this.idade = idade;
    }
    
    // Getter para o campo ativo (note o uso de 'is' em vez de 'get')
    public boolean isAtivo() {
        return ativo;
    }
    
    // Setter para o campo ativo
    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }
}

Por Que Usar Getters e Setters?

Embora possa parecer mais simples acessar os campos diretamente, existem várias vantagens em usar getters e setters:

  • Controle de Acesso: Você pode controlar se um campo é somente leitura ou somente gravação, ou se ele deve seguir certas regras de validação ao ser definido.
  • Ocultação de Implementação: A classe pode mudar a forma como os dados são armazenados internamente sem afetar as classes que a utilizam.
  • Flexibilidade: Você pode adicionar lógica adicional aos métodos acessores, como notificar outros objetos sobre mudanças no valor, realizar validações, ou até mesmo adiar o cálculo do valor até que ele seja realmente necessário (lazy loading).
  • Compatibilidade com Frameworks: Muitos frameworks Java, como Spring e Hibernate, dependem de getters e setters para funcionar corretamente.

É importante notar que, embora os getters e setters sejam uma prática comum, eles não são obrigatórios. Em alguns casos, onde a classe é muito simples e não requer controle adicional sobre seus campos, pode ser aceitável expor os campos diretamente. No entanto, isso deve ser feito com cautela e entendendo as consequências para a manutenção e flexibilidade do código.

Em resumo, getters e setters são uma parte crucial do encapsulamento em Java. Eles fornecem uma interface controlada para acessar e modificar os campos de uma classe, mantendo a integridade e a flexibilidade do código. Seguir as convenções de nomenclatura para esses métodos é essencial para manter a consistência e garantir a interação adequada com outras partes do ecossistema Java.

Now answer the exercise about the content:

Qual das seguintes afirmações sobre encapsulamento e métodos acessores em Java está correta?

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

8112.7. Encapsulamento e métodos acessores (getters e setters): Uso de getters e setters para controle de acesso

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text