1
resposta

[Sugestão] Faça como eu fiz: dicionários

https://raw.githubusercontent.com/MARINALDOSOUZA/Alura_Desafios/refs/heads/main/app_restaurante

Título do Projeto: Restaurante Expresso - Sistema de Gerenciamento de Restaurantes
Resumo do Projeto
Restaurante Expresso é uma aplicação de console (CLI - Command-Line Interface) desenvolvida em Python para gerenciar o cadastro e o status operacional de restaurantes. O sistema permite realizar as quatro operações fundamentais de gerenciamento de dados (CRUD: Create, Read, Update, Delete) de forma interativa e organizada, oferecendo uma interface de usuário limpa e colorida diretamente no terminal.

Objetivo
O principal objetivo deste projeto foi construir uma aplicação robusta e bem estruturada, aplicando os princípios da Programação Orientada a Objetos (POO) e boas práticas de desenvolvimento de software. A aplicação serve como uma demonstração prática da transição de um script procedural para uma arquitetura de software modular, escalável e de fácil manutenção, ideal para demonstrar competências em design de software.

Funcionalidades Principais
Cadastro de Restaurantes: Adiciona novos restaurantes ao sistema, coletando informações como nome, telefone, tipo de comida, horários e métodos de pagamento.

Listagem Completa: Exibe todos os restaurantes cadastrados em uma tabela formatada e de fácil leitura, ordenada alfabeticamente.

Busca Inteligente: Permite ao usuário buscar por um restaurante específico digitando parte do seu nome.

Alteração de Status: Modifica o status de um restaurante entre "Ativo" e "Inativo", uma funcionalidade crucial para o controle operacional.

Modificação e Exclusão: Permite a edição de informações (como o telefone) e a remoção completa de um restaurante do sistema de forma segura, com confirmação do usuário.

Interface Interativa: Utiliza a biblioteca colorama para fornecer feedback visual ao usuário, com cores para mensagens de sucesso, erro e títulos, melhorando a experiência de uso no console.

Validação de Dados: Garante a integridade dos dados através de regras de validação estritas, como a exigência de que números de telefone contenham exatamente 11 dígitos.

Conceitos e Tecnologias Aplicadas
Esta aplicação foi construída utilizando uma série de conceitos e recursos fundamentais e modernos da linguagem Python.

  1. Arquitetura e Design de Software
    Programação Orientada a Objetos (POO): A base da aplicação. O código foi estruturado em quatro classes distintas, cada uma com uma responsabilidade clara:

Restaurante: Classe de modelo que representa a estrutura de dados de um restaurante.

GerenciadorRestaurantes: Classe de serviço que encapsula toda a lógica de negócio (adicionar, listar, buscar, remover).

UI: Classe de apresentação que lida com toda a interação com o usuário (exibir menus, obter inputs, formatar tabelas).

App: Classe principal que orquestra o fluxo da aplicação, integrando as outras classes.

Princípio da Responsabilidade Única (SRP): Cada classe tem um e apenas um motivo para mudar, tornando o código mais desacoplado e fácil de manter.

Separação de Camadas (Layering): O projeto distingue claramente a camada de Apresentação (UI), da camada de Lógica de Negócios (GerenciadorRestaurantes) e da camada de Modelo de Dados (Restaurante).

  1. Recursos da Linguagem Python
    Classes e Objetos: Utilização extensiva para modelar o domínio do problema.

Estruturas de Dados: Uso de Listas (List) e Dicionários (Dict) para armazenamento e manipulação de dados em memória.

Type Hinting: Adição de dicas de tipo (nome: str -> Optional[Restaurante]) para aumentar a clareza, a robustez e facilitar a depuração.

Properties (@property): Usado na classe Restaurante para criar atributos computados de forma elegante (ex: status_formatado).

Módulos da Biblioteca Padrão:

os: Para limpar a tela do console (os.system).

re: Para validação de dados com Expressões Regulares (Regex) no número de telefone e horário de funcionamento.

datetime: Para registrar a data de cadastro de cada restaurante.

logging: Para registrar eventos importantes da aplicação, como cadastros, erros e encerramento.

  1. Bibliotecas Externas
    colorama: Para criar uma interface de linha de comando mais rica e amigável, fornecendo feedback colorido ao usuário.
1 resposta

Olá, Marinaldo! Como vai?

Muito bem! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Observei que você explorou o uso da Programação Orientada a Objetos (POO) para estruturar a aplicação de forma modular, utilizou muito bem o princípio da responsabilidade única para organizar as classes com clareza e ainda compreendeu a importância do uso de bibliotecas externas como colorama para melhorar a experiência do usuário no terminal.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!