Especialização em Sistemas com Python & POO com Type Hints • Capítulo 18
🗺️ Mapa Conceitual do Tópico
flowchart TD
subgraph ARQUITETURA["Arquitetura em Camadas"]
VIEW["Camada de Apresentação (View)"] --> SERVICE["Camada de Serviços (Regras de Negócio)"]
SERVICE --> REPO["Camada de Repositório (DAO / Dados)"]
REPO --> DB["Persistência SQLite / Arquivos"]
end
subgraph QUALIDADE["Garantia de Qualidade & Testes"]
PYTEST["Bateria de Testes: pytest -v"]
COVERAGE["Métricas de Cobertura de Código"]
AUDIT["Relatórios Datados: reports/YYYY-MM-DD_auditoria.json"]
end
SERVICE --> AUDIT
style ARQUITETURA fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style QUALIDADE fill:#ede7f6,stroke:#7e57c2,stroke-width:2px
style AUDIT fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🏗️ 1. Arquitetura em Camadas e Qualidade de Software
- Separação de Responsabilidades (SRP): Cada camada possui um escopo delimitado, facilitando manutenção e testabilidade.
- Testes com Pytest: Framework padrão da indústria para asserções declarativas (
assert a == b), fixtures reutilizáveis e parametrização.
- Auditoria Contínua: Registro imutável de transações e logs estruturados em formato JSON datado (
reports/YYYY-MM-DD_HH-MM-SS_auditoria.json).
💻 Exemplo Prático e Tipado
"""
exemplo_18_arquitetura_testes_e_auditoria.py - Testes com Pytest e Auditoria
"""
from dataclasses import dataclass
from decimal import Decimal
@dataclass(frozen=True, slots=True)
class ItemVenda:
descricao: str
preco: Decimal
quantidade: int
def subtotal(self) -> Decimal:
return self.preco * Decimal(str(self.quantidade))
def test_item_venda_subtotal() -> None:
item = ItemVenda("SSD NVMe", Decimal("450.00"), 2)
assert item.subtotal() == Decimal("900.00")
🔗 Recursos Pedagógicos do Capítulo 18
| Recurso Didático |
Finalidade |
Link de Acesso |
| 📊 Slides de Aula |
Apresentação visual interativa com Dark Mode e suporte a teclado |
Ver Slides |
| 🧠 Quiz Formativo |
Teste interativo de fixação com feedback imediato por alternativa |
Fazer Quiz |
| 💻 Exemplos de Código |
Demonstrações funcionais com Type Hints e saída no console |
Ver Exemplos |
| 🧩 Exercícios em 4 Níveis |
Lista progressiva de fixação com gabarito em bloco colapsável |
Resolver Exercícios |