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

🖥️ Capítulo Anterior 📚 Sumário de Tópicos ♟️ Próximo Capítulo