O que é encapsulamento na Orientação a Objetos – Parte I

Por
Publicado em
2 min. de leitura

Fala, meus consagrados! Beleza?

O encapsulamento é um dos pilares fundamentais da Programação Orientada a Objetos (POO). Ele está diretamente relacionado à ideia de proteger os dados internos de um objeto e controlar a forma como esses dados são acessados ou modificados.

Em termos simples, encapsular significa esconder os detalhes internos de implementação de uma classe e permitir que o acesso às suas informações ocorra apenas por meio de uma interface controlada, normalmente formada por métodos públicos. O arquivo de referência destaca exatamente essa ideia ao afirmar que o encapsulamento consiste em ocultar os detalhes internos da implementação de uma classe e expor apenas a interface pública necessária para seu uso.

Esse pilar da POO permite que:

  • Se divida o programa em várias partes menores e independentes;
    • Cada parte possui sua implementação e realiza seu trabalho independentemente das outras partes; e
  • Se construa partes ocultas da implementação do software:
    • Que atinjam uma funcionalidade; e
    • Que ocultam os detalhes de implementação do mundo exterior.

Figura 1: Comunicação entre objetos via uso de métodos.

Uma forma de alcançarmos o encapsulamento é deixando os atributos de instância com um modificador de acesso restritivo (por exemplo, privado) e usar métodos públicos, que saibam trabalhar com esses atributos.

Também podemos aplicar o encapsulamento em métodos de uma classe: uma classe pode ter métodos privados de uso próprio.

Os métodos públicos mais conhecidos para trabalhar com dados privados são os métodos acessores (getters) e modificadores (setters). Eles são usados para acessar e modificar os valores dos atributos privados de um objeto, respectivamente, promovendo o encapsulamento ao controlar como os dados do objeto são acessados e alterados.

Figura 2: Métodos acessores (getters) e modificadores (setters).

Uma classe normalmente possui atributos e métodos. Os atributos representam os dados de um objeto. Os métodos representam os comportamentos que esse objeto pode executar.

O encapsulamento orienta que os atributos internos de uma classe não devem ser acessados diretamente por outras classes. Em vez disso, o acesso deve ocorrer por meio de métodos, de forma controlada.

Observe a ideia central:

public class Pessoa {
    private String nome;

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return this.nome;
    }
}

Nesse exemplo, o atributo nome está declarado como private. Isso significa que ele não pode ser acessado diretamente fora da classe Pessoa.

O acesso ao atributo ocorre por meio dos métodos públicos setNome() e getNome().

Um ponto muito importante do encapsulamento é que os objetos devem se comunicar por meio de métodos.

O material-base apresenta essa ideia ao afirmar que o encapsulamento força que toda comunicação entre objetos seja realizada via métodos, impedindo que um objeto acesse e altere diretamente os atributos de outro objeto. A Figura 1 do arquivo ilustra justamente essa comunicação controlada entre objetos, destacando que o acesso direto aos dados internos não deve ocorrer. 

Isso significa que, em vez de fazer algo assim:

pessoa.nome = "Rogério Araújo";

O correto, considerando o encapsulamento, seria:

pessoa.setNome("Rogério Araújo");

A diferença é importante. No primeiro caso, o atributo é alterado diretamente. No segundo, a alteração passa por um método, permitindo que a classe controle como o dado será modificado.

Como exemplo de criação de um objeto (instância) dessa classe, temos:

// Declaração de uma variável-objeto chamada rogerio.
Pessoa rogerio;

// Instanciação da classe.
rogerio = new Pessoa();

// Acessando o valor do atributo privado nome.
System.out.println(rogerio.getNome());

// Alterando o valor do atributo privado nome.
System.out.println(rogerio.setNome("Rogerão Araújo"));
System.out.println(rogerio.getNome());

Espero que tenham gostado! 

Forte abraço e até a próxima jornada!


Professor Rogerão Araújo

Por
Publicado em
2 min. de leitura