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

Aula 3 Template Method

Olá Pessoal

Por exemplo o método IKCV conforme texto no início da aula ficou assim:

if(orcamento.Valor > 500 && TemItemMaiorQue100ReaisNo(orcamento)) 
        {
            return orcamento.Valor * 0.10;
        }
        else 
        {
            return orcamento.Valor * 0.06;
        }

Já no vídeo, o professor não coloca o "else" mas apenas o "return orcamento * 0.06. Não há necessidade de usar o "else" , ou seja, se tenho somente duas situações posso omitir o "else" ?

Outra coisa: após criar o TemplateDeImpostoCondicional e implementá-lo nos impostos IKCV e ICPP , ao criar os métodos DeveUsarMaximaTaxacao , MaximaTaxacao e MinimaTaxacao, não foi colocado "override" nos métodos.

Só pra confirmar também: nestes é obrigatório colocar correto? Mesmo por que se eu não colocar dá erro de execução.

Como não tenho exeperiência em C# Só queria confirmar essas 2 dúvidas por que esse último não vi no vídeo mas no texto está OK.

Obrigado.

3 respostas
solução!

Oi João, tudo bom?

Já no vídeo, o professor não coloca o "else" mas apenas o "return orcamento * 0.06. Não há necessidade de usar o "else" , ou seja, se tenho somente duas situações posso omitir o "else" ?

No caso onde as duas possibilidades são saidas do método, sim. Caso houvesse algo a ser executado depois da condição, faria diferença =)

Só pra confirmar também: nestes é obrigatório colocar correto? Mesmo por que se eu não colocar dá erro de execução.

Na verdade o override é opcional, se você não especificar ele sobrescreve da mesma forma mas deixar um warning.

using System;

public class Program
{
    public static void Main()
    {

        Concreto concreto = new Concreto();
        // exibe sobrescrito, mesmo sem o override
        Console.WriteLine(concreto.meuMetodo());
    }
}

public class Virtual {
    public virtual String meuMetodo(){
        return "método virtual";
    }
}
public class Concreto : Virtual {
    // Aqui não adicionamos o override, embora devessemos.
    public String meuMetodo(){
        return "método concreto";
    }
}

Executando o código acima temos como retorno "método concreto" o que indica que o retorno do método foi alterado mesmo. O ideal é sempre explicitar quando uma sobrescrita ocorre para evitar confusões na leitura do código, mas funciona sim.

Se você quiser testar o código acima, recomendo bastante o https://dotnetfiddle.net/ =)

Abraço!

Maravilha camarada. Obrigado pelas explicações. E testei o código no link acima.. Valeu.

Magina, qualque coisa é só falar =)

Abraço.