Olá galera linda e maravilhosa,
Minha sugestão para implementação de Login e Senha.
Comecei atacando o problema lá na raiz:
Autenticavel.cs
public abstract class Autenticavel : Funcionario
{
protected Autenticavel(string nome, string cpf, double salario) : base(nome, cpf, salario) { }
public string Senha { protected get; set; }
public string Usuario { protected get; set; }
public abstract bool Autenticar(string usuario, string senha);
}
Depois, o vs code me apontou erro de compilação nas classes herdadas, foi meu segundo ponto de ataque.
Diretor.cs
public class Diretor : Autenticavel
{
public Diretor(string nome, string cpf) : base(nome, cpf, 5000) { }
override public double Bonificacao => this.Salario *= 1.5;
public override void AumentarSalario() => this.Salario *= 1.15;
public override bool Autenticar(string usuario, string senha) => this.Usuario == usuario && this.Senha == senha;
}
GerenteDeContas.cs
public class GerenteDeContas : Autenticavel
{
public GerenteDeContas(string nome, string cpf) : base(nome, cpf, 4000) { }
public override void AumentarSalario() => this.Salario *= 1.05;
public override bool Autenticar(string usuario, string senha) => this.Usuario == usuario && this.Senha == senha;
public override double Bonificacao => this.Salario *= 1.25;
}
Por fim implementei a solução no SistemaInterno.cs
public class SistemaInterno
{
public bool Logar(Autenticavel funcionario, string usuario, string senha)
{
bool usuarioAutenticado = funcionario.Autenticar(usuario, senha);
if (usuarioAutenticado)
{
System.Console.WriteLine("Bem vindo ao sistema!");
return true;
}
else
{
System.Console.WriteLine("Senha incorreta!");
return false;
}
}
}