예제 #1
0
        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();
        }
예제 #2
0
        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();
        }