Você está na página 1de 3

Primeiro Trabalho

MC302EF Programao Orientada a Objetos


Instituto de Computao
Universidade Estadual de Campinas

Adivinhando animais
Andr Santanch e Luciano Jerez Chaves
2011.1

Instrues
O trabalho consiste na implementao de parte de um sistema em Java capaz de simular o
comportamento do jogo Animals (http://www.animalgame.com/). O objetivo central do trabalho
implementar um entrevistador que dever adivinhar qual animal, dentre um grupo de animais prdefinidos, o entrevistado est pensando.
Os trabalhos devero ser submetidos utilizando o sistema de versionamento Mercurial ao projeto
fluid2learn (http://code.google.com/p/fluid2learn/) at o dia 02/04/2011.

Especificaes
Parte do sistema em Java a ser desenvolvido j est implementado e disponvel para download tanto
na pgina do projeto Fluid2Learn (http://code.google.com/p/fluid2learn/), bem como no repositrio
mercurial disponvel em (https://fluid2learn.googlecode.com/hg).
Estrutura base do sistema
Dentro do pacote pt.c01interfaces.s01chaveid.s01base possvel encontrar os trs pacotes relevantes
ao desenvolvimento do projeto apresentados a seguir.
Pacote bd
o local onde sero armazenados os arquivos em formato texto que contm as informaes que
descrevem os animais participantes de jogo. Cada arquivo texto contm declaraes (especificadas uma
por linha) formadas por uma propriedade identificando alguma caracterstica do animal seguida de um
valor binrio (no nosso caso: sim ou no). Existe um arquivo texto para cada animal participante do jogo.
O nome do arquivo texto formado pelo nome do animal com a extenso .txt. Estes arquivos no devem
ser lidos diretamente pelo programa a ser desenvolvido, mas indiretamente pela interface
IBaseConhecimento detalhada a seguir.
Pacote inter
Este pacote contm a definio de cinco interfaces utilizadas para a manipulao dos arquivos textos
presentes no pacote anterior. A interface IBaseConhecimento oferece o mtodo listaNomes(), que lista o
nome de todos os animais cujos arquivos correspondentes encontram-se no pacote db; e o mtodo
recuperaObjeto(String nome), responsvel por recuperar o arquivo texto de um determinado animal e
carreg-lo em um objeto que implementa a interface IObjetoConhecimento. Esta ltima interface, por sua
vez, composta de um conjunto de objetos que implementa a interface IDeclaracao, que fornece mtodos
para leitura de propriedades e valores de cada uma das declaraes presentes nos arquivos textos que
descrevem os animais.
Pacote impl
Contm as classes que implementam as trs interfaces apresentadas no pacote anterior.
Entrevistado / entrevistador
Para que o sistema cumpra com seu objetivo, necessrio criar um entrevistado (que ser o jogador)

e um entrevistador (que ser o adivinhador). Para estes dois elementos, tambm foram definidas duas
interfaces disponveis no pacote pt.c01interfaces.s01chaveid.s01base. A interface IResponder especifica
dois mtodos que podem ser acessados publicamente:
1) public String ask(String question) Este mtodo recebe como parmetro uma string
correspondente a alguma propriedade que pode ou no estar presente no arquivo que descreve o animal
escolhido pelo entrevistado, e retorna uma string contendo um de trs valores possveis: sim , nao ou
nao sei. A duas primeiras respostas so definidas no caso em que a propriedade encontra-se no arquivo
do animal em questo. A terceira resposta utilizada caso contrrio.
2) public boolean finalAnswer(String answer); Este mtodo pode ser invocado apenas uma vez,
recebendo como parmetro uma string identificando o animal que o entrevistador julga ser o animal
escolhido pelo entrevistado. O mtodo retorna um valor booleano indicando o acerto ou ou erro por parte
do entrevistador. Este mtodo s poder ser acionado uma nica vez ao final da entrevista.
A segunda interface disponvel o IEnquirer. O nico mtodo disponvel nesta interface :
1) public void connect(IResponder responder); Este mtodo recebe como parmetro um objeto que
implemente a interface IResponder, e tem como nico objetivo conectar o entrevistador ao entrevistado,
iniciando a sequncia de perguntas que deve levar o entrevistador a identificar qual o animal o
entrevistado escolheu. Ao final, este mtodo deve utilizar-se do mtodo finalAnswer disponvel em
IResponder para verificar o acerto ou o erro por parte do entrevistador.
No pacote pt.c01interfaces.s01chaveid.s01base.teste est disponvel uma implementao ilustrativa
para a instanciao da base de conhecimento. J no pacote pt.c01interfaces.s01chaveid.s02exemplo.impl
possvel encontrar duas implementaes: uma para o entrevistador e outra para o entrevistado. Estas
implementaes so ilustrativas, e esto a para auxili-lo na compreenso do trabalho.

Atividades do trabalho
Para este trabalho, o professor juntamente com o PED da disciplina iro implementar secretamente
o IResponder. Espera-se que voc implemente duas verses da interface IEnquirer:
EnquirerBasic uma primeira implementao, onde estamos interessados apenas em obter a
resposta correta, no importanto o mtodo utilizado.
EnquirerAdvanced uma segunda implementao, onde esperamos que voc faa uso de estrutura
de dados, classes, interfaces, e outros recursos disponveis nas linguagens orientadas a objeto para melhor
estruturar o projeto e alcanar um resultado elegante e com desempenho satisfatrio.
Lembre-se que o IEnquirer pode (e deve) fazer uso das implementaes j existentes para manipular
os arquivos textos conforme julgar necessrio. Pode ser utilizado qualquer abordagem para a escolha das
perguntas a serem feitas ao IResponder. A nica restrio existente que no permitido fazer uma
mesma pergunta duas vezes. Vale lembrar que o IResponder no trapaceia: ou seja, ele sempre sincero
ao responder as perguntas recebidas.
A base de dados contendo os animais que sero utilizados na avaliao do trabalho s ser revelada
depois da data de entrega do trabalho (espera-se que a soluo proposta seja genrica o suficiente para
funcionar corretamente com qualquer base de dados que obedea s especificaes apresentadas
anteriormente). Para facilitar os testes, sugerimos que os alunos enviem suas bases de exemplo para o
repositrio mercurial online, assim possvel compartilhar a base e melhorar a qualidade dos testes.

Avaliao
Para avaliar o seu programa, a aplicao principal ir instanciar um EnquirerBasic e um
EnquirerAdvanced. O Responder ser conectado a cada um destes entrevistadores separadamente. A nota
2

ser definida em funo de dois critrios apresentados a seguir:

Corretude da implementao
Ser atribudo uma nota entre 0 e 7 pontos para avaliar o funcionamento correto do sistema, que
deve ser capaz de adivinhar em uma nica tentativa qual o animal o entrevistado est pensando. Neste
quesito ser considerado apenas o resultado da execuo do EnquirerBasic. O cdigo no ser avaliado,
nem a abordagem utilizada para identificar o animal.

Abordagem de implementao
Ser atribudo uma nota entre 0 e 3 pontos com o objetivo avaliar a criatividade e eficincia na
abordagem escolhida para a identificao dos animais. Os conceitos relativos orientao objetos, como
as estruturas de dados utilizadas, a modularizao do sistema, a definio de classes, mtodos, interfaces,
etc. sero avaliados neste quesito. Neste quesito o cdigo avaliado ser o do EnquirerAdvanced.

Você também pode gostar