Exemple #1
0
        static void Main(String[] args)
        {
            NotaFiscalBuilder criador = new NotaFiscalBuilder();

            criador
            .ParaEmpresa("Pizzaria Rio Claro")
            .ComCnpj("123")
            .ComItem(new ItemDaNota("item 1", 100.0))
            .ComItem(new ItemDaNota("item 2", 200.0))
            .NaDataAtual()
            .ComObservacoes("Uma Obs qualquer");

            criador.AdicionaAcao(new EnviadorDeEmail());
            criador.AdicionaAcao(new EnviadorDeSms());
            criador.AdicionaAcao(new NotaFiscalDAO());

            NotaFiscal nf = criador.Constroi();

            Console.WriteLine(nf.ValorBruto);
            Console.WriteLine(nf.Impostos);

            Console.ReadKey();
        }
Exemple #2
0
 public void Executa(NotaFiscal nf)
 {
     Console.WriteLine("email");
 }
 public void Executa(NotaFiscal notaFiscal)
 {
     Console.WriteLine("Nota fiscal enviada por e-mail");
 }
 private void ExecutaListaAcao(NotaFiscal notaFiscal)
 {
     this.listaAcao.ForEach(acao => {
         acao.Executa(notaFiscal);
     });
 }
Exemple #5
0
 public void Executa(NotaFiscal notaFiscal)
 {
     Console.WriteLine(notaFiscal.ValorBruto * Fator);
 }
Exemple #6
0
 public void Executar(NotaFiscal notaFiscal)
 {
     throw new NotImplementedException();
 }
Exemple #7
0
 public void Executa(NotaFiscal notaFiscal)
 {
     Console.WriteLine("Nota fiscal salva no banco com sucesso");
 }
 public void Executa(NotaFiscal notaFiscal)
 {
     Console.WriteLine("Simulação do envio por e-mail");
 }
Exemple #9
0
        static void Main(string[] args)
        {
            //IImposto ikcp = new IKCP();
            //IImposto ippp = new IPPP();
            //IImposto ihit = new IHIT();

            //Orcamento orcamento = new Orcamento(1000.0);

            //orcamento.AdicionaItem(new Item("CANETA", 1000));
            //orcamento.AdicionaItem(new Item("CANETA",1000));

            //orcamento.AdicionaItem(new Item("LAPIS", 200));

            //Não precisa utilizar a classe CalculadorDeImposto pois no metodo RealizaCalcula realiza a
            //seguinte operação:

            // Console.WriteLine(imposto.Calcula(orcamento));

            //Que pode ser alterado nesse código para->

            //Console.WriteLine(ikcp.Calcula(orcamento));
            //Console.WriteLine(ippp.Calcula(orcamento));
            //Console.WriteLine(ihit.Calcula(orcamento));


            //Calculador de Imposto é responsável para impressão do valor do imposto

            //CalculadorDeImpostos calculador = new CalculadorDeImpostos();

            //calculador.RealizaCalculo(orcamento, ikcp);
            //calculador.RealizaCalculo(orcamento, ippp);
            //calculador.RealizaCalculo(orcamento, ihit);

            //Console.ReadKey();

            //CalculadorDeDescontos calculador_desconto = new CalculadorDeDescontos();

            //Orcamento orcamento = new Orcamento(100);
            //orcamento.AdicionaItem(new Item("CANETA", 500));


            //double desconto = calculador_desconto.Calcula(orcamento);
            //Console.WriteLine(desconto);

            //Console.ReadKey();


            // Teste do design pattern - chain of responsability para formatação da exibição dos
            // dados da conta

            //Conta conta = new Conta("Jaqueline", 2000);
            //Formatador formatador = new Formatador();



            //formatador.Formata(new Requisicao(Formato.XML), conta);
            //formatador.Formata(new Requisicao(Formato.CSV), conta);

            //formatador.Formata(new Requisicao(Formato.PORCENTO), conta);

            //Console.ReadKey();

            // Exemplo utilizando o dominio de uma conta do Banco
            // Neste caso os impostos possuem uma estrutura comum: Taxação minima, Taxação máxima e uma condição de cálculo de taxação

            //ContaBanco conta_01 = new ContaBanco("Henrique Lustosa", "010203-00", "030201-00", 500);
            //ContaBanco conta_02 = new ContaBanco("Sabrina", "010204-00", "030201-01", 500);
            //ContaBanco conta_03 = new ContaBanco("Amariles", "010205-00", "030201-02", 500);
            //ContaBanco conta_04 = new ContaBanco("Joice Maria", "010206-00", "030201-03", 500);


            //IRelatorio relatorioSimples = new RelatorioSimples();
            //IRelatorio relatorioComplexo = new RelatorioComplexo();

            //List<ContaBanco> contas = new List<ContaBanco>();
            //contas.Add(conta_01);
            //contas.Add(conta_02);
            //contas.Add(conta_03);
            //contas.Add(conta_04);

            //relatorioSimples.Imprime(contas);
            //Console.ReadKey();
            //relatorioComplexo.Imprime(contas);
            //Console.ReadKey();

            // Problema: No dominio do imposto o calculo pode ser uma composicao desses impostos
            // Por exemplo: ICMS e o ISS incidem no calculo ao mesmo tempo, ou ainda o imposto
            // ICPP pode compor o calculo.

            //Imposto iss = new ISScomICMS(); ?????!!!!!!  - muitas combinacoes
            //           ou
            //Imposto iss = new ISS(new ICMS( new ICPP));  - solucao mais elegante

            //Orcamento orcamento = new Orcamento(500);

            //orcamento.AdicionaItem(new Item("CANETA", 1000));
            //orcamento.AdicionaItem(new Item("CANETA",1000));
            //orcamento.AdicionaItem(new Item("LAPIS", 200));
            //orcamento.AdicionaItem(new Item("CANETA", 1000));
            //orcamento.AdicionaItem(new Item("CANETA", 1000));
            //orcamento.AdicionaItem(new Item("LAPIS", 200));

            //Imposto impostoComplexo = new ISS(new ICMS(new ImpostoMuitoAlto()));



            //double valor = impostoComplexo.Calcula(orcamento);

            //Console.WriteLine(valor);

            //Console.ReadKey();


            //ContaBanco conta_01 = new ContaBanco("Henrique Lustosa", "019203-00", "030201-00", 12, new DateTime(2021, 06, 14));
            //ContaBanco conta_02 = new ContaBanco("Sabrina", "010204-00", "039201-01", 50000000, new DateTime(2020, 07, 20));
            //ContaBanco conta_03 = new ContaBanco("Amariles", "010205-00", "033201-02", 100, new DateTime(2021, 01, 03));
            //ContaBanco conta_04 = new ContaBanco("Joice Maria", "010206-00", "036201-03", 50, new DateTime(2021, 02, 02));
            //ContaBanco conta_05 = new ContaBanco("Luciano", "010203-01", "037201-00", 2000, new DateTime(2021, 04, 14));
            //ContaBanco conta_06 = new ContaBanco("Lucas", "010204-02", "038201-01", 50000, new DateTime(2020, 03, 20));
            //ContaBanco conta_07 = new ContaBanco("Simone", "010205-03", "038201-02", 100, new DateTime(2021, 05, 03));
            //ContaBanco conta_08 = new ContaBanco("Sineide", "010206-04", "038201-03", 55, new DateTime(2021, 05, 02));


            //List<ContaBanco> contas = new List<ContaBanco>();

            //contas.Add(conta_01);
            //contas.Add(conta_02);
            //contas.Add(conta_03);
            //contas.Add(conta_04);
            //contas.Add(conta_05);
            //contas.Add(conta_06);
            //contas.Add(conta_07);
            //contas.Add(conta_08);

            //Filtro filtro =  new DataAberturaMes( new SaldoMaior500(new SaldoMenor100()));

            //IList<ContaBanco> contasFiltradas = filtro.Filtra(contas);

            //foreach(ContaBanco c in contasFiltradas)
            //{
            //    string v = c.DataAbertura.ToString();
            //    Console.WriteLine(c.Nome + " - " + c.Numero + " - " + c.Agencia + " - " + c.Saldo + " - " + v );
            //}

            //Console.ReadKey();

            // Orcamento reforma = new Orcamento(500);
            // Console.WriteLine(reforma.Valor);

            // reforma.AplicaDescontoExtra();
            // Console.WriteLine(reforma.Valor);

            // reforma.Aprova();
            // reforma.AplicaDescontoExtra();
            // Console.WriteLine(reforma.Valor);

            // reforma.Finaliza();
            // Console.WriteLine(reforma.Valor);


            //Console.ReadKey();


            // Implementação do Design Pattern State para um conta bancária
            // Onde os estados da classe ContaBanco são os seguintes:
            // Positivo e Negativo
            // e os métodos implementados pelas classses concretas são  Saca() e Deposita()

            //ContaBanco conta_01 = new ContaBanco("Henrique Lustosa", "019203-00", "030201-00", 12, new DateTime(2021, 06, 14));
            //ContaBanco conta_02 = new ContaBanco("Sabrina", "010204-00", "039201-01", 50000000, new DateTime(2020, 07, 20));

            //conta_01.Saca(500);
            //conta_01.Saca(500);
            //Console.WriteLine(conta_01.Saldo);
            //conta_01.Deposita(1000);

            //Console.WriteLine(conta_01.Saldo);

            // Implementação do Design Pattern Builder:
            // Sem a utilização do Design Builder para criar uma nova nota fiscal
            // a classe teste teria que seguir muitos passos que dificultariam
            // a implementação. Além de um construtor recebendo muitos parâmetros.


            //IList<ItemDaNota> itens = new List<ItemDaNota>();

            //double valorTotal = 0;

            //foreach(ItemDaNota item in itens)
            //{
            //    valorTotal += item.Valor;

            //}

            //double impostos = valorTotal * 0.05;


            //NotaFiscal nf = new NotaFiscal("RazaoSocial", "cnpj", DateTime.Now, valorTotal, impostos, itens, "obs qualquer");

            //Console.ReadKey();


            // Utilizando o construtor a classe teste fica mais intelegível para a criaçõa
            // da nota fiscal.


            // Implementando o Design Pattern Observer para controlar as ações que são realizadas no método Constroi da construção de uma nota fiscal

            NotaFiscalBuilder builder = new NotaFiscalBuilder();

            builder.AdicionaAcao(new Impressora());
            builder.AdicionaAcao(new NotaFiscalDAO());
            builder.AdicionaAcao(new EnviadorDeSms());
            builder.AdicionaAcao(new EnviadorDeEmail());
            builder.AdicionaAcao(new Multiplicador(2));


            NotaFiscal nf = builder.ParaEmpresa("Caelum")
                            .ComCnpj("123.456.789/0001-10")
                            .ComItem(new ItemDaNota("item 1", 100.0))
                            .ComItem(new ItemDaNota("item 2", 200.0))
                            .ComItem(new ItemDaNota("item 3", 300.0))
                            .ComObservacoes("entregar nf pessoalmente")
                            .NaDataAtual()
                            .Constroi();
        }
Exemple #10
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();
        }
Exemple #11
0
        static void Main(string[] args)
        {
            //------------------------------------------------------------------------------
            //CALCULADOR DE IMPOSTO

            //Imposto iss = new ISS();
            //Imposto icms = new ICMS();

            //Orcamento orcamento = new Orcamento(500.0);

            //CalculadorDeImpostos calculador = new CalculadorDeImpostos();

            //calculador.RealizaCalculo(orcamento, iss);

            //-----------------DECORATOR-------------------------------------------------------------
            //CALCULADOR DE DESCONTO

            //CalculadorDeDescontos calculador = new CalculadorDeDescontos();
            //Orcamento orcamento = new Orcamento(500);

            //orcamento.AdicionaItem(new Item("CANETA", 500));
            //orcamento.AdicionaItem(new Item("LAPIS", 500));

            //double desconto = calculador.Calcula(orcamento);
            //Console.WriteLine(desconto);

            Imposto iss = new ISS();

            Orcamento orcamento = new Orcamento(100);
            double    valor     = iss.Calcula(orcamento);


            iss.Calcula(orcamento);


            Console.WriteLine(valor);

            Console.ReadKey();

            //----------------STATES--------------------------------------------------------------

            //Orcamento reforma = new Orcamento(500);

            //Console.WriteLine(reforma.Valor);

            //reforma.AplicaDesscontoExtra();

            //Console.WriteLine(reforma.Valor);

            //reforma.Aprova();

            //reforma.AplicaDesscontoExtra();

            //Console.WriteLine(reforma.Valor);

            //reforma.Finaliza();

            //reforma.AplicaDesscontoExtra();

            //Console.WriteLine(reforma.Valor);
            //Console.ReadKey();

            //-----------BUILDER---------------------------------------------------------------------

            IList <ItemDaNota> itensDaNota = new List <ItemDaNota>();

            itensDaNota.Add(new ItemDaNota("Biscoito", 2.50));
            itensDaNota.Add(new ItemDaNota("Desodorante", 8.00));
            itensDaNota.Add(new ItemDaNota("Feijão", 10.0));

            double valorTotal = 0;

            foreach (var item in itensDaNota)
            {
                valorTotal += item.Valor;
            }

            double impostos = valorTotal * 0.05;

            NotaFiscal nf =
                new NotaFiscal
                (
                    "razao",
                    "cnpj",
                    DateTime.Now,
                    valorTotal,
                    impostos,
                    itensDaNota,
                    "obs qualquer"

                );

            //NotaFiscalBuilder criador = new NotaFiscalBuilder();

            NotaFiscal nf2 = new NotaFiscalBuilder()
                             .ParaEmpresa("Caelum Ensino e Inovacao")
                             .ComCnpj("Caelum Ensino e Inovacao")
                             .NaDataAtual()
                             .ComObservacoes("Uma obs qualquer")
                             .ComItem(new ItemDaNota("Biscoito", 100.0))
                             .ComItem(new ItemDaNota("Desodorante", 200.0))
                             .Constroi();


            //NotaFiscal nf = criador.Constroi();

            Console.WriteLine(nf.ValorBruto);
            Console.WriteLine(nf.Impostos);
            Console.ReadKey();

            //------------------------------------------------------------------------------//
            var conta = new Conta.Conta(500);

            conta.Saca(600);

            Console.WriteLine(conta);

            conta.Saca(100);
        }
 public void Executa(NotaFiscal notaFiscal)
 {
     Console.WriteLine("Simulando a inserção da Nota Fiscal no Banco de Dados");
 }
Exemple #13
0
 public void Executa(NotaFiscal notaFiscal)
 {
     Console.WriteLine("Valor bruto mutiplicado pelo fator: " + notaFiscal.ValorBruto * _fator);
 }
 public void Executa(NotaFiscal notaFiscal)
 {
     Console.WriteLine("imprimindo notaFiscal");
 }