Projeto Final¶
Peso¶
O projeto vale 1/3 da nota final — o mesmo peso da Avaliação 1 e da Avaliação 2. É a etapa mais longa do curso (enunciado liberado na semana 12, entrega na semana 16), mas não pesa mais que as provas.
Tema¶
Livre, com preferência forte por um projeto embarcado, simulado no Wokwi — é o caminho que aproveita toda a Unidade 7 e tem o esqueleto de código já pronto para você estender (veja temas sugeridos). Se você tiver um projeto não-embarcado em mente que aplique os mesmos conceitos (classes, RAII, polimorfismo, container da STL), converse com o professor antes da semana 13.
Requisitos mínimos¶
Todo projeto, embarcado ou não, precisa ter:
- [ ] Pelo menos 3 classes com responsabilidades distintas — cada uma cuidando de uma coisa (não uma classe "Deus" fazendo tudo).
- [ ] Pelo menos 1 interface/classe abstrata usada polimorficamente (método
virtual, chamado através de uma referência/ponteiro da classe base, com pelo menos duas implementações concretas). - [ ] Uso justificado de pelo menos um container da STL (
vector,mapouset) — "justificado" significa que você deveria saber explicar por que aquele container, e não outro, foi a escolha certa. - [ ] A lógica de decisão testada no host, com
assert()(<cassert>), sem depender de hardware/simulador rodando (se o projeto for embarcado: siga a arquitetura do capítulo 15 — interfaceISensor-like, implementação real e falsa). - [ ] README com uma descrição do projeto e um diagrama simples das classes (pode ser um desenho à mão fotografado, um diagrama de blocos, ou texto estruturado — não precisa ser UML formal).
Marcos¶
| Marco | Semana | O que entregar |
|---|---|---|
| Proposta | 12 | Título, tema escolhido, lista das classes previstas e qual vai ser a interface polimórfica |
| Demo parcial | 14 | Lógica pura funcionando e testada no host (mesmo que a parte de hardware/UI ainda não esteja pronta) |
| Entrega final | 15 | Código completo + README + apresentação de ~5 minutos |
Rubrica¶
| Critério | Peso |
|---|---|
| Requisitos mínimos atendidos (classes, interface polimórfica, container, testes) | 40% |
| Qualidade do design: encapsulamento, RAII/regra do zero, nomes claros | 25% |
| Testes: cobertura das regras de negócio principais, não só do caminho feliz | 20% |
| README, organização do repositório, clareza da apresentação | 15% |
Um projeto ambicioso que só atende parcialmente os requisitos vale mais que um projeto mínimo tecnicamente perfeito — mas um projeto mínimo bem feito (que atende tudo, com boa qualidade) vale mais que um projeto ambicioso mal encapsulado, sem testes, ou com new/delete manuais desnecessários (regra do zero violada sem motivo).
Por onde começar¶
Se você for de tema embarcado: comece pelo esqueleto em projetos/ (veja o capítulo 15 e o Wokwi) — ele já tem a arquitetura (ISensor, implementação real/falsa, testes no host) funcionando. Sua tarefa é estender essa base para o seu domínio específico, não recomeçar do zero.