1 reestruturação das linguagens da disciplina “paradigmas de linguagens de programação” para...

22
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt) Euclides Neto (enan) Prof.: Augusto Sampaio (acas)

Upload: vinicius-perna

Post on 07-Apr-2016

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

1

Reestruturação das Linguagens da Disciplina “Paradigmas de

Linguagens de Programação” para Java 1.5

Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt) Euclides Neto (enan)Prof.: Augusto Sampaio (acas)

Page 2: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

2

Próximos Passos1. Alteração das outras Linguagens;2. Atualização do site ou Construção de

documentação via Doxygen;3. Verificar utilização de Enumeration na

classe Tipo;

Page 3: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

3

Roteiro Reestruturação das Linguagens(Java 1.5):

*Classe Tipo (Leonardo Lucena,special Guest) Imperativa1; Imperativa2;OO1;

Atualização da Base de Dados CVS com as outras linguagens e alteração dos .jj para aceitar parâmetros de entrada;

Documentação Automática com D’oxygen; Aula para a nova turma de PLP;

Page 4: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

4

Reestruturação da Linguagem*Classe Tipo

• Utilização do Tipo Enumeration e EnumSet;Antes:public static final int INTEIRO = 1;public static final int BOOLEANO = 2;public static final int STRING = 4;public static final int INDEFINIDO = 8;

Depois:

public enum Tipos{INTEIRO, BOOLEANO, STRING}

Page 5: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

5

Reestruturação da Linguagem*Classe Tipo

public static final Tipo TIPO_INTEIRO = new Tipo(INTEIRO);public static final Tipo TIPO_BOOLEANO = new Tipo(BOOLEANO);public static final Tipo TIPO_STRING = new Tipo(STRING);public static final Tipo TIPO_PONTO_FLUTUANTE = new Tipo(PONTO_FLUTUANTE);public static final Tipo TIPO_INDEFINIDO = new Tipo(INDEFINIDO);

Antes:

Depois:public static final Tipo TIPO_INTEIRO = new Tipo(EnumSet.of(Tipos.INTEIRO));public static final Tipo TIPO_BOOLEANO = new Tipo(EnumSet.of(Tipos.BOOLEANO));public static final Tipo TIPO_STRING = new Tipo(EnumSet.of(Tipos.STRING));public static final Tipo TIPO_INDEFINIDO = new Tipo(EnumSet.noneOf(Tipos.class));

Page 6: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

6

Reestruturação da Linguagem*Classe Tipo

public Tipo() {this(INTEIRO + BOOLEANO + STRING + PONTO_FLUTUANTE);}public Tipo(int tipo, Tipo prox) {this.tipo = tipo;this.prox = prox;}

Antes:

Depois:public Tipo() {this(EnumSet.allOf(Tipos.class));}public Tipo(Set<Tipos> tipo, Tipo prox) {this.tipo = tipo;this.prox = prox;}

Page 7: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

7

Reestruturação da Linguagem*Classe Tipo

public int getTipo() {return tipo;}

Antes:

Depois:

public Set<Tipos> get() {return Collections.unmodifiableSet(tipo);}

Page 8: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

8

Reestruturação da Linguagem*Classe Tipo

public boolean eInteiro() {return (tipo & INTEIRO) != 0;}

Antes:

Depois:

public boolean eInteiro() {return tipo.contains(Tipos.INTEIRO);}

Page 9: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

9

Reestruturação da LinguagemImperativa 1

Modificações:1. Lista:2. Utilização do ForEach:3. Parametrização das Classes Stack, HashMap:

Page 10: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

10

Reestruturação da LinguagemImperativa 1

Lista Antes:

public class ListaValor { private Valor valor; private ListaValor listaValor;public int length() {...} public Valor head() {...}public ListaValor tail()

Lista Depois:

public class Lista<T> { protected T head; protected Lista<T> tail; ….

public class ListaValor extends Lista<Valor>{

Page 11: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

11

Imperativa 2

Modificações:1. ListaExpressão e Lista Declaração de Parâmetros:2. Utilização do ForEach:3. Parametrização das Classes Stack, HashMap:

Page 12: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

12

Reestruturação da LinguagemImperativa 2

Lista Antes:

public class ListaExpressao { private Expressao expressao;private ListaExpressao listaExpressao;public int length() {...} public Expressao head() {...}public ListaExpressao tail()

Lista Depois:

public class Lista<T> { protected T head; protected Lista<T> tail; ….

public class ListaExpressao extends Lista<Expressao>{…public class ListaDeclaracaoParametro extends

Lista<DeclaracaoParametro> {

Page 13: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

13

OO1

Modificações:1. Eliminação do pacote Coleção;2. Utilização do ForEach:3. Parametrização das Classes Stack, HashMap:

Page 14: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

14

OO1Antes:

Depois:

public Stack<HashMap<Id, Valor>> getPilha();

Page 15: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

15

Documentação D’oxygen

Doxygen é um sistema de documentação para C++, C, Java, Objective-C, Python, IDL (Corba e Microsoft flavors) e algumas extensões PHO,C#, e D.

Page 16: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

16

Documentação D’oxygenCom essa ferramenta podemos fazer:1. Gerar página html de documentação de código (ou até

mesmo Latex). A documentácão é extraída diretamente do código fonte, o que facilita manter a documentação consistente com o código fonte. (Esta funcionalidade é utilizada por desenvolvedores da Motorola);

2. Pode-se configurar o D’oxygen para extrair partes de código que não seja propriamente de documentação, como por exemplo, diagramas de classes, diagrama de sequencia, dentro vários outros artifícios;

3. Você pode até mesmo ‘abusar’ do d’oxygen e usálo para criar documentos normais, tipo manual de instruções.

Page 17: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

17

Documentação D’oxygenComo usar?1. Baixar o doxygen do site

www.doxygen.org;2. Instalar o GraphViz para geração

dos .dot(Diagramas de Classes);3. Rodar o doxywizard;4. Step1: Configure Doxygen. Neste ponto

você pode escolher o Wizard(configuração simples) ou o expert( mais detalhes);

Page 18: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

18

Documentação D’oxygenComo usar?5. Para começar vamos escolher o Wizard;6. Dar um nome e versao ao projeto

(plp,1.0);7. Apontar para o diretorio onde está o

codigo fonte a ser documentado;8. Geraremos uma documentação de todas

as linguagens, já que colocamos a mesma em pacotes;

Page 19: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

19

Documentação D’oxygenComo usar?9. Escolha o local onde a documentação

será armazenada;10.Na aba Mode escolheremos “All

Entities” na parte “Select the desired extraction mode” e seleciona “Include cross-referenced source code in the output” e a opcao “Optimize for Java output”

Page 20: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

20

Documentação D’oxygenComo usar?11.Na aba output escolha somente HTML com

frames para navegação.12.E por ultimo a aba Diagrams “Use dot tool

from GraphViz package to generate Diagrams”.

13.Salve o arquivo configuração para ser utilizado novamente depois (documentação automática);

14.Working dir (Diretório onde o d’oxygen foi instalado);

15.PRESSIONE START.

Page 21: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

21

Documentação D’oxygen

Page 22: 1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)

22

Questions, Please !Questions, Please !