O projeto da disciplina consiste em desenvolver 3 aplicações relacionadas usando design patterns e frameworks. Num primeiro momento, 3 aplicações relacionadas, isto é, do mesmo domínio de problema, são desenvolvidas usando pelo menos 3 design patterns diferentes (na soma dos programas, não necessariamente em cada um). Nestes programas, testes de unidade devem ser realizados com o framework de testes JUNIT. Em seguida, um framework deve ser projetado para o domínio de problema sob consideração e as aplicações reescritas usando o framework.
Você pode escolher o domínio do problema, mas lembre que as aplicações devem ser pequenas, já que 3 aplicações serão escritas, cada uma em das versões. Sugerimos que você utilize "jogos de cartas" como domínio de problema. Especificamente, o domínio de problema "jogos de poquer" ou "jogos de paciência" poderiam ser escolhidos como domínios de problema, já que vários tipos similares de tais jogos existem. Observe que as aplicações não precisam ter capricho visual e não precisam sequer utilizar interface gráfica (mas seriam legal, né?).
Você pode formar equipes de 2 pessoas. 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. Observe entretanto que o framework JUNIT utilizado no projeto não está disponível para qualquer linguagem.
A lista de milestones e detalhes do que entregar ao professor para cada milestone seguem.