Projeto de Métodos Avançados de Programação

Período 2001.2

A descrição de um projeto passado sobre frameworks está aqui. Um framework produzido por uma equipe de alunas para este projeto está aqui. Seu objetivo é de melhorar o framework, das seguintes formas:

  1. Primeiro milestone: Refatorar o framework para melhorar a qualidade do código. Aproveite para retirar bugs. Antes de retirar um bug, tenha certeza de que o bug está primeiro sendo descoberto pelos testes de unidade. Aproveite para isolar completamente a GUI do business logic do programa. Finalmente, use o framework para implementar um novo jogo chamado Klondike ("Paciência", no Brasil). Você pode ver todos os jogos em ação instalando o programa Pretty Good Solitaire. Testes de unidade já existem para o framework e você deve sempre manter os testes funcionando e adicionar novos testes para verificar a funcionalidade que você adiciona ao framework. Este milestone tem o propósito principal de acostuma-lo com o framework existente.
    Entregue o material obedecendo o seguinte:
    - use um unico zip;
    - tudo deve cair no lugar certo ao deszipar para ajudar minha tarefa de testar e verificar seu trabalho;
    - posso deszipar em qualquer diretório que eu quiser na minha maquina;
    - use apenas nomes de arquivos relativos;
    - quero um bat para executar a aplicação, um bat para compilar tudo e um bat para testar tudo;
    - esses bats devem estar na raiz do zip;
    - sempre entregue o Javadoc do seu framework, em diretório separado;
    - Não topo editar os .bats para acertar o classpath ou qualquer outra coisa. Pode supor que o javac e java estão no meu classpath.
  2. Segundo milestone: Implemente um novo jogo de paciência, digamos Waterloo ou Áses e Reis.
  3. Terceiro milestone: Componentize  totalmente (ou quase, já que o mundo é cruel) o business logic do framework de forma a poder montar os 5 jogos apenas via composição. A criação dos componentes pode usar programação mas todos os jogos devem ser montados com componentes existentes. É possível que a amarração da GUI ao componentes de business logic ainda necessite de (pouca) programação. Para ajudar nessa tarefa, procure hot spots no código. Seu framework deve ser capaz de rodar os 5 jogos.
  4. Quarto milestone: Componentize a interface com o usuário. Não é necessário componentizar tuuuuudo.Basta cmponentizar as pilhas gráficas. Observe que o layout gráfico do jogo não importa. Portanto, todas as pilhas podem ter o mesmo aspecto físico para simplificar seu trabalho. Você pode ter uma grande seqüência de pilhas na tela, se quiser. Talvez seja legal ter um atributo dizendo onde colocar a pilha nba tela. Porém, não precisa manter o mesmo layout gráfico que cada jogo tinha em milestones anteriores.
  5. Quinto milestone: Implemente mais um jogo (Sea Towers) com seu framework. Crie novos componentes se for necessário. Componentes antigos pode ser alterados. No final, se framework deve poder jogar 6 jogos.
  6. Sexto milestone: Use um arquivo XML para definir um jogo (seus componentes e interconexões). A conversão de XML para objetos em Java pode ser feita com Castor ou JAXB. Mostre os 6 arquivos XML para os 6 jogos.

Antes de iniciar o projeto, é imprescindível ler o artigo: Evolving Frameworks.

Observe que não há necessidade de caprichar na interface gráfica do programa.

Você pode formar equipes de 2 pessoas. Nos artefatos entregues, indique claramente os membros de cada equipe. Os programas devem ser desenvolvidos em uma das seguintes linguagens: Java (de preferência), C++, Object Pascal. O paradigma deve obviamente ser Orientado a Objeto. O framework JUNIT utilizado no projeto está disponível para muitas linguagens em www.junit.org.

Se desejar, poderá implementar um framework diferente, desde que mande uma descrição e um cronograma indicando milestones e datas para o Prof. Jacques. Cuidado! Implementar um framework do zero neste curto espaço de tempo é muito difícil e pode requerer um grande esforço.