1 / 13

Melhorias e Mensagens Amigáveis ao Usuário

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

kenyon
Download Presentation

Melhorias e Mensagens Amigáveis ao Usuário

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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;

  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

  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

  5. Visitor

  6. Diagrama de Classes

  7. Diagrama de Classes com Visitor

  8. Expressao.java public interface Expressao { booleanchecaTipo() throwsVisitorException; publicvoidaccept(LinguagemVisitorlingVisitor) throwsVisitorException; publicintgetLineExpression(); publicintgetBeginColumnExpression(); publicintgetEndColumnExpression(); }

  9. ExpBinaria.java //----------------------------------------------------------- Variaveis e metodos utilizados na funcionalidade de selecao dos erros no editor //----------------------------------------------------------- protectedintline; protectedintbeginColumn; protectedintendColumn; publicintgetLineExpression() returnthis.line; publicintgetBeginColumnExpression() returnthis.beginColumn; publicintgetEndColumnExpression() returnthis.endColumn; //-----------------Construtor para utilizcao da selecao dos erros no editor.----------------------- publicExpBinaria(Expressaoesq, Expressaodir, String operador) { this.esq = esq; this.dir = dir; this.operador = operador; } //----------------------------------------------------------------- publicbooleanchecaTipo() throwsVisitorException{ if (!getEsq().checaTipo() || !getDir().checaTipo()) { result = false; accept(visit); } else { result = this.checaTipoElementoTerminal(); } returnresult;

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

  11. LinguagemVisitor.java public void visit(ExpLengthexpLength) throws VisitorException; public void visit(ExpMenosexpMenos) throws VisitorException; public void visit(ExpNotexpNot) throws VisitorException; public void visit(ExpBinariaexpBinaria) throws VisitorException;

  12. VisitorExpressoes1.java publicvoidvisit(ExpBinariaexpBinaria) throwsVisitorException { 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()); } } public void visit(ExpLengthexpLength) throws VisitorException { if (!expLength.getExp().getTipo().eString()) { AppletInterpretadorPLP.SelecionarErro(expLength.getExp().getLineExpression(), expLength.getExp().getBeginColumnExpression(), expLength.getExp().getEndColumnExpression()); } }

  13. Telas

More Related