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:
- 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.
- Segundo milestone: Implemente um novo jogo de paciência, digamos Waterloo
ou Áses e Reis.
- 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.
- 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.
- 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.
- 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.