double Calcular(Orcamento orcamento);
public class ICMS : Imposto
public double Calcular(Orcamento orcamento)
return orcamento.Valor * 0.05 + 50;
public class ISS : Imposto
public double Calcular(Orcamento orcamento)
return orcamento.Valor * 0.06;
public class ICCC : Imposto
public double Calcular(Orcamento orcamento)
if(orcamento.Valor < 1000)
return orcamento.Valor * 0.05;
else if(orcamento.Valor > 1000 && orcamento.Valor < 3000)
return orcamento.Valor * 0.07;
return orcamento.Valor * 0.08 + 30;
public double Valor { get; private set; }
public Orcamento(double valor)
public class CalculadorDeImposto
public double Calcula(Orcamento orcamento, Imposto imposto)
return imposto.Calcular(orcamento);
public static void Main()
var orcamento = new Orcamento(3000);
var imposto = new ICCC();
CalculadorDeImposto calculador = new CalculadorDeImposto();
Console.WriteLine(calculador.Calcula(orcamento, imposto));