Aula de laboratório: JEOPS
Exercício 1: classificação de automóveis
Familiarizar os alunos com a sintaxe e uso do JEOPS
Mostrar problemas de controle (Rule Sorter)
Codificar e usar um dado conjunto de regras de classificação de carros em objetos do tipo Transporte.
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.
Analisar Regras a serem codificadas
Analisar as classes Transporte e Tamanho
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)
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:
|--aulas
| |--Transporte.java
| |--Tamanho.java
Relembrar o funcionamento do JEOPS
Obter código 1 do programa de teste. Ele também deve ser salvo no diretório aulas:
| |--Exemplo1.java
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:
|--jeops
| |--JEOPS.jar
| |--JeopsRE.jar
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
Compilar as classes Transporte.java e Tamanho.java: a partir de <dir>, digitar no prompt: javac aulas/Transporte.java aulas/Tamanho.java
Criar o arquivo de regras (chamado, por exemplo, de ClassificacaoTransportesBase.rules), dentro do diretório <dir>\aulas
| |--ClassificacaoTransportesBase.rules
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:
| |--ClassificacaoTransportesBase.java
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".
Executar o programa de testes: dentro de <dir> digitar java aulas.Exemplo1
A base de regras deste exemplo pode ser conseguida aqui
Exercício 2: um exemplo mais complexo do JEOPS
Exercício da sintaxe e uso do JEOPS
Demonstrar os recursos de lógica de primeira ordem do JEOPS
Codificar uma base de regras para selecionar qual dos transportes presentes na base é o mais indicado para transportar uma dada carga. Por mais indicado, entende-se o transporte:
que suporta o peso da carga (observar o método getPesoMaximoSuportado() em Transporte)
cujo tamanho é o menor necessário para transportar a carga
Analisar a classe Carga
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:
|  |--Transporte.java
|  |--Tamanho.java
|  |--Exemplo1.java
|  |--ClassificacaoTransportesBase.rules
|  |--ClassificacaoTransportesBase.java
|  |--Carga.java
|  |--JEOPS.jar
|  |--JeopsRE.jar
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.
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á: