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

Soma total da bonificação errada

Estou mais ou menos na metade do vídeo, e reparei que quando rodava o programa a soma das bonificações estava dando errada... Insira aqui a descrição dessa imagem para ajudar na acessibilidadeo 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();
2 respostas
solução!

Olá boa noite, tudo bem?? Seu problema se encontra na parte em que vai registrar a bonificação do carlos, creio eu que deveria aumentar o salario dele primeiro para depois registrar sua bonificação. Por isso o resultado esta com 20 de diferença, pois esta pegando a bonificação do salario antigo de carlos. Espero ter ajudado :)

Faz muito sentido, quando eu estiver em casa vou verificar, obrigado pela ajuda!