Estou mais ou menos na metade do vídeo, e reparei que quando rodava o programa a soma das bonificações estava dando errada... o correto da soma seria 6545...
public class Funcionario
{
public static int TotalDeFuncionarios { get; private set; }
public string Nome { get; set; }
public string CPF { get; private set; }
public double Salario { get; set; }
public Funcionario(string cpf)
{
Console.WriteLine("Criando um FUNCIONARIO");
TotalDeFuncionarios++;
CPF = cpf;
}
public virtual void AumentarSalario()
{
Salario *= 1.1;
}
public virtual double GetBonificacao()
{
return Salario * 0.10;
}
public class Diretor : Funcionario
{
public Diretor(string cpf) : base(cpf)
{
Console.WriteLine("Criando um DIRETOR");
}
public override void AumentarSalario()
{
Salario *= 1.15;
}
public override double GetBonificacao()
{
return Salario + base.GetBonificacao();
}
public class GerenciadorBonificacao
{
private double _totalBonificacao;
public void Registrar(Funcionario funcionario)
{
_totalBonificacao += funcionario.GetBonificacao();
}
public double GetTotalBonificacao()
{
return _totalBonificacao;
}
static void Main(string[] args)
{
GerenciadorBonificacao gerenciador = new GerenciadorBonificacao();
Funcionario Carlos = new Funcionario("546.879.157-20");
Carlos.Nome = "carlos";
Carlos.Salario = 2000;
gerenciador.Registrar(Carlos);
Carlos.AumentarSalario();
Console.WriteLine("Novo salario do carlos " + Carlos.Salario);
Console.WriteLine(Funcionario.TotalDeFuncionarios);
Diretor Roberta = new Diretor("454.658.148-03");
Roberta.Nome = "Roberta";
Roberta.Salario = 5000;
Console.WriteLine(Funcionario.TotalDeFuncionarios);
Roberta.AumentarSalario();
Console.WriteLine("novo salario da roberta: " + Roberta.Salario);
Funcionario robertaTeste = Roberta;
Console.WriteLine("Bonificação de uma referência de Diretor: " + Roberta.GetBonificacao());
Console.WriteLine("Bonificação de uma referência de funcionário: " + robertaTeste.GetBonificacao());
gerenciador.Registrar(Roberta);
Console.WriteLine(Carlos.Nome);
Console.WriteLine(Carlos.GetBonificacao());
Console.WriteLine(Roberta.Nome);
Console.WriteLine(Roberta.GetBonificacao());
Console.WriteLine("Total de bonificações: " + gerenciador.GetTotalBonificacao());
Console.ReadLine();