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

Problema com o código

Tive um problema com o código, durante a aula o instrutos utiliza um método (override) para sobrescrever o método GetBonificacao() que tem na classe Pai funcionário para a classe filha Diretor. Ele usa esse método para corrigir um problema, entretetando, quando uso override dá um erro no programa: Sem override: Funcionario.cs:

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

namespace bytebank_ADM.Funcionarios
{
    public class Funcionario
    {
        public string Nome { get; set; }
        public string CPF { get; set; }
        public double Salario { get; set; }
        public double  GetBonificacao()
        {
            return this.Salario *0.10;
        }
    }
}

Diretor.cs:

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

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

GerenciadorBonificacao:

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

namespace bytebank_ADM.Utilitario
{
    internal class GerenciadorBonificacao
    {
        public double TotalBonificacao { get; private set; }

        public void Registrar(Funcionario funcionario)
        {
            this.TotalBonificacao += funcionario.GetBonificacao();
        }

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

Programa.cs:

`using bytebank_ADM.Funcionarios; using bytebank_ADM.Utilitario;

Funcionario Pedro = new Funcionario(); Pedro.Nome = "Pedro Inácio"; Pedro.CPF = "12345678900"; Pedro.Salario = 2050; Console.WriteLine(Pedro.Nome); Console.WriteLine(Pedro.GetBonificacao());

var Roberta = new Diretor(); Roberta.Nome = "Roberta Aparecida"; Roberta.CPF = "98765432100"; Roberta.Salario = 5200; Console.WriteLine(Roberta.Nome); Console.WriteLine(Roberta.GetBonificacao());

GerenciadorBonificacao gerenciador = new GerenciadorBonificacao();

gerenciador.Registrar(Pedro); gerenciador.Registrar(Roberta);

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

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeSe coloco o override, aparece esse erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá, Anna. Tudo bom?

Para que você possa sobrescrever um método, é preciso que ele seja virtual, abstrato ou já sobrescrito. No exemplo do código que você mandou, creio que o que falta é tornar o Get Bonificação da classe Funcionário virtual.

Para isso, basta fazer o seguinte código na classe Funcionario:

public virtual double GetBonificacao()
{
    // código...
}

Era exatamente isso, obrigada!