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

Dúvida sobre o método abstract

Fiquei com dúvida agora, pois em Classe abstract o tem o método abstrato que será implementado pela Sub-Classe, mas o método autentica( ) esta sendo implementado pela FuncionarioAutenticavel( ) que é abstract onde ele verifica se a senha esta correta ou não, devolvendo o resultado ou é Classe SistemaInterno( ) que realiza essa função?

3 respostas
solução!

Boa noite!

Vamos ver se consigo tirar sua dúvida...

O GERENTE e o ADMINISTRADOR são filhos da classe 'FuncionarioAutenticavel', que por sua vez possue o método 'autentica'. Então por isso somente o GERENTE e o ADMINISTRADOR conseguem chamar esse método. Ainda não é essa classe 'FuncionarioAutenticavel' que esta de fato retornando se pode ou não entrar no sistema, ela esta servindo como uma ponte para isso acontecer. Veja bem, esta classe 'FuncionarioAutenticavel', permite que exista o método 'autentica' para e somente para os funcionários GERENTE e ADMINISTRADOR, certo?

A classe responsável por fazer retornar se PODE ou NÃO PODE entrar no sitema, é a classe 'SistemaInterno', que por sua vez no SEU método 'autentica', recebe o 'FuncionarioAutenticavel' que esta invocando o método 'autentica', que pode ser o GERENTE ou o ADMINISTRADOR, e agora ela compara a senha desse GERENTE ou o ADMINISTRADOR com a senha passada da classe, que é a senha 2222, e guarda na variável boleean, assim tendo como resultado FALSE ou TRUE.

Espero ter ajudado.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Agora acho que vou conseguir ser mais claro, na classe SistemaInterno, ela faz a comparação da senha do GERENTE ou ADMINISTRADOR com a SENHA da classe SistemaInterno.

O 'fa.autentica', esta sendo chamado do método 'autentica' da classe 'FuncionarioAutenticavel', e comparando com o 'this.senha', que nada mais é que a senha da própria classe 'SistemaInterno'. Assim retornando um boolean verdadeiro ou negativo.

DICA: para você ver o que esta chamando o que, segure o botão CTRL e clique com o botão esquerdo do mouse, ai vai te levar até a classe ou método que aquele parâmetro esta fazendo a referência.

Abraço.

Obrigado Maicon pela explicações