Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Métodos abstratos precisam ser sobrescritos (override)?

Estava efetuando o código assim como o do vídeo, porém o Visual Studio fica informando que para sobrescrever os métodos abstratos preciso colocar um override, porém isso não é feito em vídeo e pelo que eu estudei não é necessário pois classes/métodos abstratos serão obrigatoriamente sobrescritos. Fiz algo errado ou realmente é necessário sobrescrever?

IKCV:

namespace DesignPatterns
{
    public class IKCV : TemplateDeImpostoCondicional
    {
        public bool DeveUsarMaximaTaxacao(Orcamento orcamento)
        {
            return orcamento.Valor > 500 && temItemMaiorQueCemReaisNo(orcamento);
        }

        public double MaximaTaxacao(Orcamento orcamento)
        {
            return orcamento.Valor * 0.10;
        }

        public double MinimaTaxacao(Orcamento orcamento)
        {
            return orcamento.Valor * 0.06;
        }

        private bool temItemMaiorQueCemReaisNo(Orcamento orcamento)
        {
            foreach (Item item in orcamento.Itens)
            {
                if (item.Valor > 100) return true;
            }

            return false;
        }
    }
}

TemplateDeImpostoCondicional:

namespace DesignPatterns
{
    public abstract class TemplateDeImpostoCondicional : Imposto
    {
        public double Calcula(Orcamento orcamento)
        {
            if (DeveUsarMaximaTaxacao(orcamento))
            {
                return MaximaTaxacao(orcamento);
            }

            return MinimaTaxacao(orcamento);
        }

        public abstract bool DeveUsarMaximaTaxacao(Orcamento orcamento);
        public abstract double MaximaTaxacao(Orcamento orcamento);
        public abstract double MinimaTaxacao(Orcamento orcamento);
    }
}

Obs.: Colocando override tudo procede como esperado, porém a minha dúvida permanece.

Grato desde já! =D

1 resposta
solução

Oi Luiz tudo bem?

Precisa colocar override sim. No curso C# Parte (1 eu acho) o professor fala disso mas quando fiz o Design Patterns não me lembro se ele falava ou não.

Espero ter ajudado!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software