Oi Matheus! Como vai?
A ideia principal do encapsulamento é proteger os dados e garantir que eles sejam acessados e modificados de forma controlada, o que é crucial em aplicações que lidam com informações sensíveis.
Vamos considerar o exemplo de um sistema de login. Nesse caso, você pode ter uma classe Usuario com atributos privados como nome, senha e nivelDeAcesso. Para acessar ou modificar esses atributos, você utilizaria métodos getters e setters. No entanto, para a senha, você provavelmente não teria um getter, mas sim um método para verificar se a senha fornecida está correta.
Aqui está um exemplo simplificado:
public class Usuario {
private String nome;
private String senha;
private String nivelDeAcesso;
public Usuario(String nome, String senha, String nivelDeAcesso) {
this.nome = nome;
this.senha = senha;
this.nivelDeAcesso = nivelDeAcesso;
}
public String getNome() {
return nome;
}
public boolean verificaSenha(String senha) {
return this.senha.equals(senha);
}
public String getNivelDeAcesso() {
return nivelDeAcesso;
}
}
No exemplo acima, a senha é verificada através de um método específico (verificaSenha), garantindo que o valor da senha nunca seja exposto diretamente. Isso é importante para a segurança dos dados.
Quando você precisa verificar se um usuário está logado e tem permissão para acessar um módulo específico, você pode criar um método que utilize esses getters e verificações. Por exemplo:
public boolean podeAcessarModulo(String modulo) {
if (!verificaSenha(senhaInformada)) {
return false;
}
// Lógica para verificar se o nível de acesso permite acessar o módulo
return nivelDeAcesso.equals("administrador") || moduloPermitidoParaNivel(nivelDeAcesso, modulo);
}
Esse método poderia ser chamado em diferentes partes do sistema para garantir que o usuário tem as permissões necessárias antes de acessar certos recursos.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.