Olá Thales, tudo bem com você?
Na verdade o autentica
do Sistema Interno não é o mesmo das classes Gerente, Administrador e Cliente
, tem apenas o mesmo nome :)
Veja que essas últimas classes tiveram que implementar a interface Autenticavel
que tem o método autentica
que recebe como parâmetro um número inteiro, para verificar se a senha
está correta, isso não acontece com o Sistema Interno :)
Mas não entendi o porque na classe SistemaInterno o método recebe um objeto como parâmetro
Então, estamos utilizando a interface Autenticavel
como parâmetro do método para poder utilizar métodos que estão presentes nessa interface, dessa maneira temos que certeza que os objetos que passarmos por parâmetros tem essas funções definidas em suas classes
mas o próprio método autentica já confirma se é true or false.
É que precisamos enxergar o fluxo de uma seguinte maneira:
- Só quem pode utilizar o Sistema Interno são objetos que assinam a interface Autenticavel
- Além disso, esses objetos precisam ter a sua própria autenticação de senha
Vou mudar o nome do método autentica
do Sistema Interno para que fique mais fácil, vamos supor que na verdade ele se chama: participarReuniao
, a partir desse método precisamos que apenas funcionários participem então por isso eles precisam implementar Autenticável!
Mas além disso, esses funcionários precisam entrar com essa senha correta, então por isso dentro do método participar reunião eu preciso chamar o método autentica
de cada objeto :)
É como se fosse 2 filtros, pode parecer um pouco confuso, mas o exemplo utilizado na aula é para apenas trazer esse conceito importante de que podemos utilizar interfaces como parâmetros de métodos e dado isso podemos utilizar todas as funções presentes nela :)
Compreendeu? Qualquer coisa estou a disposição :)
Abraços e Bons Estudos!