A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner

Apresentações semelhantes


Apresentação em tema: "Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner"— Transcrição da apresentação:

1 Equipe: Fernando Calheiros (fhcl@cin.ufpe.br)fhcl@cin.ufpe.br Flavia Leite (fls@cin.ufpe.br)fls@cin.ufpe.br Eduardo Wagner (ewma@cin.ufpe.br)ewma@cin.ufpe.br Renata Bezerra (rbsa@cin.ufpe.br)rbsa@cin.ufpe.br Removendo PartialInstantiatorVisitor

2 Interpreter O padrão Interpreter é usado quando se quer construir um interpretador para uma linguagem É recomendado para implementar linguagens simples Vantagens Representar cada regra da gramática em uma classe torna a linguagem mais fácil de implementar Como a gramática é representada por classes, é possível mudar ou estender facilmente a linguagem Ao adicionar novos métodos na estrutura de classes, pode-se ter novos comportamentos além da interpretação, como uma validação mais sofisticada do programa

3 Interpreter Uso e Desvantagens É apropriado quando você tem uma gramática simples e simplicidade é mais importante do que eficiência Usado para linguagens de script e de programação Esse padrão pode se tornar difícil quando o número de regras da gramática é grande Nesses casos um gerador de parser/compilador pode ser mais apropriado

4 Visitor O padrão Visitor é usado quando se quer adicionar funcionalidades a uma composição de objetos e encapsulamento não é importante Vantagens Permite adicionar operações a uma estrutura composta sem mudar a estrutura em si Adicionar novas operações é relativamente fácil O código das operações realizadas pelo Visitor é centralizado

5 Visitor Desvantagens O encapsulamento das classes compostas é quebrado quando o Visitor é usado Como uma função de travessia está envolvida, mudanças à estrutura se tornam mais difíceis

6 Por que usar Visitor? Visitor permite a separação do algoritmo da estrutura sobre a qual ele opera Código fica centralizado

7 PartialInstatiatorVisitor Não é propriamente um Visitor No padrão visitor cada classe sabe se visitar, recebendo o visitor em um método visit PartialInstatiatorVisitor utiliza reflexão para determinar qual método visit dele mesmo deve ser chamado, deixando a estrutura original intocada

8 ValorFuncao avaliar() usa o visitor

9 Funções parciais (o problema) let fun add x = fn y. x + y in let var id = add(0), var x = 4 in id(1) Por que esse código não é avaliado corretamente sem mudar a forma como as expressões são avaliadas?

10 Avaliação parcial Atualmente métodos avaliar() não foram feitos pensando em avaliação parcial É um concern crosscuting! Retornam Valor, não Expressao PartialInstatiatorVisitor Implementa avaliação parcial através de reescritas das expressões Evita mudanças em praticamente todas as classes que herdam de Expressao


Carregar ppt "Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner"

Apresentações semelhantes


Anúncios Google