Contexto do projeto
Projeto de Arquitetura de Software e Programação Orientada a Objetos, no 3º ciclo.
A tarefa era reproduzir o fluxo de um delivery no estilo iFood — do cadastro do
usuário até a avaliação do pedido entregue — mas o que estava sendo avaliado não era
a tela: era como o código estava organizado por trás dela.
O sistema segue MVC com padrão DAO. As telas em Swing não conversam com o banco:
elas chamam um controller, que chama o DAO, que é o único lugar do projeto que sabe
escrever SQL. Os alimentos saem de uma classe abstrata, com comida e bebida herdando
dela, e a bebida ainda implementa a interface de imposto sobre álcool — o cálculo do
tributo mora no tipo que precisa dele, não espalhado em if pela tela.
A parte que eu mais gosto é a finalização do pedido. Ela grava o cabeçalho, recupera
o id gerado pelo banco e insere todos os itens com setAutoCommit(false).
Se qualquer passo falhar no meio, o rollback() desfaz tudo — o banco
nunca fica com meio pedido gravado.
Destaque técnico
A finalização do pedido é transacional: grava o cabeçalho, recupera o id gerado e insere todos os itens com setAutoCommit(false). Se qualquer passo falhar, um rollback() desfaz tudo — o banco nunca fica com meio pedido.
- Busca com JOIN. Procurar um prato específico varre o cardápio de todos os restaurantes de uma vez.
- Carrinho que agrupa. Três unidades do mesmo item viram uma linha "3x", em vez de três linhas repetidas.
- Histórico completo. Cancelar muda o status, excluir remove do histórico e avaliar grava uma nota de 0 a 5 — um UPDATE, um DELETE e outro UPDATE.
- PostgreSQL via JDBC, com cinco tabelas relacionais e a conexão isolada numa classe só.