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

Qual é o tipo de ligação entre essa classe e a interface?

Olá ! Preciso, que alguém me ajude perceber que tipo de ligação usou-se entre a class e a interface, será que é uma herança?

A maioria do código, relacionado com a senha eu percebo, mas preciso entender bem este bloco abaixo dentro do comentário, por favor. /* public class SistemaInterno { public bool Logar(IAutenticavel funcionario, String senha) { bool usuarioAutenticado = funcionario.Autenticar(senha);

*/

Código completo abaixo.

using System;
namespace ByteBankHeranca.Sistemas
{

    public interface IAutenticavel
    {
        bool Autenticar(String senha);

    }
}


---------------------------------------------------
using System;
using ByteBankHeranca.Funcionarios;

namespace ByteBankHeranca.Sistemas
{
    public class SistemaInterno
    {
        public bool Logar(IAutenticavel funcionario, String senha)
        {
            bool usuarioAutenticado = funcionario.Autenticar(senha);

            if (usuarioAutenticado)
            {
                Console.WriteLine("Bem-Vindo ao sistema!");
                return true;
            }
            else
            {
                Console.WriteLine("Senha incorrecta.");
                return false;
            }


        }



    }
}
2 respostas
solução!

Olá Délcio, tudo bem?

Esse código quer dizer que o parâmetro funcionario é de algum tipo que implemente a interface IAutenticavel.

Para um tipo implementar essa interface, ele deverá conter um código de um método chamado Autenticar e que esse método recebe uma string, que é referente a senha, e é feita a comparação e é retornado um booleano dizendo se as senhas são iguais ou não, independente da forma dessacomparação ou mecanismos de validação.

Neste caso aqui, a interface é usada como um tipo e o que garante que possa ser qualquer tipo que implemente essa interface é o polimorfismo. Ou seja, funcionario pode ser de qualquer tipo desde que esse tipo tenha uma característica específica, que é implementar a interface IAutenticavel.

Esse mecanismo é o mesmo que foi explicado com a classe abstrata Funcionario, que uma variável desse tipo pode receber um objeto dos tipos Designer, Diretor, Gerente. Mas neste caso é uma variável que recebe algum tipo que implemente a interface IAutenticavel. Isso é uma grande facilidade do polimorfismo.

Espero ter ajudado!

Olá Fabiano.

Muito obrigado pelo esclarecimento, ajudou-me a compreender o código.

Abraços.