Encapsulamento em Java

Em que consiste o encapsulamento Java?

Encapsulamento em Java รฉ um mecanismo para agrupar variรกveis(dados) e mรฉtodos(cรณdigo) juntos como uma รบnica unidade. ร‰ o processo de ocultar detalhes das informaรงรตes e proteger os dados e o comportamento do objeto. ร‰ um dos quatro conceitos importantes de OOP. A classe encapsulada รฉ fรกcil de testar, por isso tambรฉm รฉ melhor para testes unitรกrios.

Clique aqui. se o vรญdeo nรฃo estiver acessรญvel

Aprenda Encapsulamento em Java com exemplo

Para entender o que รฉ encapsulamento em detalhes, considere a seguinte classe de conta bancรกria com mรฉtodos de depรณsito e mostrar saldo

class Account {
    private int account_number;
    private int account_balance;

    public void show Data() {
        //code to show data 
    }

    public void deposit(int a) {
        if (a < 0) {
            //show error 
        } else
            account_balance = account_balance + a;
    }
}

Suponha que um hacker conseguiu obter acesso ao cรณdigo da sua conta bancรกria. Agora, ele tenta depositar o valor -100 na sua conta de duas maneiras. Vamos ver seu primeiro mรฉtodo ou abordagem.

Abordagem 1: Ele tenta depositar uma quantia invรกlida (digamos -100) em sua conta bancรกria manipulando o cรณdigo.

Encapsulamento em Java

Agora, a questรฃo รฉ - Isso รฉ possรญvel? Vamos investigar. Normalmente, uma variรกvel em uma classe รฉ definida como โ€œprivadaโ€, como mostrado abaixo. Ela sรณ pode ser acessada com os mรฉtodos definidos na classe. Nenhuma outra classe ou objeto pode acessรก-la.

Encapsulamento em Java

Se um membro de dados for privado, significa que ele sรณ pode ser acessado dentro da mesma classe. Nenhuma classe externa pode acessar um membro de dados privado ou variรกvel de outra classe. Entรฃo, no nosso caso, o hacker nรฃo pode depositar o valor -100 na sua conta.

Encapsulamento em Java

Abordagem 2: A primeira abordagem do hacker falhou em depositar o valor. Em seguida, ele tenta depositar um valor de -100 usando o mรฉtodo โ€œdepositโ€.

Encapsulamento em Java

Mas a implementaรงรฃo do mรฉtodo verifica valores negativos. Portanto, a segunda abordagem tambรฉm falha.

Encapsulamento em Java

Assim, vocรช nunca expรตe seus dados a terceiros. O que torna seu aplicativo seguro.

Encapsulamento em Java

O cรณdigo inteiro pode ser pensado como uma cรกpsula, e vocรช sรณ pode se comunicar por meio das mensagens. Daรญ o nome encapsulamento.

Dados ocultos Java

Dados ocultos Java estรก escondendo as variรกveis โ€‹โ€‹de uma classe de outras classes. Ela sรณ pode ser acessada atravรฉs do mรฉtodo da classe atual. Ela esconde os detalhes de implementaรงรฃo dos usuรกrios. Mas mais do que esconder dados, ela รฉ destinada a um melhor gerenciamento ou agrupamento de dados relacionados. Para atingir um menor grau de encapsulamento em Java, vocรช pode usar modificadores como โ€œprotectedโ€ ou โ€œpublicโ€. Com o encapsulamento, os desenvolvedores podem alterar uma parte do cรณdigo facilmente sem afetar a outra.

Getter e Setter em Java

Getter e Setter em Java sรฃo dois mรฉtodos convencionais usados โ€‹โ€‹para recuperar e atualizar valores de uma variรกvel. Eles sรฃo usados โ€‹โ€‹principalmente para criar, modificar, excluir e visualizar os valores das variรกveis. O mรฉtodo setter รฉ usado para atualizar valores e o mรฉtodo getter รฉ usado para ler ou recuperar os valores. Eles tambรฉm sรฃo conhecidos como acessadores e modificadores.

O cรณdigo a seguir รฉ um exemplo de mรฉtodos getter e setter:

class Account{ 
private int account_number;
private int account_balance; 
    // getter method
	public int getBalance() {
        return this.account_balance;
    }
    // setter method
	public void setNumber(int num) {
        this.account_number = num;
    }
}

No exemplo acima, o mรฉtodo getBalance() รฉ o mรฉtodo getter que lรช o valor da variรกvel account_balance e o mรฉtodo setNumber() รฉ o mรฉtodo setter que define ou atualiza o valor da variรกvel account_number.

Abstraรงรฃo vs. Encapsulamento

Muitas vezes o encapsulamento รฉ mal compreendido com Abstraรงรฃo. Vamos estudar-

  • O encapsulamento รฉ mais sobre โ€œComoโ€ obter uma funcionalidade
  • Abstraรงรฃo รฉ mais sobre โ€œO queโ€ uma classe pode fazer.

Um exemplo simples para entender essa diferenรงa รฉ um telefone celular. Onde a lรณgica complexa da placa de circuito รฉ encapsulada em uma tela sensรญvel ao toque e a interface รฉ fornecida para abstraรญ-la.

Vantagens do encapsulamento em Java

  • O encapsulamento vincula os dados ร s funcionalidades relacionadas. Aqui funcionalidades significam โ€œmรฉtodosโ€ e dados significam โ€œvariรกveisโ€
  • Portanto, mantemos variรกveis โ€‹โ€‹โ€‹โ€‹e mรฉtodos em um sรณ lugar. Esse lugar รฉ โ€œclasseโ€. A classe รฉ a base para o encapsulamento.
  • Com Java Encapsulamento, vocรช pode ocultar (restringir o acesso) a membros de dados crรญticos em seu cรณdigo, o que melhora a seguranรงa
  • Como discutimos anteriormente, se um membro de dados for declarado โ€œprivadoโ€, entรฃo ele sรณ pode ser acessado dentro da mesma classe. Nenhuma classe externa pode acessar o membro de dados (variรกvel) de outra classe.
  • Porรฉm, se vocรช precisar acessar essas variรกveis, vocรช terรก que usar โ€œgetterโ€ e โ€œsetterโ€ pรบblicos mรฉtodos.

Resuma esta postagem com: