Encapsulamento em Java OOPs com Exemplo
O que é encapsulamento em 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 de informações e proteger dados e comportamento do objeto. É um dos quatro conceitos OOP importantes. A classe encapsulate é fácil de testar, por isso também é melhor para testes de unidade.
Neste tutorial, você aprenderá-
- O que é encapsulamento em Java?
- Aprenda o encapsulamento com um exemplo
- Ocultação de dados em Java
- Métodos Getter e Setter em Java
- Abstração x Encapsulamento
- Vantagens do encapsulamento em Java
Clique aqui se o vídeo não estiver acessível
Aprenda encapsulamento com um exemplo
Para entender o que é encapsulamento em detalhes, considere a seguinte classe de conta bancária com métodos deposit e show balance
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 tenha conseguido acesso ao código da sua conta bancária. Agora, ele tenta depositar o valor -100 em 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.
Agora, a questão é:Isso é possível? Vamos investigar.
Normalmente, uma variável em uma classe é definida como “privada”, conforme mostrado abaixo. Ele só pode ser acessado com os métodos definidos na classe. Nenhuma outra classe ou objeto pode acessá-los.
Se um membro de dados for privado, significa que ele só pode ser acessado dentro da mesma classe. Nenhuma classe externa pode acessar o membro de dados privado ou variável de outra classe.
Portanto, no nosso caso, o hacker não pode depositar o valor -100 em sua conta.
Abordagem 2 :A primeira abordagem do hacker falhou em depositar o valor. Em seguida, ele tenta depositar uma quantia -100 usando o método “depósito”.
Mas a implementação do método tem uma verificação de valores negativos. Portanto, a segunda abordagem também falha.
Assim, você nunca expõe seus dados a terceiros. O que torna seu aplicativo seguro.
Todo o código pode ser pensado em uma cápsula, e você só pode se comunicar por meio das mensagens. Daí o nome encapsulamento.
Ocultação de dados em Java
Ocultação de dados em Java está escondendo as variáveis de uma classe de outras classes. Ele só pode ser acessado através do método de sua classe atual. Ele oculta os detalhes de implementação dos usuários. Mas, mais do que ocultar dados, destina-se a um melhor gerenciamento ou agrupamento de dados relacionados.
Para obter um menor grau de encapsulamento em Java, você pode usar modificadores como “protegido” ou “público”. 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 acessador e modificador.
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 interpretado com a abstração. Vamos estudar-
- O encapsulamento é mais sobre "como" alcançar uma funcionalidade
- A 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 na 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 está vinculando os dados com suas funcionalidades relacionadas. Aqui, funcionalidades significam “métodos” e dados significam “variáveis”
- Por isso, mantemos variáveis e métodos em um só lugar. Esse lugar é “classe”. A classe é a base para o encapsulamento.
- Com o Java Encapsulation, você pode ocultar (restringir o acesso) a membros de dados críticos em seu código, o que aumenta a segurança
- Como discutimos anteriormente, se um membro de dados for declarado “privado”, ele só poderá ser acessado dentro da mesma classe. Nenhuma classe externa pode acessar o membro de dados (variável) de outra classe.
- No entanto, se você precisar acessar essas variáveis, precisará usar getter" e "setter" públicos métodos.
Java
- Encapsulamento Java
- Cast de tipo Java
- Método String Length () em Java:como encontrar com exemplo
- Método Java String charAt() com exemplo
- String Java contém() Método | Verificar substring com exemplo
- Java String EndsWith() Método com Exemplo
- Java BufferedReader:Como Ler Arquivo em Java com Exemplo
- Algoritmo de ordenação por inserção em Java com exemplo de programa
- Classificação de seleção no programa Java com exemplo
- Java - Encapsulamento