static void Main(string[] args) { Console.WriteLine("Decorator"); Orcamento orcamento = new Orcamento(); orcamento.AdicionaItem(new Item("NOTEBOOK", 1500)); orcamento.AdicionaItem(new Item("MOUSE", 100)); orcamento.AdicionaItem(new Item("TECLADO", 100)); orcamento.AdicionaItem(new Item("MONITOR", 100)); orcamento.AdicionaItem(new Item("IMPRESSORA", 100)); orcamento.AdicionaItem(new Item("BATERIA", 100)); Console.WriteLine($"Orçamento: {orcamento.Valor}"); ICMS icms = new ICMS(); Console.WriteLine($"ICMS {icms.Calcula(orcamento)}"); ISS iss = new ISS(); Console.WriteLine($"ISS {iss.Calcula(orcamento)}"); // Vai calcular o ICMS somando o valor do ISS // O ISS como não recebe outro imposto calcula apenas seu proprio valor ICMS icmsMaisISS = new ICMS(new ISS()); Console.WriteLine($"ICMS + com ISS: {icmsMaisISS.Calcula(orcamento)} <-- ICMS decorado com ISS!"); Console.ReadKey(); }
public static void Main(string[] args) { var orcamento = new Orcamento(); orcamento.AdicionarItem(new Item("Soja", 100.00)); orcamento.AdicionarItem(new Item("Milho", 50.00)); orcamento.AdicionarItem(new Item("Arroz", 50.00)); orcamento.AdicionarItem(new Item("Feijão", 100.00)); orcamento.SetValor(orcamento.Itens.Sum(item => item.Valor)); var impostoIcms = new ICMS(new ISS()); var valorTotalImpostos = impostoIcms.Calcular(orcamento); Console.WriteLine(valorTotalImpostos); Console.ReadKey(); }
static void ComDesignPattern() { Orcamento orcamento = new Orcamento(500); Console.WriteLine($"Valor do Orcamento: R$ {orcamento.Valor}"); Console.WriteLine(); Imposto icms = new ICMS(); Imposto ipi = new IPI(); Imposto iss = new ISS(); //Impostos Separados var valorIcms = icms.Calcular(orcamento); var valorIpi = ipi.Calcular(orcamento); var valorIss = iss.Calcular(orcamento); Console.WriteLine($"Valor do ICMS: R$ {valorIcms}"); Console.WriteLine($"Valor do IPI: R$ {valorIpi}"); Console.WriteLine($"Valor do ISS: R$ {valorIss}"); Console.WriteLine(); //Impostos Juntos Imposto icmsComIpi = new ICMS(new IPI()); Imposto ipiComIss = new IPI(new ISS()); Imposto icmsComIpiComIss = new ICMS(new IPI(new ISS())); var valorICMScomIpi = icmsComIpi.Calcular(orcamento); var valorIpicomIss = ipiComIss.Calcular(orcamento); var valorICMScomIpiComIss = icmsComIpiComIss.Calcular(orcamento); Console.WriteLine($"Valor do ICMS Com Ipi: R$ {valorICMScomIpi}"); Console.WriteLine($"Valor do IPI com ISS: R$ {valorIpicomIss}"); Console.WriteLine($"Valor do ICMS Com IPI e ISS: R$ {valorICMScomIpiComIss}"); Console.ReadKey(); }