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)
2 Próximos Passos 1.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;
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;
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}
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));
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 tipo, Tipo prox) { this.tipo = tipo; this.prox = prox; }
7 Reestruturação da Linguagem *Classe Tipo public int getTipo() { return tipo; } Antes: Depois: public Set get() { return Collections.unmodifiableSet(tipo); }
8 Reestruturação da Linguagem *Classe Tipo public boolean eInteiro() { return (tipo & INTEIRO) != 0; } Antes: Depois: public boolean eInteiro() { return tipo.contains(Tipos.INTEIRO); }
9 Reestruturação da Linguagem Imperativa 1 Modificações: 1.Lista: 2.Utilização do ForEach: 3.Parametrização das Classes Stack, HashMap:
10 Reestruturação da Linguagem Imperativa 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 { protected T head; protected Lista tail; …. public class ListaValor extends Lista {
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:
12 Reestruturação da Linguagem Imperativa 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 { protected T head; protected Lista tail; …. public class ListaExpressao extends Lista { … public class ListaDeclaracaoParametro extends Lista {
13 OO1 Modificações: 1.Eliminação do pacote Coleção; 2.Utilização do ForEach: 3.Parametrização das Classes Stack, HashMap:
14 OO1 Antes: Depois: public Stack > getPilha();
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.
16 Documentação D’oxygen Com 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.
17 Documentação D’oxygen Como usar? 1.Baixar o doxygen do site 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);
18 Documentação D’oxygen Como 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;
19 Documentação D’oxygen Como 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”
20 Documentação D’oxygen Como 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.
21 Documentação D’oxygen
22 Questions, Please !