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

Interação entre classes.

Boa noite, em um caso no projeto bytebank criamos uma classe de um sistema interno onde temos um metodo de autentica:

public class SistemaInterno {

    private int senha = 2222;

    public void autentica(Gerente g) {
        boolean autenticou = g.autentica(this.senha);
        if(autenticou) {
            System.out.println("Entrou");
        }
        else {
            System.out.println("Nao entrou");
        }
    }

}

Dentro do metodo declaramos uma variavel de tipo boolean autenticou e ela usa o metodo que esta na classe gerente autentica. (Metodo autentica na classe gerente):

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

Tanto a classe Gerente como a classe SistemaInterno possuem um atributo privado senha, a minha duvida é a seguinte, como utilizando o metodo autentica na classe SistemaInterno

boolean autenticou = g.autentica(this.senha);

Passando o parametro this.senha seria o mesmo que g.autentica(2222); como o atributo senha na classe SistemaInterno foi iniciado já com este valor. Por que ele compara com a senha do SistemaInterno e não do Gerente já que o metodo está na classe Gerente, ele usa o método da classe gerente mas na hora da comparação ele compara com seu próprio atributo.

2 respostas
solução!

João, eu não fiz esse curso mas lembre sempre da relação ALTA COESÃO x BAIXO ACOPLAMENTO.

Isso significa que nesse caso GERENTE tem um comportamento (regra de negócio) AUTENTICA que verifica se a senha passada (parâmetro) por uma classe externa é igual à sua própria senha.

A senha 2222 passada, simula uma tentativa externa de acesso ao sistema. Se a senha de Gerente (this.senha) for igual a 2222 (senha) o método AUTENTICA retornará TRUE.

Espero ter ajudado. Abs!

Obrigado Marcos, analisei o código com mais calma e consegui compreender.