Aula de laboratório: JEOPS


Exercício 1: classificação de automóveis

Objetivos

Tarefa

Instruções

  1. Antes de mais nada, crie um diretório na sua conta (ou no diretório temp da máquina). Vamos chamá-lo de <dir> para facilitar as explicações.
  2. Analisar Regras a serem codificadas
  3. Analisar as classes Transporte e Tamanho
  4. Codificar a base de regras. Clique aqui para obter um template para a base de regras desse exemplo. Lembre que você tem que salvar o arquivo com o nome da base + extensão .rules (ClassificacaoTransportesBase.rules). (sintaxe das regras)
  5. Obter o código das classes Transporte e Tamanho. Como elas foram definidas dentro do pacote aulas, devem ser salvas dentro de um diretório com o mesmo nome. Com isso, a árvore de diretórios deve ficar como a seguinte:
    <dir>
    |--aulas
    |  |--Transporte.java
    |  |--Tamanho.java
  6. Relembrar o funcionamento do JEOPS
  7. Obter código 1 do programa de teste. Ele também deve ser salvo no diretório aulas:
    <dir>
    |--aulas
    |  |--Transporte.java
    |  |--Tamanho.java
    |  |--Exemplo1.java
  8. Obter classes JEOPS: baixar o arquivo da página e descompactá-lo localmente, por exemplo, no diretório <dir>\jeops. A árvore de diretórios deve ficar como a seguinte:
    <dir>
    |--aulas
    |  |--Transporte.java
    |  |--Tamanho.java
    |  |--Exemplo1.java
    |--jeops
    |  |--JEOPS.jar
    |  |--JeopsRE.jar
  9. Configurar o prompt do MS-DOS para Java:
    • ajustar o path: set path=%path%; <diretório de instalação do JDK>\bin;
    • ajustar o classpath: set classpath=%classpath%; <dir>;<dir>\jeops\JEOPS.jar ;<dir>\jeops\JeopsRE.jar
    • OBS: Certifique-se de que não existem espacos em branco no path ou classpath, pois e' muito provavel que eles causem problemas no reconhecimento dos diretorios especificados nessas variaveis
  1. Compilar as classes Transporte.java e Tamanho.java: a partir de <dir>, digitar no prompt: javac aulas/Transporte.java aulas/Tamanho.java 
  2. Criar o arquivo de regras (chamado, por exemplo, de ClassificacaoTransportesBase.rules), dentro do diretório <dir>\aulas
    <dir>
    |--aulas
    |  |--Transporte.java
    |  |--Tamanho.java
    |  |--Exemplo1.java
    |  |--ClassificacaoTransportesBase.rules
    |--jeops
    |  |--JEOPS.jar
    |  |--JeopsRE.jar
  3. Executar o JEOPS: dentro de <dir>, digitar no prompt: java jeops.compiler.Main aulas/ClassificacaoTransportesBase.rules. Será criado um arquivo .java para essa base de regras:
    <dir>
    |--aulas
    |  |--Transporte.java
    |  |--Tamanho.java
    |  |--Exemplo1.java
    |  |--ClassificacaoTransportesBase.rules
    |  |--ClassificacaoTransportesBase.java
    |--jeops
    |  |--JEOPS.jar
    |  |--JeopsRE.jar
  4. Compilar as classes: dentro de <dir>, digitar no prompt: javac aulas/*.java. OBS: Se a versão do JDK for a 1.4.0, o compilador mostrará uma mensagem de aviso (warning), informando que a palavra "assert" (usada pelo JEOPS) é uma palavra reservada de Java e não poderia ser usada. O código, entretanto, compila normalmente. Porém, se a versão do JDK for a 1.4.1 ou mais recente, a palavra "assert" é de fato utilizada pela linguagem Java e portanto é gerado um erro de compilação (e não apenas um warning). Nesse caso, clique aqui para baixar uma versão do JEOPS que utiliza "tell" ao invés de "assert". Note que você precisará modificar seu código, substituindo todas as ocorrências de "assert" por "tell".
  5. Executar o programa de testes: dentro de <dir> digitar java aulas.Exemplo1
  6. A base de regras deste exemplo pode ser conseguida aqui
  7. Reflexão

Exercício 2: um exemplo mais complexo do JEOPS

Objetivos

Tarefa

Instruções

  1. Analisar a classe Carga
  2. Obter o código da classe Carga. Salvá-la no diretório <dir>/aulas. Com isso, a árvore de diretórios deve ficar como a seguinte:
<dir>
|--aulas
|  |--Transporte.java
|  |--Tamanho.java
|  |--Exemplo1.java
|  |--ClassificacaoTransportesBase.rules
|  |--ClassificacaoTransportesBase.java
|  |--Carga.java
|--jeops
|  |--JEOPS.jar
|  |--JeopsRE.jar
  1. Codificar a base de regras que seleciona qual dos transportes presentes na base é mais indicado para transportar uma carga. O procedimento para compilação do arquivo .rules para um .java é semelhante ao descrito anteriormente.
  2. A solução para o exercício pode ser conseguida aqui: Exemplo 2 e base de regras. Ambos os arquivos devem ser copiados no diretório <dir>/aulas, de forma que a estrutura final de árvore será:
<dir>
|--aulas
|  |--Transporte.java
|  |--Tamanho.java
|  |--Exemplo1.java
|  |--ClassificacaoTransportesBase.rules
|  |--ClassificacaoTransportesBase.java
|  |--Carga.java
|  |--MelhorTransporteBase.rules
|  |--MelhorTransporteBase.java
|--jeops
|  |--JEOPS.jar
|  |--JeopsRE.jar