Solucionado (ver solução)
Solucionado
(ver solução)
13
respostas

Método autentica().

Não entendi muito bem qual foi o motivo de criação do método autentica(). Alguém poderia me explicar ?

13 respostas

Oi Matheus, tudo beleza?

O método autentica() foi criado justamente para dar a capacidade de um determinado funcionário se autenticar no sistema ou não. Se ele for um funcionário que implementa a interface Autenticavel, ele terá condições de se logar no sistema.

Oi Daniel, boa tarde!

É que não consigo compreender o porquê um funcionário teria esse método, sendo que quem deveria fazer a autenticação é o sistema.

Pense no seguinte: um funcionário faz a autenticação porém o sistema valida a mesma.

Olhe o trecho de código abaixo.


class SistemaInterno {    

  void login(Autenticavel a) {
     int senha = // pega senha de um lugar, ou de um scanner de polegar
     boolean ok =    a.autentica(senha);

     // aqui eu posso chamar o autentica! 
     // não necessariamente é um Funcionario!
     // Mais ainda, eu não sei que objeto a 
     // referência "a" está apontando exatamente! Flexibilidade.
  }

}

O funcionário faz sua respectica autenticação e o sistema tem um boolean ok que vai receber true ou false dependendo da capacidade do funcionário se autenticar.

Se não tiver ficado claro pode falar que explico de outro jeito ;)

Psé, pra mim é como se o método autentica() fosse uma outra validação.

Veja bem. Na verdade não é uma segunda autenticação. O método vê a capacidade do funcionário se autenticar e depois retorna true caso a operação tenha sido um sucesso e false caso contrário. Dentro do sistema estamos apenas atribuindo o resultado dessa autenticação para uma variável para que possamos definir o rumo do programa.

Como tu simularia isso em uma tela de login ?

Pensando rápido poderia ser o seguinte.

O usuário preenche a matrícula dele e submete, caso seja um funcionário autenticável ele entraria com a senha dele em seguida. Caso os dados batessem, o método de autenticação permitiria que o usuário logasse.

Então é como se fosse uma daquelas verificações para saber se o usuário é administrador ou não. Exemplo:

private boolean isAdmin;

solução!

É por aí a ideia.

E não seria interessante em uma situação como essa ter uma classe DAO ?

Certamente. Mas aí estaremos pensando em um sistema mais complexo, enquanto esse atual é apenas para ensinar os conceitos e abstrações :)

Pois quando vi este método autentica, logo pensei: "Bom, isso deve fazer alguma consulta no banco de dados. Localizado a senha , comparando-a com a digitada, é retornado true ou false. Retornando isso ao método login, para que o usuário possa ser redirecionado para alguma janela de erro ou acesso ao sistema...".