static void Main(string[] args) { Imposto iss = new ISS(); Imposto icms = new ICMS(); Imposto iccc = new ICCC(); Imposto ikcv = new IKCV(); Imposto icpp = new ICPP(); Imposto ihit = new IHIT(); Imposto iAlto = new ImpostoAlto(); Imposto issComposto = new ISS(new ICMS(new ICCC())); Conta conta = new Conta(600, "Fulano de Tal"); conta.StatusAtual.Depositar(conta, 150); Console.WriteLine("Saldo = " + conta.Saldo); conta.StatusAtual.Sacar(conta, 1000); Console.WriteLine("Saldo = " + conta.Saldo); conta.StatusAtual.Sacar(conta, 150); Console.WriteLine("Saldo = " + conta.Saldo); conta.StatusAtual.Depositar(conta, 500); Console.WriteLine("Saldo = " + conta.Saldo); conta.StatusAtual.Sacar(conta, 150); Console.WriteLine("Saldo = " + conta.Saldo); Investimento investimento = new Arrojado(); RealizadorInvestimentos realizarImposto = new RealizadorInvestimentos(); realizarImposto.RealizarInvestimento(conta, investimento); Orcamento orcamento = new Orcamento(1000); orcamento.Itens.Add(new Item("ITEM 01", 100)); orcamento.Itens.Add(new Item("ITEM", 230)); orcamento.Itens.Add(new Item("ITEM12", 340)); orcamento.Itens.Add(new Item("LAPIS", 121)); orcamento.Itens.Add(new Item("CANETA", 1212)); CalculadorImpostos calculador = new CalculadorImpostos(); calculador.RealizarCalculo(orcamento, iss); calculador.RealizarCalculo(orcamento, icms); calculador.RealizarCalculo(orcamento, iccc); calculador.RealizarCalculo(orcamento, ikcv); calculador.RealizarCalculo(orcamento, icpp); calculador.RealizarCalculo(orcamento, ihit); calculador.RealizarCalculo(orcamento, issComposto); calculador.RealizarCalculo(orcamento, iAlto); AplicarDesconto aplicarDesconto = new AplicarDesconto(); aplicarDesconto.CalcularDesconto(orcamento); Conta conta2 = new Conta(1200, "Outro Fulano"); IList <Conta> contas = new List <Conta>(); contas.Add(conta); contas.Add(conta2); RelatorioCompleto relatorioCompleto = new RelatorioCompleto(); relatorioCompleto.Imprimir(contas); RelatorioSimplificado relatorioSimplificado = new RelatorioSimplificado(); relatorioSimplificado.Imprimir(contas); Orcamento orc1 = new Orcamento(500); orc1.EstadoAtual.AplicarDescontoExtra(orc1); Console.WriteLine("ORC = " + orc1.Valor); orc1.EstadoAtual.Aprovar(orc1); orc1.EstadoAtual.AplicarDescontoExtra(orc1); Console.WriteLine("ORC = " + orc1.Valor); orc1.EstadoAtual.Finalizar(orc1); orc1.EstadoAtual.AplicarDescontoExtra(orc1); orc1.EstadoAtual.Reprovar(orc1); Console.ReadKey(); }
static void Main(string[] args) { Console.WriteLine("----- Curso Design Patterns -----"); IImposto iss = new ISS(); IImposto icms = new ICMS(); Orcamento orcamento = new Orcamento(500); CalculadorImposto calculador = new CalculadorImposto(); var resultado = calculador.Calcular(orcamento, iss); Console.WriteLine($"Orçamento ISS: {orcamento.Valor} , Imposto: {resultado}"); IImposto ickv = new IKCV(); resultado = calculador.Calcular(orcamento, ickv); Console.WriteLine($"Orçamento IKCV: {orcamento.Valor} , Imposto: {resultado}"); ImpostoComposto insdc = new INSDC(new INSPT()); Console.WriteLine($"Orçamento INSDC: {orcamento.Valor} , Imposto: {insdc.Calcular(orcamento)}"); Orcamento marketing = new Orcamento(1200); marketing.AplicaDescontoExtra(); Console.WriteLine($"Orçamento Marketing: {marketing.Valor} , Estado: {marketing.EstadoAtual}"); marketing.Aprova(); marketing.AplicaDescontoExtra(); Console.WriteLine($"Orçamento Marketing: {marketing.Valor} , Estado: {marketing.EstadoAtual}"); marketing.Finaliza(); Console.WriteLine($"Orçamento Marketing: {marketing.Valor} , Estado: {marketing.EstadoAtual}"); // marketing.AplicaDescontoExtra(); /// BUILDER PATTERN / FLUENT INTERFACE GeradorNotaFiscal geradorNF = new GeradorNotaFiscal(); geradorNF .ParaEmpresa("RMac Hambone Sys compliance") .ComCnpj("923.321.001/0001-12") .comItem(new NotaFiscalItem("item 1", 10.2, 0.1)) .comItem(new NotaFiscalItem("item 2", 13.7, 0.1)) .comItem(new NotaFiscalItem("item 3", 20.2, 0.1)) .comItem(new NotaFiscalItem("item 4", 110.2, 0.1)) .NaDataAtual() .ComObservacoes("Entregar no bar da esquina"); /// OBSERVER PATTERN geradorNF.AdicionarAcao(new NotaDao()); geradorNF.AdicionarAcao(new NotaEnvio()); geradorNF.AdicionarAcao(new NotaSMS()); NotaFiscal NF001 = geradorNF.Gerar(); Console.WriteLine($"Notafiscal: Valor {NF001.ValorBruto} - Impostos: {NF001.Impostos}"); Console.ReadKey(); }