CLASSE PROGRAMA
namespace ByteBankComHeranca_2
{
class Program
{
static void Main(string[] args)
{
//CalcularBonificacao();
UsarSistema();
Console.ReadLine();
}
public static void UsarSistema()
{
SistemaInterno sistemaInterno = new SistemaInterno();
Diretor roberta = new Diretor("159.753.398-04");
roberta.Nome = "Roberta";
roberta.Senha = "123";
sistemaInterno.Logar(roberta, "123");
sistemaInterno.Logar(roberta, "abc");
}
public static void CalcularBonificacao()
{
GerenciadorBonificacao gerenciadorBonificacao = new GerenciadorBonificacao();
Funcionario pedro = new Designer("833.222.048-39");
pedro.Nome = "Pedro";
Diretor roberta = new Diretor("159.753.398-04");
roberta.Nome = "Roberta";
Funcionario igor = new Auxiliar("981.198.778-53");
igor.Nome = "Igor";
GerenteDeConta camila = new GerenteDeConta("326.985.628-89");
camila.Nome = "Camila";
Desenvolvedor guilherme = new Desenvolvedor("456.175.468-20");
guilherme.Nome = "Guilherme";
gerenciadorBonificacao.Registrar(guilherme);
gerenciadorBonificacao.Registrar(pedro);
gerenciadorBonificacao.Registrar(roberta);
gerenciadorBonificacao.Registrar(igor);
gerenciadorBonificacao.Registrar(camila);
Console.WriteLine("Total de bonificações do mês " +
gerenciadorBonificacao.GetTotalBonificacao());
}
}
}
CLASSE SISTEMA INTERNO
namespace ByteBankComHerenca_2.Sistemas
{
public class SistemaInterno
{
public bool Logar(Auntenticavel funcionario, string senha)
{
bool usuarioAutenticado = funcionario.Autenticar(senha);
if (usuarioAutenticado)
{
Console.WriteLine("Bem vindo ao sistema!");
return true;
}
else
{
Console.WriteLine("Senha incorreta");
return false;
}
}
}
}
CLASSE DIRETORES
namespace ByteBankComHeranca_2
{
public class Diretor : Autenticavel
{
public string Senha { get; set; }
public Diretor(string cpf) : base (5000, cpf)
{
Console.WriteLine("Criando DIRETOR");
}
public override void AumentarSalario()
{
Salario *= 1.15;
}
public override double GetBonificacao()
{
return Salario + base.GetBonificacao();
}
}
}
CLASSE FUNCIONARIO
namespace ByteBankComHeranca_2
{
public abstract class Funcionario
{
public static int TotalFuncionarios { get; set; }
public string Nome { get; set; }
public string CPF { get; private set; }
public double Salario { get; protected set; }
public Funcionario(double salario, string cpf)
{
Salario = salario;
CPF = cpf;
Console.WriteLine("Criando FUNCIONARIO");
TotalFuncionarios++;
}
public abstract void AumentarSalario();
public abstract double GetBonificacao();
}
}
CLASSE AUTENTICAVEL
namespace ByteBankComHerenca.Sistemas
{
public abstract class Auntenticavel : Funcionario
{
public string Senha { get; set; }
public Auntenticavel(double salario, string cpf) :base (salario,cpf)
{
}
public bool Autenticar(string senha)
{
return Senha == senha;
}
}
}