aulify · Mini-Projecto
UC UC00619 · T. Desenv. Software
Versão · Aluno
Mini-Projecto · App Java OOP + BD
Sistema com colecções, JDBC, testes
Contexto
Cada par/trio constrói uma aplicação Java completa com OOP, persistência em base de dados (SQLite), CLI interactiva, testes unitários e Maven. Cenários:
- A: Sistema de biblioteca (livros, leitores, empréstimos).
- B: Gestor de mercearia (produtos, stock, vendas).
- C: Agenda telefónica (contactos, grupos).
- D: Caixa registadora (produtos, vendas, recibo).
- E: Gestão escolar (alunos, disciplinas, notas).
Requisitos
Funcionais
- Maven com pom.xml.
- Mínimo 3 classes com OOP (herança ou interfaces).
- Persistência SQLite via JDBC (DAOs).
- CLI com menu interactivo.
- CRUD completo (criar, listar, actualizar, apagar).
- Validação de inputs.
- Excepções customizadas (mínimo 1).
- Testes JUnit (mínimo 5 testes).
Não-funcionais
- Estrutura modular (packages: model, dao, ui, util).
- PreparedStatement em todas as queries.
- Try-with-resources em conexões.
- README completo.
- GitHub com commits regulares.
- Apresentação com demo.
Fases
Fase 1 · Design (2h)
- Diagrama de classes.
- Esquema de BD (tabelas, relações).
- Maven setup, dependências.
- Entregável: pom.xml + diagrama + DDL SQL.
Fase 2 · Models (2h)
- Classes/records do domínio.
- Construtores, getters, validação.
- Entregável: package
modelcompleto.
Fase 3 · DAOs (4h)
- Conexão JDBC.
- DAO por entidade com CRUD.
- PreparedStatement sempre.
- Entregável: package
daofuncional.
Fase 4 · CLI (3h)
- Menu principal.
- Sub-menus por entidade.
- Validação de inputs.
- Entregável: app utilizável.
Fase 5 · Excepções + validação (1h)
- Excepções custom.
- Tratamento robusto.
- Entregável: app à prova de inputs inválidos.
Fase 6 · Testes (2h)
- JUnit em DAOs e lógica de negócio.
- Mínimo 5 testes.
- Entregável:
mvn testpassa.
Fase 7 · README + GitHub (1h)
- README com setup, uso, screenshots.
- Push final para GitHub.
- Entregável: repo público completo.
Fase 8 · Apresentação (1h)
- Demo ao vivo.
- 10 minutos por grupo.
Critérios de avaliação
| Item | Peso |
|---|---|
| Design + diagrama de classes | 10% |
| OOP + arquitectura | 15% |
| JDBC + DAOs | 20% |
| CLI usável | 10% |
| Validação + excepções | 10% |
| Testes JUnit | 15% |
| GitHub workflow | 5% |
| README | 5% |
| Apresentação | 10% |
Reflexão
Em meia página: que conceito OOP te custou mais (herança, interfaces, polimorfismo)? Como estruturaste o projecto e o que mudarias se voltasses a começar? JDBC raw ou preferes que existisse algo de mais alto nível? Que biblioteca/ferramenta descobriste útil? Spring Boot seguinte natural?