2
respostas

Duvida no atributo login

public class Gerente extends Funcionario {

    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;
        }
    }

    //novo método, recebendo dois params
    public boolean autentica(String login, int senha) {
        //implementacao omitida
    }

}

Nesse caso , o atributo login não teria que ser definido como private para o método ?

2 respostas

Fala ai Isaac, tudo bem? Sim, deveria ter o atributo referente ao login da forma como você mesmo disse.

Por favor, sugira uma correção do exercício que eu aprovo por aqui, é só clicar nos três pontinhos localizado abaixo do botão para prosseguir e "Sugerir Melhoria".

Sua observação está correta.

Espero ter ajudado.

Isaac,

Mas olhando apenas o código, entendo que no momento da autenticação você vai realizar uma comparação entre os valores do Gerente e valores que veio dos parâmetros.

Portanto, o login:

//novo método, recebendo dois params
public boolean autentica(String login, int senha) {
    //implementacao omitida
}

Tal como a senha, já existente no Gerente:

private int senha;

Deve ser sim uma campo privado do Gerente. Assim:

private String login;
private int senha;

Então teríamos algo assim, usando o código acima:

Gerente gerente = new Gerente();
gerente.setSenha("senha");
gerente.setLogin("login");
boolen loginValido = gerente.autenticar("outroLogin", "outraSenha");

Ou, melhor ainda, sem os sets e usando construtor:

Gerente gerente = new Gerente("login", "senha");
boolen loginValido = gerente.autenticar("outroLogin", "outraSenha");