コード例 #1
0
        static void Main(string[] args)
        {
            var impressora = new ImpressoraEsquerda();

            Console.WriteLine("Resolvendo a expressão (2 + 3) - 2  = 3");
            var soma       = new Soma(new Numero(2), new Numero(3));
            var substracao = new Subtracao(soma, new Numero(2));

            substracao.Aceita(impressora);
            Console.WriteLine(" = {0}", substracao.Avalia());

            Console.WriteLine("Resolvendo a expresao ((4 * 10) / (1 + 1)) = 20");
            var multiplicacao = new Multiplicacao(new Numero(4), new Numero(10));

            soma = new Soma(new Numero(1), new Numero(1));
            var divisao = new Divisao(multiplicacao, soma);

            divisao.Aceita(impressora);
            Console.WriteLine(" = {0}", divisao.Avalia());

            Console.WriteLine("Resolvendo raiz quadrada de 8 + 10 = 12.8284");
            var raizquadrada = new RaizQuadrada(new Numero(8));

            soma = new Soma(raizquadrada, new Numero(10));
            soma.Aceita(impressora);
            Console.WriteLine(" = {0}", soma.Avalia());
        }
コード例 #2
0
        static void Main(string[] args)
        {
            /* Visitor
             * Usado para visitar e realizar o processamento em cada parte(nó) de uma arvore de Expressoes
             *
             * EXEMPLO COM UMA EXPRESSAO MATEMATICA:
             *
             *  ( 2 + 30 ) + ( 35 - 15)
             +
             +             -
             +    2 e 30       35 e 15
             + (Resultado: 32) (Resultado: 20)
             +
             */


            IExpressao esquerda;
            IExpressao direita;
            IExpressao soma;

            esquerda = new Soma(new Numero(2), new Numero(30));       // ( 2 + 30 ) = 32
            direita  = new Subtracao(new Numero(35), new Numero(15)); // ( 35 - 15 ) = 20

            soma = new Soma(esquerda, direita);                       // ( 32 ) + ( 20 )
            Console.WriteLine(soma.Avaliar());


            ImpresoraVisitor impressora = new ImpresoraVisitor();

            soma.Aceitar(impressora); // ( ( 2 + 30 ) + ( 35 - 15 ) )

            Console.ReadKey();
        }
コード例 #3
0
 public void VisitaSubtracao(Subtracao subtracao)
 {
     Console.Write("( ");
     subtracao.Esquerda.Aceitar(this);
     Console.Write(" - ");
     subtracao.Direita.Aceitar(this);
     Console.Write(" )");
 }
コード例 #4
0
 public void ImprimeSubtracao(Subtracao subtracao)
 {
     Console.Write("(");
     subtracao.esquerda.Aceita(this);
     Console.Write("-");
     subtracao.direita.Aceita(this);
     Console.Write(")");
 }
コード例 #5
0
 public void ImprimiSubtracao(Subtracao subtracao)
 {
     Console.Write("(");
     subtracao.Esquerda.Imprimir(this);
     Console.Write("-");
     subtracao.Direita.Imprimir(this);
     Console.Write(")");
 }
コード例 #6
0
 public void ImprimeSubstracao(Subtracao subtracao)
 {
     Console.Write("( - ");
     subtracao.Esquerda.Aceita(this);
     Console.Write(" ");
     subtracao.Direita.Aceita(this);
     Console.Write(")");
 }
コード例 #7
0
ファイル: Program.cs プロジェクト: devsuperman/DesignPatterns
        static void Main(string[] args)
        {
            IExpressao esquerda = new Subtracao(new Numero(10), new Numero(5));
            IExpressao direita  = new Soma(new Numero(2), new Numero(10));

            IExpressao conta = new Soma(esquerda, direita);

            var impressora = new Impressora();

            conta.Aceita(impressora);
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: guiigos/design-patterns
        static void Main(string[] args)
        {
            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);

            Impressora impressora = new Impressora();

            soma.Aceita(impressora);

            Console.Write(" = " + soma.Avalia());
            Console.ReadKey();
        }
コード例 #9
0
        public static void Main(string[] args)
        {
            // (1+2) + (20-10)
            var esquerda = new Soma(new Numero(1), new Numero(2));
            var direita  = new Subtracao(new Numero(20), new Numero(10));
            var soma     = new Soma(direita, esquerda);

            var impressora = new ImpressoraVisitor();

            soma.Imprimir(impressora); // visitor age aqui

            Console.WriteLine(" = " + soma.Avaliar());
            Console.ReadKey();
        }
コード例 #10
0
        static void Main(string[] args)
        {
            Console.WriteLine("Visitor");
            // (1+10) + (20-10)

            IExpressao esquerda  = new Soma(new Numero(1), new Numero(10));
            IExpressao direita   = new Subtracao(new Numero(20), new Numero(10));
            IExpressao soma      = new Soma(esquerda, direita);
            int        resultado = soma.Avalia();

            Console.WriteLine(resultado);

            ImpressoraVisitor impressora = new ImpressoraVisitor();

            soma.Aceita(impressora);
        }
コード例 #11
0
        static void Main(string[] args)
        {
            IExpressao expressao1 = new Soma(new Numero(10), new Numero(20));
            IExpressao expressao2 = new Subtracao(new Numero(20), new Numero(10));
            IExpressao expressao3 = new Multiplicacao(expressao1, expressao2);
            IExpressao expressao4 = new Divisao(expressao3, new Numero(2));
            IExpressao expressao5 = new RaizQuadrada(expressao4);

            Console.WriteLine(expressao5.Avalia());
            IVisitor impressora1 = new Visitor();

            expressao5.Aceita(impressora1);
            Console.WriteLine();
            IVisitor impressora2 = new Visitor2();

            expressao5.Aceita(impressora2);
            Console.WriteLine();
        }
コード例 #12
0
 public void ImprimeSubtracao(Subtracao subtracao)
 {
     ImprimeExpressao(subtracao, "-");
 }