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.
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.
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.
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โ.
Mas a implementaรงรฃo do mรฉtodo verifica valores negativos. Portanto, a segunda abordagem tambรฉm falha.
Assim, vocรช nunca expรตe seus dados a terceiros. O que torna seu aplicativo seguro.
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.






