Olá!
O professor usou o seguinte código:
Classe AutenticacaoHelper:
namespace ByteBank.Modelos
{
internal class AutenticacaoHelper
{
public bool CompararSenhas(string senhaVerdadeira, string senhaTentativa)
{
return senhaVerdadeira == senhaTentativa;
}
}
}
Classe FuncionarioAutenticavel:
namespace ByteBank.Modelos.Funcionarios
{
public abstract class FuncionarioAutenticavel : Funcionario, IAutenticavel
{
private AutenticacaoHelper _autenticacaoHelper = new AutenticacaoHelper();
public string Senha { get; set; }
public FuncionarioAutenticavel(double salario, string cpf)
: base(salario, cpf)
{
}
public bool Autenticar(string senha)
{
return _autenticacaoHelper.CompararSenhas(Senha, senha);
}
}
}
A classe AutenticacaoHelper precisou ser instanciada na classe FuncionarioAutenticavel para poder ser utilizada. Testei aqui tornando a classe static e não identifiquei diferenças. Funcionou também.
Seguem minhas alterações:
Classe AutenticacaoHelper:
namespace ByteBank.Modelos
{
public static class AutenticacaoHelper
{
public static bool CompararSenhas(string senhaVerdadeira, string senhaTentativa)
{
return senhaVerdadeira == senhaTentativa;
}
}
}
Classe FuncionarioAutenticavel:
namespace ByteBank.Modelos.Funcionarios
{
public abstract class FuncionarioAutenticavel : Funcionario, IAutenticavel
{
public string Senha { get; set; }
public FuncionarioAutenticavel(double salario, string cpf)
: base(salario, cpf)
{
}
public bool Autenticar(string senha)
{
return AutenticacaoHelper.CompararSenhas(Senha, senha);
}
}
}
Qual a diferença entre essas duas formas? Quando devo usar uma ou a outra?