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

Nossa primeira herança

o utilizar os dois pontos para dizer que Diretor é funcionário, aparece em "Diretor"


na classe diretor:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ByteBank.Funcionarios
{
    public class Diretor : Funcionario
    {
        public double GetBonificacao()
        {
            return Salario;
        }

    }
}


Classe Funcionario:

       using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ByteBank.Funcionarios
{
    public class Funcionario
    {
        private int _tipo;

        public string Nome { get; set; }
        public string CPF { get; set; }
        public double Salario { get; set; }

        public Funcionario(int tipo)
        {
            _tipo = tipo;
        }


        public double GetBonificacao()
        {
            if (_tipo == 1)
                return Salario;

            return Salario * 0.10;
        }
    }
}

Program:

using ByteBank.Funcionarios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank
{
    class Program
    {
        static void Main(string[] args)
        {
            GerenciadorBonificacao gerenciador = new GerenciadorBonificacao();

            Funcionario carlos = new Funcionario(0);

            carlos.Nome = "Carlos";
            carlos.CPF = "546.879.157-20";
            carlos.Salario = 2000;

            gerenciador.Registrar(carlos);

            Diretor roberta = new Diretor();
           roberta.Nome = "Roberta";
           roberta.CPF = "454.658.148-03";
           roberta.Salario = 5000;

           gerenciador.Registrar(roberta);

            Console.WriteLine(carlos.Nome);
            Console.WriteLine(carlos.GetBonificacao());

            Console.WriteLine(roberta.Nome);
            Console.WriteLine(roberta.GerenciadorBonificacao());

            Console.WriteLine("Total de bonificações é: " + gerenciador.GetTotalBonificacao());

            Console.ReadLine();
        }
    }
}

GerenciadorBonificacao:

using ByteBank.Funcionarios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank
{
    public class GerenciadorBonificacao
    {
        campo privado
        private double _totalBonificacao;

        Somaremos e atribuiremos (+=) funcionario.GerenciadorBonificacao() a esse campo, no escopo de registrar().
        public void Registrar(Funcionario funcionario)
        {
            _totalBonificacao += funcionario.GetBonificacao();
        }

        public void Registrar(Diretor diretor)
        {
          _totalBonificacao += diretor.GetBonificacao();
        }

        public double GetTotalBonificacao()
        {
            return _totalBonificacao; 
        }
    }
}

Erros:

Gravidade Código Descrição Projeto Arquivo Linha Estado de Supressão Erro CS7036 Não há nenhum argumento fornecido que corresponde ao parâmetro formal necessário "tipo" de "Funcionario.Funcionario(int)" ByteBank C:\Aprendendo CSharp\Curso 3\ByteBank\ByteBank\Funcionarios\Diretor.cs 10 Ativo

Gravidade Código Descrição Projeto Arquivo Linha Estado de Supressão Aviso CS0108 "Diretor.GetBonificacao()" oculta o membro herdado "Funcionario.GetBonificacao()". Use a nova palavra-chave se foi pretendido ocultar. ByteBank C:\Aprendendo CSharp\Curso 3\ByteBank\ByteBank\Funcionarios\Diretor.cs 12 Ativo

2 respostas
solução!

Olá Bernardo!

O problema foi que você manteve o código referente ao campo _tipo. Outra coisa é que a classe Diretor não tem referencia nenhuma para usar GerenciadorBonificacao, então, a linha Console.WriteLine(roberta.GerenciadorBonificacao()); está gerando o segundo erro. Acho que sua intenção era ter colocado Console.WriteLine(roberta.GetBonificacao()); , certo?

Sugiro que reveja a aula anterior, para conseguir compreender as mudanças no código e o uso da herança, assim, poderá acompanhar os lugares que houveram as modificações.

Qualquer dúvida estaremos a disposição.

Bons estudos!

Obrigado! Deu certo!