12.3. Encapsulamento e Métodos Acessores (Getters e Setters)

O encapsulamento é um dos quatro princípios fundamentais da programação orientada a objetos (POO), ao lado da herança, polimorfismo e abstração. Ele é essencial para a criação de software seguro, confiável e fácil de manter. O encapsulamento em Java é implementado através do uso de modificadores de acesso e métodos acessores, conhecidos como getters e setters.

Modificadores de Acesso: private, protected, public

Os modificadores de acesso em Java definem a visibilidade de uma classe, método ou variável em relação a outras partes do código. Existem três principais modificadores de acesso:

  • private: O membro é acessível apenas dentro da própria classe. É o nível de acesso mais restritivo e é usado para ocultar os detalhes de implementação e manter a integridade dos dados.
  • protected: O membro é acessível dentro da própria classe, em subclasses (mesmo que estejam em pacotes diferentes) e em outras classes do mesmo pacote. É menos restritivo que o private e é comumente usado em situações onde há herança.
  • public: O membro é acessível de qualquer outra classe, independentemente do pacote em que se encontram. É o nível de acesso menos restritivo e deve ser usado com cautela, pois expõe os membros para o mundo externo.

Encapsulamento na Prática

O encapsulamento é a prática de ocultar os detalhes internos de implementação de uma classe e expor apenas os métodos necessários para o uso dessa classe. Isso é feito para evitar o acesso direto aos campos (também conhecidos como variáveis de instância) de uma classe, o que poderia resultar em estados inconsistentes ou indesejados. Em vez disso, os campos são marcados como private e o acesso a eles é feito por meio de métodos públicos, os getters e setters.

Getters e Setters

Getters e setters são métodos públicos que permitem a leitura (get) e a modificação (set) de campos privados de uma classe. Eles são a porta de entrada e saída para os dados encapsulados. A convenção em Java é nomear esses métodos como getNomeDoCampo para getters e setNomeDoCampo para setters, onde NomeDoCampo começa com uma letra maiúscula e corresponde ao nome do campo privado.

Exemplo de Encapsulamento com Getters e Setters


public class Pessoa {
    private String nome;
    private int idade;

    // 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) {
        if (idade > 0) {
            this.idade = idade;
        } else {
            throw new IllegalArgumentException("Idade deve ser maior que zero.");
        }
    }
}

Neste exemplo, a classe Pessoa tem dois campos privados: nome e idade. Os métodos getters e setters correspondentes permitem o acesso controlado a esses campos. Observe que no setter setIdade, há uma verificação para garantir que a idade não seja negativa, o que é um exemplo de como o encapsulamento ajuda a manter a integridade dos dados.

Vantagens do Encapsulamento

O encapsulamento oferece várias vantagens, incluindo:

  • Controle de acesso: Os desenvolvedores podem controlar quem tem acesso às variáveis de instância de uma classe.
  • Flexibilidade e manutenção: A implementação interna de uma classe pode ser alterada sem afetar as classes que a utilizam, desde que os métodos acessores permaneçam os mesmos.
  • Aumento da segurança: Ao evitar o acesso direto aos campos, é possível prevenir estados inconsistentes e proteger os dados contra manipulações indesejadas.

Conclusão

Encapsulamento é um conceito fundamental na programação orientada a objetos que ajuda a proteger os dados e a manter o código organizado e seguro. Os modificadores de acesso private, protected e public são ferramentas poderosas para controlar a visibilidade dos membros de uma classe. Getters e setters são os métodos que permitem interagir com esses membros de maneira controlada, respeitando as regras de negócio e mantendo a integridade dos dados. Ao entender e aplicar corretamente o encapsulamento, os programadores podem criar sistemas robustos e fáceis de manter.

Agora responda o exercício sobre o conteúdo:

Qual dos seguintes afirmativas sobre encapsulamento em Java é correta?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Encapsulamento e métodos acessores (getters e setters): Definição de métodos acessores (getters)

Próxima página do Ebook Gratuito:

78Encapsulamento e métodos acessores (getters e setters): Definição de métodos acessores (getters)

4 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto