![Page 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](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/1.jpg)
Melhorias e Mensagens Amigáveis ao Usuário
Centro de InformáticaUniversidade Federal de Pernambuco
Bruno FelipeMarco AndréPaulo FernandoRodolfo Santos
![Page 2: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/2.jpg)
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;
![Page 3: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/3.jpg)
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
![Page 4: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/4.jpg)
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
![Page 5: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/5.jpg)
5
Visitor
![Page 6: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/6.jpg)
6
Diagrama de Classes
![Page 7: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/7.jpg)
7
Diagrama de Classes com Visitor
![Page 8: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/8.jpg)
8
Expressao.javapublic interface Expressao {
boolean checaTipo() throws VisitorException;
public void accept(LinguagemVisitor lingVisitor) throws VisitorException;
public int getLineExpression();public int getBeginColumnExpression();public int getEndColumnExpression();
}
![Page 9: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/9.jpg)
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;
//-----------------------------------------------------------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;
![Page 10: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/10.jpg)
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;
}
public void accept(LinguagemVisitor lingVisitor) throws VisitorException {
lingVisitor.visit(this);}
![Page 11: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/11.jpg)
11
LinguagemVisitor.javapublic 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;
![Page 12: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/12.jpg)
12
VisitorExpressoes1.javapublic void visit(ExpLength expLength) throws VisitorException {
if (!expLength.getExp().getTipo().eString()) {
AppletInterpretadorPLP.SelecionarErro(expLength.getExp().getLineExpression(), expLength.getExp().getBeginColumnExpression(), expLength.getExp().getEndColumnExpression());
}}
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());}}
![Page 13: Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos](https://reader035.vdocuments.com.br/reader035/viewer/2022070311/552fc130497959413d8d4750/html5/thumbnails/13.jpg)
13
Telas