220 likes | 333 Views
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). Próximos Passos. Alteração das outras Linguagens;
E N D
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)
Próximos Passos • Alteração das outras Linguagens; • Atualização do site ou Construção de documentação via Doxygen; • Verificar utilização de Enumeration na classe Tipo;
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;
Reestruturação da Linguagem *Classe Tipo • Utilização do Tipo Enumeration e EnumSet; Antes: publicstaticfinalint INTEIRO = 1; publicstaticfinalint BOOLEANO = 2; publicstaticfinalint STRING = 4; publicstaticfinalint INDEFINIDO = 8; Depois: public enum Tipos{INTEIRO, BOOLEANO, STRING}
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));
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; }
Reestruturação da Linguagem *Classe Tipo Antes: publicint getTipo() { return tipo; } Depois: public Set<Tipos> get() { return Collections.unmodifiableSet(tipo); }
Reestruturação da Linguagem *Classe Tipo Antes: publicboolean eInteiro() { return (tipo & INTEIRO) != 0; } Depois: publicboolean eInteiro() { return tipo.contains(Tipos.INTEIRO); }
Reestruturação da Linguagem Imperativa 1 • Modificações: • Lista: • Utilização do ForEach: • Parametrização das Classes Stack, HashMap:
Reestruturação da Linguagem Imperativa 1 Lista Antes: Lista Depois: public class ListaValor { private Valor valor; private ListaValor listaValor; public int length() {...} public Valor head() {...} public ListaValor tail() public class Lista<T> { protected T head; protected Lista<T> tail; …. public class ListaValor extends Lista<Valor>{
Imperativa 2 • Modificações: • ListaExpressão e Lista Declaração de Parâmetros: • Utilização do ForEach: • Parametrização das Classes Stack, HashMap:
Reestruturação da Linguagem Imperativa 2 Lista Antes: Lista Depois: public class ListaExpressao { private Expressao expressao; private ListaExpressao listaExpressao; public int length() {...} public Expressao head() {...} public ListaExpressao tail() public class Lista<T> { protected T head; protected Lista<T> tail; …. public class ListaExpressao extends Lista<Expressao>{ … public class ListaDeclaracaoParametro extends Lista<DeclaracaoParametro> {
OO1 • Modificações: • Eliminação do pacote Coleção; • Utilização do ForEach: • Parametrização das Classes Stack, HashMap:
OO1 Antes: Depois: public Stack<HashMap<Id, Valor>> getPilha();
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.
Documentação D’oxygen • Com essa ferramenta podemos fazer: • 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); • 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; • Você pode até mesmo ‘abusar’ do d’oxygen e usálo para criar documentos normais, tipo manual de instruções.
Documentação D’oxygen • Como usar? • Baixar o doxygen do site www.doxygen.org; • Instalar o GraphViz para geração dos .dot(Diagramas de Classes); • Rodar o doxywizard; • Step1: Configure Doxygen. Neste ponto você pode escolher o Wizard(configuração simples) ou o expert( mais detalhes);
Documentação D’oxygen • Como usar? • Para começar vamos escolher o Wizard; • Dar um nome e versao ao projeto (plp,1.0); • Apontar para o diretorio onde está o codigo fonte a ser documentado; • Geraremos uma documentação de todas as linguagens, já que colocamos a mesma em pacotes;
Documentação D’oxygen • Como usar? • Escolha o local onde a documentação será armazenada; • 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”
Documentação D’oxygen • Como usar? • Na aba output escolha somente HTML com frames para navegação. • E por ultimo a aba Diagrams “Use dot tool from GraphViz package to generate Diagrams”. • Salve o arquivo configuração para ser utilizado novamente depois (documentação automática); • Working dir (Diretório onde o d’oxygen foi instalado); • PRESSIONE START.
Documentação D’oxygen ENJOY IT!