Módulo 16 - Projeto final: agenda de contatos
A visão do projeto
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Entender o que a agenda de contatos faz do começo ao fim.
- Visualizar a interação no terminal antes de programar.
- Ver quais módulos do curso entram em cada parte do projeto.
- Assumir a estratégia de construir o programa de forma incremental.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: A visão do projeto.
Os objetivos desta aula. Entender o que a agenda de contatos faz do começo ao fim. Visualizar a interação no terminal antes de programar. Ver quais módulos do curso entram em cada parte do projeto. Assumir a estratégia de construir o programa de forma incremental.
Veja o essencial, parte por parte.
O que a agenda de contatos faz. A agenda guarda contatos com nome, telefone e e-mail.
Como será a conversa no terminal. Vale imaginar a experiência antes de codar.
De onde vem cada peça. A agenda não inventa nada novo.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O que a agenda de contatos faz
Chegou o momento de juntar o curso em um único programa. Ao longo dos módulos anteriores você aprendeu peças soltas: classes, compreensões, tratamento de erros, leitura e escrita de arquivos, testes. Cada uma resolvia um problema pequeno. Um projeto é o que dá sentido a esse conjunto, porque força as peças a trabalharem juntas. A agenda de contatos foi escolhida por ser útil, pequena o bastante para caber em poucas aulas e completa o bastante para exercitar tudo que importa no nível intermediário.
Em termos práticos, a agenda é um programa que roda no terminal e mantém uma lista de contatos. Cada contato tem três informações: nome, telefone e e-mail. O usuário escolhe o que fazer por um menu de números: adicionar um novo contato, listar todos, procurar um pelo nome, remover um e exportar a lista para uma planilha. Entre uma execução e outra, os dados não se perdem, porque são gravados em um arquivo. É um programa modesto, mas de verdade: tem estado que persiste, tem entrada do usuário para validar e tem erros para tratar com cuidado.
Como será a conversa no terminal
Vale imaginar a experiência antes de codar. Quando você roda o programa, ele mostra um menu e espera um número. Você escolhe adicionar, informa os dados, e ele confirma. Escolhe listar, e ele imprime os contatos. Pensar na interação primeiro ajuda a decidir quais métodos as classes vão precisar. O bloco abaixo simula uma sessão típica, com o que o programa mostra e o que o usuário digita.
1) Adicionar 2) Listar 3) Buscar 4) Remover 5) Exportar CSV 0) Sair
Opcao: 1
Nome: Ana Souza
Telefone (so numeros): 11999998888
E-mail: ana@exemplo.com
Contato adicionado.
1) Adicionar 2) Listar 3) Buscar 4) Remover 5) Exportar CSV 0) Sair
Opcao: 2
Ana Souza | 11999998888 | ana@exemplo.com
1) Adicionar 2) Listar 3) Buscar 4) Remover 5) Exportar CSV 0) Sair
Opcao: 3
Nome a buscar: joao
Nao encontrei 'joao'.
1) Adicionar 2) Listar 3) Buscar 4) Remover 5) Exportar CSV 0) Sair
Opcao: 0
Ate mais!Uma sessão de uso da agenda. O menu se repete até o usuário escolher sair.
Repare em detalhes que já anunciam decisões de projeto. O telefone é pedido só com números, o que sugere uma validação. A busca por um nome que não existe responde com uma mensagem amigável, não com um erro feio que derruba o programa, o que sugere tratamento de exceção. O menu volta sempre, o que sugere um laço. Cada uma dessas observações vira código nas próximas aulas. Essa é a virtude de visualizar a conversa antes: o programa nasce a partir do que o usuário vai viver, não de dentro para fora.
De onde vem cada peça
A agenda não inventa nada novo. Ela combina o que você já viu no curso. A tabela abaixo liga cada parte do projeto ao módulo que ensinou a técnica. É um bom lembrete de que um projeto é, no fundo, uma montagem consciente de ferramentas conhecidas, cada uma no lugar certo.
| Parte do projeto | Técnica usada | Módulo do curso |
|---|---|---|
| Modelar contato e agenda | Classes e objetos (POO) | 10 e 11 |
| Buscar e filtrar contatos | Compreensões e funções | 2 e 4 |
| Tratar erros de propósito | Exceção própria e try/except | 9 |
| Salvar e carregar dados | Arquivos e JSON | 7 e 8 |
| Exportar para planilha | Módulo csv | 7 |
| Garantir que funciona | Testes com unittest | 15 |
Cada parte da agenda reaproveita um tema já estudado no curso.
A estratégia daqui em diante é uma só: construir de forma incremental. Em vez de escrever o programa inteiro e torcer para funcionar, cada aula acrescenta uma peça e roda o resultado. A aula 2 cria as classes vazias que só guardam dados. A 3 dá ações à agenda. A 4 trata os erros. A 5 salva em arquivo. A 6 exporta e monta o menu final. A 7 escreve os testes. A cada etapa o programa continua rodando, um pouco mais completo. Assim, quando algo quebra, você sabe exatamente onde procurar, porque só uma coisa mudou.
Teste rápido
Por que o projeto será construído de forma incremental, aula por aula?
Perguntas frequentes
- Preciso ter feito todos os módulos anteriores para este projeto?
- É o ideal. A agenda usa classes, compreensões, exceções, arquivos, JSON, CSV e testes, cada um ensinado em um módulo. Se algum tema estiver enferrujado, o projeto é uma boa oportunidade para revisitá-lo com um propósito concreto na mão.
- Por que uma agenda de contatos, e não algo mais chamativo?
- Porque ela é pequena o bastante para caber em poucas aulas e completa o bastante para exercitar tudo que importa: guardar estado, validar entrada, tratar erro e salvar em arquivo. Depois de construí-la, você adapta o mesmo esqueleto para muitos outros programas.
- Vou digitar o programa inteiro de uma vez?
- Não. Cada aula acrescenta uma peça a um código que já funciona. Você digita o pouco que muda e roda para conferir. No fim da aula 6 há o código completo comentado, para você comparar com o seu.
- Posso rodar a agenda no Playground do curso?
- As partes de lógica, sim. A parte que salva e lê arquivos no disco depende do seu computador para você ver os arquivos criados. Recomendamos digitar o projeto no seu editor, em um arquivo chamado agenda.py, para viver a experiência completa.
- O programa guarda os contatos depois que eu fecho?
- Sim. É justamente o papel do arquivo JSON. Toda vez que você adiciona ou remove um contato, a agenda grava a lista em contatos.json. Ao abrir de novo, ela carrega esse arquivo e recupera tudo. É o que a aula 5 constrói.
- Qual a diferença entre salvar em JSON e exportar para CSV?
- O JSON é o formato interno do programa, feito para o próprio programa ler de volta e reconstruir os objetos. O CSV é para levar os dados para fora, abrindo em uma planilha como Excel ou Google Sheets. São propósitos diferentes, e a agenda faz os dois.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.