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
Download

Apresentação Seminário2