예제 #1
0
 static void Main(string[] args)
 {
     var criador = new NotaFiscalBuilder()
                   .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()
                   .AdicionaAcao(new EnviadorDeEmail())
                   .AdicionaAcao(new NotaFiscalDao())
                   .AdicionaAcao(new EnviadorDeSms());
     var nf = criador.Constroi();
 }
예제 #2
0
        static void Builder()
        {
            IList <ItemDaNota> itens      = new List <ItemDaNota>();
            double             valorTotal = 0;

            foreach (var item in itens)
            {
                valorTotal += item.Valor;
            }
            double     impostos = valorTotal * 0.05;
            NotaFiscal nf       = new NotaFiscal("razao", "cnpj", DateTime.Now, valorTotal, impostos, itens, "obs");

            NotaFiscal nf2 = new NotaFiscalBuilder()
                             .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();
        }
예제 #3
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();
        }
예제 #4
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();
        }
예제 #5
0
        static void Main(string[] args)
        {
            #region Aula 1
            //var iccc = new ICCC();
            //var orcamento = new Orcamento(5000);
            //var calculadorDeImposto = new CalculadorDeImposto();

            //double valorImposto = calculadorDeImposto.Calcula(orcamento, iccc);

            //Console.WriteLine(valorImposto);

            //Console.ReadKey();
            #endregion

            #region Aula 2
            //var orcamento = new Orcamento(30);
            //orcamento.AdicionaItem(new Item("LAPIS", 10));
            //orcamento.AdicionaItem(new Item("CANETA", 20));

            //double desconto = new CalculadorDeDescontos().Calcula(orcamento);

            //Console.WriteLine(desconto);

            //Console.ReadKey();
            #endregion

            #region Aula 3

            //Imposto icpp = new ICPP();
            //Imposto ikcv = new IKCV();
            //Imposto ihit = new IHIT();

            //var orcamento = new Orcamento(600);

            //Console.WriteLine(icpp.Calcula(orcamento));
            //Console.WriteLine(ikcv.Calcula(orcamento));

            //orcamento.AdicionaItem(new Item("Carro", 45000));
            //Console.WriteLine(ikcv.Calcula(orcamento));

            //Console.WriteLine(ihit.Calcula(orcamento));
            //orcamento.AdicionaItem(new Item("Carro", 30000));
            //Console.WriteLine(ihit.Calcula(orcamento));

            //var banco = new Banco
            //{
            //    NomeBanco = "Banco do Brasil"
            //    ,
            //    Email = "*****@*****.**"
            //    ,
            //    Endereco = "Praça Cândido Dias Castejon - Centro - São José dos Campos - São Paulo"
            //    ,
            //    Data = DateTime.Now
            //    ,
            //    Telefone = "(12) 3907-4545"
            //};

            //var listConta = new List<Conta>();
            //var random = new Random();

            //for (int i = 0; i < 30; i++)
            //{
            //    var conta = new Conta
            //    {
            //        Agencia = random.Next(1000,9999)
            //        ,
            //        NumeroConta = random.Next(10000, 99999)
            //        ,
            //        Saldo = random.NextDouble() * 1000
            //        ,
            //        Titular = $"Usuario - {i}"

            //    };

            //    listConta.Add(conta);
            //}

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

            //relatorioSimples.ImprimeRelatorio(listConta, banco);

            //Console.ReadKey();
            //Console.Clear();

            //relatorioComplexo.ImprimeRelatorio(listConta, banco);

            #endregion Aula3

            #region Aula 4

            //var imposto = new ISS(new ICMS(new ICPP(new ImpostoImportacao())));
            //var orcamento = new Orcamento(1000);

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

            /////////////////////////////////////////////////////////////////////////

            //var listConta = new List<Conta>();
            //var random = new Random();

            //for (int i = 0; i < 30; i++)
            //{
            //    var conta = new Conta
            //    {
            //        Agencia = random.Next(1000, 9999)
            //        ,
            //        NumeroConta = random.Next(10000, 99999)
            //        ,
            //        Saldo = random.Next(-100000, 600000)
            //        ,
            //        Titular = $"Usuario - {i}"
            //        ,
            //        DataAbertura = new DateTime(random.Next(2015,2019), random.Next(1,12), random.Next(1,29))

            //    };

            //    listConta.Add(conta);
            //}


            //var filtros = (new FiltroAltoValor(new FiltroData()));

            //var contaFiltradas = filtros.Filtra(listConta);

            //contaFiltradas.ForEach(conta =>
            //{
            //    Console.WriteLine("Titular: " + conta.Titular + " | Saldo: " + conta.Saldo + " | Data Abertura: " + conta.DataAbertura.ToShortDateString());
            //});

            #endregion Aula 4

            #region Aula 5

            //try
            //{
            //    var orcamento = new Orcamento(1000);
            //    Console.WriteLine(orcamento.Valor);

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

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

            //    orcamento.Finaliza();
            //    orcamento.AplicaDescontoExtra();

            //}catch(Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //}

            ///////////////////////////////////////////////////
            //try
            //{
            //    var conta = new Conta(-1000);
            //    Console.WriteLine(conta.Status);
            //    conta.Deposito(5000);
            //    Console.WriteLine(conta.Status);
            //    conta.Deposito(5000);
            //}
            //catch(Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //}
            #endregion Aula 5

            #region Aula 6

            //NotaFiscal notaFiscal = new NotaFiscalBuilder()
            //    .WithCNPJ("123456789")
            //    .WithEmpresa("Alura")
            //    .WithObservacoes("Teste")
            //    .With(new ItemDaNotaBuilder()
            //                    .WithDescricao("Carro")
            //                    .WithValor(45000)
            //                    .Builder())
            //    .With(new ItemDaNotaBuilder()
            //                    .WithDescricao("Moto")
            //                    .WithValor(12000)
            //                    .Builder())
            //    .Build();

            #endregion Aula 6

            #region Aula 7


            var listaAcao = new List <IAcaoNota>
            {
                new NotaFiscalEmail()
                , new NotaFiscalDAO()
                , new NotaFiscalMutiplicador(10)
            };

            NotaFiscal notaFiscal = new NotaFiscalBuilder(listaAcao)
                                    .WithCNPJ("123456789")
                                    .WithEmpresa("Alura")
                                    .WithObservacoes("Teste")
                                    .With(new ItemDaNotaBuilder()
                                          .WithDescricao("Carro")
                                          .WithValor(45000)
                                          .Builder())
                                    .With(new ItemDaNotaBuilder()
                                          .WithDescricao("Moto")
                                          .WithValor(12000)
                                          .Builder())
                                    .Build();

            #endregion Aula 7



            Console.ReadKey();
        }
예제 #6
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);
        }