1
resposta

Duvida na classe TestaSistema

Boa tarde,

Na Classe TestaSistema quando eu chamo o si.autentica() é necessario criar toda vez na classe SistemaInterno? Quero dizer eu chamo si.autentica(adm ) e depois si.autentica(cliente) é necessario criar os dois na classe SistemaInterno? não teria outro jeito´?


public class TesteSistema {

    public static void main(String[] args) {

        Gerente g = new Gerente ();
        g.setSenha(222);

        Administradores adm = new Administradores();
        adm.setSenha(3333);

        Cliente cliente = new Cliente();
        cliente.setSenha(3433);

         SistemaInterno si = new SistemaInterno();
        si.autentica(g);
        si.autentica(adm);
        si.autentica(cliente);

    }

}


public class SistemaInterno {

        private int senha = 222;

        public void autentica(Administradores adm) {
            boolean autenticou = adm.autentica(this.senha);
            if(autenticou){
                System.out.println("pode entrar no sistema");
            }else {
                System.out.println("não pode entrar no sistema");
            }

        }
        public void autentica(Gerente g) {
            boolean autenticou = g.autentica(this.senha);
            if(autenticou){
                System.out.println("pode entrar no sistema");
            }else {
                System.out.println("não pode entrar no sistema");
            }

        }
}
1 resposta

Marco, boa tarde!

Existem outras opções sim! Você pode criar uma classe mais genéria, que ambas vão ter que herdar, ou como você irá ver, você pode criar uma interface e esperar receber uma classe que implementa ela na assinatura do seu método.

public void autentica(UsuarioAutenticavel usuario) {
            boolean autenticou = usuario.autentica(this.senha);
            if(autenticou){
                System.out.println("pode entrar no sistema");
            }else {
                System.out.println("não pode entrar no sistema");
            }

        }

Espero ter ajudado e bons estudos!