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) 1 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; 2 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; 3 Reestruturação da Linguagem *Classe Tipo • Utilização do Tipo Enumeration e EnumSet; Antes: public static public static public static public static final int INTEIRO = 1; final int BOOLEANO = 2; final int STRING = 4; final int INDEFINIDO = 8; Depois: public enum Tipos{INTEIRO, BOOLEANO, STRING} 4 Reestruturação da Linguagem *Classe Tipo Antes: 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); 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)); 5 Reestruturação da Linguagem *Classe Tipo Antes: public Tipo() { this(INTEIRO + BOOLEANO + STRING + PONTO_FLUTUANTE); } public Tipo(int tipo, Tipo prox) { this.tipo = tipo; this.prox = prox; } Depois: public Tipo() { this(EnumSet.allOf(Tipos.class)); } public Tipo(Set<Tipos> tipo, Tipo prox) { this.tipo = tipo; this.prox = prox; } 6 Reestruturação da Linguagem *Classe Tipo Antes: public int getTipo() { return tipo; } Depois: public Set<Tipos> get() { return Collections.unmodifiableSet(tipo); } 7 Reestruturação da Linguagem *Classe Tipo Antes: public boolean eInteiro() { return (tipo & INTEIRO) != 0; } Depois: public boolean eInteiro() { return tipo.contains(Tipos.INTEIRO); } 8 Reestruturação da Linguagem Imperativa 1 Modificações: 1. Lista: 2. Utilização do ForEach: 3. Parametrização das Classes Stack, HashMap: 9 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<T> { protected T head; protected Lista<T> tail; …. public class ListaValor extends Lista<Valor>{ 10 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: 11 Reestruturação da Linguagem Imperativa 2 Lista Antes: Lista Depois: public class ListaExpressao { public class Lista<T> { private Expressao expressao; protected T head; private ListaExpressao listaExpressao; protected Lista<T> tail; public int length() {...} …. public Expressao head() {...} public ListaExpressao tail() public class ListaExpressao extends Lista<Expressao>{ … public class ListaDeclaracaoParametro extends Lista<DeclaracaoParametro> { 12 OO1 Modificações: 1. Eliminação do pacote Coleção; 2. Utilização do ForEach: 3. Parametrização das Classes Stack, HashMap: 13 OO1 Antes: Depois: public Stack<HashMap<Id, Valor>> getPilha(); 14 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. 15 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. 16 Documentação D’oxygen Como 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); 17 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; 18 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” 19 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. 20 Documentação D’oxygen 21 Questions, Please ! 22