Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
3
respostas

Nao sei se entendi bem o encapsulamento do "autenticar"

Por que é mais seguro passar

static login(autenticavel, senha){
       return autenticavel.autenticar(senha);
    }

e...

autenticar(senha){
        return senha == this._senha;
    }

do que passar:

static login(funcionario, senha){
        return funcionario.senha == senha;
    }

e..

 get senha(){
        return this._senha;
    }

? Não entendi porque a opção de cima é mais segura do que a opção de baixo.

3 respostas
solução!

Fala ai Maristela, tudo bem? Eu não diria ser mais seguro, mas, seu código fica mais genérico e organizado em camadas.

Isso porque sua função está recebendo um interface que seja autenticavel, ela pode ser qualquer coisa, não necessariamente um funcionário.

Assim você torna o código mais encapsulado e quem utiliza ela não precisa conhecer detalhes de implementação, pois, isso fica implementado em cada classe que seja autenticavel.

Espero ter ajudado.

Ajudou sim, Matheus! Mto obrigada!

Magina Maristela, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.