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

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

Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos.

Apresentações semelhantes


Apresentação em tema: "Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos."— Transcrição da apresentação:

1 Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos

2 Objetivos do Projeto Objetivo Geral – Implantar melhorias no editor utilizado no ensino da disciplina PLP, aproveitando o projeto desenvolvido em 2009.1, pelos alunos: Namedin Teles e Rafael Lucena – Objetivos Específicos Seleção da linha e/ou operador com erro; Sintaxe highlight; 2

3 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 3

4 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 4

5 Visitor 5

6 Diagrama de Classes 6

7 Diagrama de Classes com Visitor 7

8 Expressao.java public interface Expressao { boolean checaTipo() throws VisitorException; public void accept(LinguagemVisitor lingVisitor) throws VisitorException; public int getLineExpression(); public int getBeginColumnExpression(); public int getEndColumnExpression(); } 8

9 ExpBinaria.java //-----------------Construtor para utilizcao da selecao dos erros no editor.----------------------- public ExpBinaria(Expressao esq, Expressao dir, String operador) { this.esq = esq; this.dir = dir; this.operador = operador; } //----------------------------------------------------------------- public boolean checaTipo() throws VisitorException{ if (!getEsq().checaTipo() || !getDir().checaTipo()) { result = false; accept(visit); } else { result = this.checaTipoElementoTerminal(); } return result; 9 //----------------------------------------------------------- Variaveis e metodos utilizados na funcionalidade de selecao dos erros no editor //----------------------------------------------------------- protected int line; protected int beginColumn; protected int endColumn; public int getLineExpression() return this.line; public int getBeginColumnExpression() return this.beginColumn; public int getEndColumnExpression() return this.endColumn;

10 ExpLength.java //-----------------Construtor para utilizacao da selecao dos erros no editor.---------- public ExpLength(Expressao exp, int line, int beginColumn, int endColumn) { super(exp, "length"); this.line = line; this.beginColumn = beginColumn; this.endColumn = endColumn; }//-------------------------------------------------------------------------------------------------- protected boolean checaTipoElementoTerminal() throws VisitorException { boolean Result = (getExp().getTipo().eString()); if (!Result) accept(visit); return Result; } 10 public void accept(LinguagemVisitor lingVisitor) throws VisitorException { lingVisitor.visit(this); }

11 LinguagemVisitor.java public void visit(ExpLength expLength) throws VisitorException; public void visit(ExpMenos expMenos) throws VisitorException; public void visit(ExpNot expNot) throws VisitorException; public void visit(ExpBinaria expBinaria) throws VisitorException; 11

12 VisitorExpressoes1.java public void visit(ExpLength expLength) throws VisitorException { if (!expLength.getExp().getTipo().eString()) { AppletInterpretadorPLP.SelecionarErro(expLength.getExp().getLineExpression(), expLength.getExp().getBeginColumnExpression(), expLength.getExp().getEndColumnExpression()); } 12 public void visit(ExpBinaria expBinaria) throws VisitorException { if (!expBinaria.getEsq().checaTipo()) { AppletInterpretadorPLP.SelecionarErro(expBinaria.getEsq().getLineExpression(), expBinaria.getEsq().getBeginColumnExpression(), expBinaria.getEsq().getEndColumnExpression()); } else { AppletInterpretadorPLP.SelecionarErro(expBinaria.getDir().getLineExpression(), expBinaria.getDir().getBeginColumnExpression(), expBinaria.getDir().getEndColumnExpression()); } }

13 Telas 13


Carregar ppt "Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos."

Apresentações semelhantes


Anúncios Google