Pular para conteúdo

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, map ou set) — "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 — interface ISensor-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.