Melhorias e Mensagens Amigveis ao Usurio Centro de

  • Slides: 13
Download presentation
Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno

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 – Implantar melhorias no editor utilizado no ensino

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

Visitor • O padrão Visitor é usado quando se quer adicionar funcionalidades a uma

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

Visitor • Desvantagens – O encapsulamento das classes compostas é quebrado quando o Visitor

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

Visitor 5

Visitor 5

Diagrama de Classes 6

Diagrama de Classes 6

Diagrama de Classes com Visitor 7

Diagrama de Classes com Visitor 7

Expressao. java public interface Expressao { boolean checa. Tipo() throws Visitor. Exception; public void

Expressao. java public interface Expressao { boolean checa. Tipo() throws Visitor. Exception; public void accept(Linguagem. Visitor ling. Visitor) throws Visitor. Exception; public int get. Line. Expression(); public int get. Begin. Column. Expression(); public int get. End. Column. Expression(); } 8

Exp. Binaria. java //------------------------------ //---------Construtor para utilizcao Variaveis da selecao edos erros noutilizados editor.

Exp. Binaria. java //------------------------------ //---------Construtor para utilizcao Variaveis da selecao edos erros noutilizados editor. -----------metodos na funcionalidade public Exp. Binaria(Expressao esq, Expressao dir, String operador) { de selecao dos erros no editor this. esq = esq; //-----------------------------this. dir = dir; this. operador = operador; protected int line; protected int begin. Column; } protected int end. Column; //--------------------------------public boolean checa. Tipo() throws Visitor. Exception{ public int{ get. Line. Expression() if (!get. Esq(). checa. Tipo() || !get. Dir(). checa. Tipo()) return this. line; result = false; accept(visit); public int get. Begin. Column. Expression() } else { return this. begin. Column; result = this. checa. Tipo. Elemento. Terminal(); } public int get. End. Column. Expression() return result; return this. end. Column; 9

Exp. Length. java //---------Construtor para utilizacao da selecao dos erros no editor. -----public Exp.

Exp. Length. java //---------Construtor para utilizacao da selecao dos erros no editor. -----public Exp. Length(Expressao exp, int line, int begin. Column, int end. Column) { super(exp, "length"); public void accept(Linguagem. Visitor ling. Visitor) this. line = line; this. begin. Column = begin. Column; throws Visitor. Exception { ling. Visitor. visit(this); this. end. Column = end. Column; } }//-------------------------------------------------protected boolean checa. Tipo. Elemento. Terminal() throws Visitor. Exception { boolean Result = (get. Exp(). get. Tipo(). e. String()); if (!Result) accept(visit); return Result; } 10

Linguagem. Visitor. java public void visit(Exp. Length exp. Length) throws Visitor. Exception; public void

Linguagem. Visitor. java public void visit(Exp. Length exp. Length) throws Visitor. Exception; public void visit(Exp. Menos exp. Menos) throws Visitor. Exception; public void visit(Exp. Not exp. Not) throws Visitor. Exception; public void visit(Exp. Binaria exp. Binaria) throws Visitor. Exception; 11

Visitor. Expressoes 1. java public void visit(Exp. Length exp. Length) throws Visitor. Exception {

Visitor. Expressoes 1. java public void visit(Exp. Length exp. Length) throws Visitor. Exception { if (!exp. Length. get. Exp(). get. Tipo(). e. String()) { Applet. Interpretador. PLP. Selecionar. Erro(exp. Length. get. Exp(). get. Line. Expression(), exp. Length. get. Exp(). get. Begin. Column. Expression(), public void visit(Exp. Binaria exp. Binaria) throws Visitor. Exception { exp. Length. get. Exp(). get. End. Column. Expression()); if (!exp. Binaria. get. Esq(). checa. Tipo()) { } Applet. Interpretador. PLP. Selecionar. Erro(exp. Binaria. get. Esq(). get. Line. Expression(), } exp. Binaria. get. Esq(). get. Begin. Column. Expression(), exp. Binaria. get. Esq(). get. End. Column. Expression()); } else { Applet. Interpretador. PLP. Selecionar. Erro(exp. Binaria. get. Dir(). get. Line. Expression(), exp. Binaria. get. Dir(). get. Begin. Column. Expression(), exp. Binaria. get. Dir(). get. End. Column. Expression()); } } 12

Telas 13

Telas 13