Ele criou a classe AutenticacaoUtil para nao repetir código, até ai ok, uma duvida que tenho é, na Classe Sistema interno temos o código abaixo (mudei só o nome do parametro e os print):
public class SistemaInterno {
private int senha ;
public void autentica (Autenticavel au) {
boolean autenticou = au.autentica(this.senha);
if (autenticou) {
System.out.println("Bem vindo ao Bytebank, você está logado no sistema." );
}else { System.out.println("senha incorreta, você tem mais 2 tentativas...");
}
No caso teremos objetos diferentes sendo validados num só lugar, mas minha dúvida é como vou setar uma senha para ser comparada pela classe AutenticacaoUtil? Se o valor é padrão para todos os objetos ta sendo um só que ta sendo setado na classe SistemaInterno.
Para esclarecer, eu quero que o autentica tenha valores diferentes para cada objeto pois, a senha do administrador não é mesma do gerente por exemplo. Eu quero definir uma senha especifica para cada objeto criado, ele não especifica isso no vídeo, deixei o atributo senha da classe SistemaInterno em branco para poder setar direto no objeto, mas ta dando errado.
Meu código sempre da que a senha ta invalida, pq ta comparando com um valor dentro da classe SistemaInterno ( vou deixar a classe de teste e a classe do AutenticadorUtil que eu nomeei de AutenticadorObj):
Autenticador para nao repetir o código:
public class AutenticadorObj {
private int senha;
public void setSenha(int senha) {
this.senha = senha;
}
public boolean autentica(int senha) {
if(this.senha==senha) {
return true;
}
else {return false;
}
}
}
Classe que testa o Sistema ( eu tento criar uma senha e usar o autentica do objeto com as mesma senha pra receber a mensagem de bem vindo, mas recebo a de senha invalida
public class TestaSistema
{
public static void main(String[] args) {
Cliente cliente = new Cliente();
cliente.setSenha(256);
cliente.autentica(256);
SistemaInterno si = new SistemaInterno();
si.autentica(cliente);
}
}