Exemplo n.º 1
0
        static void Capitulo5()
        {
            IExpressao esquerda = new Soma(new Soma(new Numero(1), new Numero(100)), new Numero(10));
            IExpressao direita  = new Subtracao(new Numero(20), new Numero(10));
            IExpressao soma     = new Soma(esquerda, direita);

            Console.WriteLine(soma.Avalia());
            ImpressoraVisitor impressora = new ImpressoraVisitor();

            soma.Aceita(impressora);
        }
Exemplo n.º 2
0
        static void VisitorPattern()
        {
            IExpressao esquerda = new Soma(new Numero(1), new Numero(10));
            IExpressao direita  = new Subtracao(new Numero(20), new Numero(10));
            var        conta    = new Soma(esquerda, direita);

            System.Console.WriteLine(conta.Avalia());
            ImpressoraVisitor impressora = new ImpressoraVisitor();

            conta.Aceita(impressora);
        }
Exemplo n.º 3
0
        private static void Visitor1()
        {
            var esquerda  = new Soma(new Numero(5), new Numero(10));
            var direita   = new Subtracao(new Numero(20), new Numero(10));
            var teste     = new Multiplicacao(esquerda, direita);
            var teste2    = new Divisao(new Numero(10), new Numero(2));
            var resultado = new Multiplicacao(teste, teste2);

            var impressora = new ImpressoraVisitor();

            resultado.Aceita(impressora);
            Console.WriteLine("");
            //var impressora2 = new ImpressoraVisitorSinalEsquerda();
            //resultado.Aceita(impressora2);
            //Console.WriteLine("\n"+ resultado.Avalia());
        }
Exemplo n.º 4
0
        private static void TestaVisitorExemploCalculadora()
        {
            var esquerda = new Soma(new Soma(new Numero(1), new Numero(100)), new Numero(10)); // (1+100) + 10 = 111
            var direita  = new Subtracao(new Numero(20), new Numero(10));                      // 20 - 10 = 10
            var soma     = new Soma(esquerda, direita);                                        // 111 + 10 = 121

            var impressora = new ImpressoraVisitor();

            soma.Aceita(impressora);                                                                                                                         //Imprime expressão.
            Console.WriteLine($" = {soma.Avalia()}.");                                                                                                       //Imprime resultado.

            var multiplicacao = new Multiplicacao(new Subtracao(new RaizQuadrada(new Numero(9)), new Numero(2)), new Divisao(new Numero(6), new Numero(3))); // (((√9)-2)*(6/3))

            multiplicacao.Aceita(impressora);
            Console.WriteLine($" = {multiplicacao.Avalia()}.");
            Console.ReadKey();
        }
Exemplo n.º 5
0
        private void testaImpressoraVisitor()
        {
            RaizQuadrada raizQuadrada = new RaizQuadrada(new Numero(81));
            IVisitor visitor1 = new ImpressoraVisitor();
            visitor1.ImprimeRaizQuadrada(raizQuadrada);
            Console.WriteLine();
            Console.WriteLine(raizQuadrada.Avalia());
            Console.WriteLine();

            Multiplicacao multiplicacao = new Multiplicacao((new Subtracao(new Numero(50), new Numero(45))), new Numero(30));
            IVisitor visitor2 = new ImpressoraVisitor();
            visitor2.ImprimeMultiplicacao(multiplicacao);
            Console.WriteLine();
            Console.WriteLine(multiplicacao.Avalia());

            Console.WriteLine();

            Divisao divisao = new Divisao((new Subtracao(new Numero(50), new Numero(50))), new Numero(30));
            IVisitor visitor3 = new ImpressoraVisitor();
            visitor3.ImprimeDivisao(divisao);
            Console.WriteLine();
            Console.WriteLine(divisao.Avalia());
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            NotasMusicais notas  = new NotasMusicais();
            IList <INota> musica = new List <INota>()
            {
                notas.Pega("do"),
                notas.Pega("re"),
                notas.Pega("mi"),
                notas.Pega("fa"),
                notas.Pega("fa"),
                notas.Pega("fa"),
            };

            Piano piano = new Piano();

            piano.Toca(musica);

            //Memento
            Historico historico = new Historico();
            Contrato  c         = new Contrato(DateTime.Now, "Euler Vital", TipoContrato.Novo);

            historico.Adiciona(c.SalvaEstado());
            c.Avanca();
            historico.Adiciona(c.SalvaEstado());
            c.Avanca();
            historico.Adiciona(c.SalvaEstado());
            Console.WriteLine(c.Tipo);
            Console.WriteLine(historico.Pega(2).Contrato.Tipo);
            Console.ReadLine();

            //Interpreter
            //((1 + 100) + 10) + (20 - 10)
            //Pode ser usado toda vezque nós temos uma arvore de expressoes que queremos avaliar
            IExpressao esquerda = new Soma(new Soma(new Numero(1), new Numero(100)), new Numero(10));
            IExpressao direita  = new Subtracao(new Numero(20), new Numero(10));
            IExpressao soma     = new Soma(esquerda, direita);

            Console.WriteLine(soma.Avalia());

            //API Expression do C#
            Expression soma_01 = Expression.Add(Expression.Constant(10), Expression.Constant(100));
            Func <int> funcao  = Expression.Lambda <Func <int> >(soma_01).Compile();

            Console.WriteLine(funcao());

            //Visitor
            Console.WriteLine(soma.Avalia());
            ImpressoraVisitor impressora = new ImpressoraVisitor();

            soma.Aceita(impressora);

            //Bridge (Separa responsabilidade)
            IMensagem mensagem = new MensagemCliente("Euler");

            mensagem.Enviador = new EnviaPorEmail();
            mensagem.Envia();
            Console.ReadLine();

            //Command
            //OBS: Ideal para api´s que serão consumidas por celulares
            //Pois pode ser excutado posteriormente
            FilaDeTrabalho fila    = new FilaDeTrabalho();
            Pedido         pedido1 = new Pedido("Euler", 120.90);
            Pedido         pedido2 = new Pedido("Jean", 110.90);

            fila.Adiciona(new PagaPedido(pedido1));
            fila.Adiciona(new PagaPedido(pedido2));
            fila.Adiciona(new FinalizaPedido(pedido1));
            fila.Processa();


            //Adpter
            //Usado para aptar o codigo usado pela biblioteca nativa c#
            Cliente cliente = new Cliente();

            cliente.Nome             = "Euler";
            cliente.Endereco         = "Rua vergueiro";
            cliente.DataDeNascimento = DateTime.Now;
            string xml = new GeradorDeXml().GeraXml(cliente);

            Console.WriteLine(xml);
            Console.ReadLine();
        }
Exemplo n.º 7
0
 public void Aceita(ImpressoraVisitor impressora)
 {
     impressora.ImpremeSoma(this);
 }
Exemplo n.º 8
0
 public void Aceita(ImpressoraVisitor impressora)
 {
     impressora.ImprimeNumero(this);
 }
Exemplo n.º 9
0
 public void Aceita(ImpressoraVisitor impressora)
 {
     impressora.ImprimeSubtracao(this);
 }