aulify · Mini-Projecto
UC UC00619 · T. Desenv. Software
Versão · Aluno
Mini-Projeto · App Java OOP + BD
Sistema com coleções, JDBC, testes
Contexto
Cada par/trio constrói uma aplicação Java completa com OOP, persistência em base de dados (SQLite), CLI interativa, 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 interativo, desenhado antes de programar (esboço do menu, fluxo entre ecrãs e mensagens).
- CRUD completo (criar, listar, atualizar, apagar).
- Validação das entradas do utilizador.
- Exceções próprias (mínimo 1).
- Testes JUnit (mínimo 5 testes).
Não-funcionais
- Estrutura modular (pacotes: model, dao, ui, util).
- PreparedStatement em todas as queries.
- Try-with-resources em conexões.
- Documentação: README, guião técnico e manual de utilizador.
- GitHub com commits regulares.
- Apresentação com demo.
- Fontes técnicas consultadas: lista de pelo menos duas (por exemplo a API Java, a documentação do driver SQLite, um tutorial), com o que aprendeste em cada uma.
Fases
Fase 1 · Planeamento e design (3h)
- Histórias de utilizador e plano de etapas com estimativa de horas.
- Diagrama de classes.
- Esquema de BD (tabelas, relações).
- Esboço da interface: menu principal, fluxo entre ecrãs, mensagens de sucesso e de erro, regras de validação.
- Configuração do Maven e das dependências, com as versões escolhidas no repositório Maven Central.
- Leitura da documentação das ferramentas que vais usar (API Java, driver SQLite), registada na lista de fontes.
- Entregável: pom.xml + histórias e plano + diagrama + DDL SQL + esboço da interface + lista de fontes.
Fase 2 · Models (2h)
- Classes/records do domínio.
- Construtores, getters, validação.
- Entregável: pacote
modelcompleto.
Fase 3 · DAOs (3h)
- Conexão JDBC.
- DAO por entidade com CRUD.
- PreparedStatement sempre.
- Entregável: pacote
daofuncional.
Fase 4 · CLI (3h)
- Menu principal.
- Sub-menus por entidade.
- Validação das entradas do utilizador.
- Entregável: app utilizável.
Fase 5 · Exceções + validação (1h)
- Exceções próprias.
- Tratamento robusto.
- Entregável: app à prova de entradas inválidas.
Fase 6 · Testes (2h)
- JUnit em DAOs e lógica de negócio.
- Mínimo 5 testes.
- Entregável:
mvn testpassa.
Fase 7 · Documentação + GitHub (1h)
- README com instalação, utilização e capturas de ecrã.
- Guião técnico para outros programadores (ambiente, como compilar e correr, pacotes, decisões de desenho).
- Manual de utilizador de uma página (cada opção do menu, exemplos, mensagens de erro e o que fazer).
- Push final para GitHub.
- Entregável: repositório público completo com README, guião técnico e manual de utilizador.
Fase 8 · Apresentação (1h)
- Demo ao vivo.
- 10 minutos por grupo.
Critérios de avaliação
| Item | Peso |
|---|---|
| Planeamento, design, diagrama e esboço da interface | 10% |
| OOP + arquitetura | 15% |
| JDBC + DAOs | 15% |
| CLI usável | 10% |
| Validação + exceções | 10% |
| Testes JUnit | 15% |
| GitHub workflow | 5% |
| Documentação (README, guião técnico, manual de utilizador) e fontes consultadas | 10% |
| Apresentação | 10% |
Reflexão
Em meia página: que conceito OOP te custou mais (herança, interfaces, polimorfismo)? Como estruturaste o projeto e o que mudarias se voltasses a começar? Gostaste de escrever JDBC à mão ou preferias ter uma ferramenta de mais alto nível? Que biblioteca ou ferramenta descobriste e achaste útil? Achas que o Spring Boot é o passo seguinte natural?