4
respostas

exercicio de herança - mãos na massa - 07 -No código da classe Cliente, modifique o código....

dá o seguinte erro: the method autentica() in the type AutenticadorUtil is not applicable for the arguments (int); pelo que entendi, não é possivel usar a senha que é do tipo int para o metodo autentica que é do tipo boolean. como resolver? O eclipse dá uma solução, tirar o argumento. É viavél? funciona?

4 respostas

Tem como mostrar as classes, de preferencia a Cliente, AutenticacaoUtil e Autenticavel!

Cliente:

public class Cliente implements Autenticavel{

private AutenticadorUtil autenticador;
private int senha;

public Cliente() {
    this.autenticador = new AutenticadorUtil();
}

@Override
public void setSenha(int senha) {
    this.autenticador.setSenha(senha); 

}

@Override
public int getSenha() {
    return this.senha;
}

@Override
public boolean autentica(int senha) {
    return this.autenticador.autentica(senha);

}

AutenticadorUtil:

public class AutenticadorUtil {

private int senha;

public void setSenha(int senha) {
    this.senha = senha;
}
public int getSenha() {
    return this.senha;
}

public boolean autentica() {
    if(this.senha == senha) {
        return true;
    } else {
        return false;
    }
}

}

Autenticavel:

public interface Autenticavel {

public abstract void setSenha(int senha);

public abstract int getSenha();

public abstract boolean autentica(int senha);

}

Obrigado pelo retorno André, então pelo que eu vi nessas classes há algumas inconsistência de acordo com o ministrado pelo professor, começando pelo Classe Cliente que está implementando AutenticacaoUtil, nesse caso não precisa mais do atributo:

private int senha;

e nem do método get

@Override
public int getSenha() {
    return this.senha;
}

na class AutenticadorUtil e interface Autenticavel

pode tirar também o getSenha

public int getSenha() {
    return this.senha;
}
public abstract int getSenha();

Faça esses testes e veja se apresenta alguma melhora na execuçãao do código.

fiz as modificações, mas o erro persistiu. Então fui ver as classes e os métodos , e no método da classe AutenticadorUtil, que é onde está implementado o autentica, vi que o que eu fiz estava sem argumento:

public boolean autentica() { if(this.senha == senha) { return true; } else { return false; } } quando o correto, para poder chamar : public boolean autentica(int senha) { return this.autenticador.autentica(senha);

    seria :
    public boolean autentica(int senha) {
    if(this.senha == senha) {
        return true;
    } else {
        return false;
    }
}

Agora funcionou! - Obrigado! ^.^