Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouMatheus Macias Alterado mais de 10 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.