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); Console.WriteLine(soma.Avalia()); }
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); }
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); }
private static void TestaVisitorExercicioImpressoraPreFixa() { 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 ImpressoraPreFixaVisitor(); soma.Aceita(impressora); //Imprime expressão. Console.WriteLine($" = {soma.Avalia()}."); //Imprime resultado. Console.ReadKey(); }
static void Main(string[] args) { IExpressao esquerda = new Soma(new Numero(1), new Numero(10)); IExpressao direita = new Subtrai(new Numero(17), new Numero(4)); IExpressao resultSoma = new Soma(esquerda, direita); IExpressao resultMultiplicacao = new Multiplicacao(esquerda, direita); IExpressao resultDivisao = new Divisao(esquerda, direita); Console.WriteLine(resultSoma.Avalia()); Console.WriteLine(resultMultiplicacao.Avalia()); // Avaliador de Expressões da própria linguagem C# // Expression soma = Expression.Add(Expression.Constant(10), Expression.Constant(29)); // Func<int> funcao = Expression.Lambda<Func<int>>(soma).Compile(); // Console.WriteLine(funcao.Invoke()); }
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(); }
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(); }