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

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

13

Telas