Aula 6 • Projeto 9 • Sistemas de Informação
Classes, Instâncias e Herança (MVC)

Domine a estrutura de camadas e o padrão MVC em Blazor usando classes, herança e injeção de instâncias.

🏗️ Classes 🔄 Herança 💉 Instâncias 🎯 Blazor MVC
Prof. Afonso Lelis • 2 horas • Janeiro 2026
📋 Agenda da Aula
  • Classes como Base das Camadas do Blazor
  • Instâncias e Injeção de Dependência (Services)
  • O Blazor Component (View) e o Code-Behind
  • Herança em Classes Base (Entities, DTOs e Components)
  • O Fluxo MVC: Da View à Infraestrutura
  • Camada de Domínio e Classes de Negócio (Entidades)
  • O Papel dos DTOs na Transferência de Dados
  • Modelagem UML da Estrutura de Classes do ERP
Por que Arquitetura em Camadas?
A Fundação de Sistemas ERP em Blazor

Separação de Preocupações (SoC)

  • Escalabilidade: Facilita o crescimento e manutenção
  • Testabilidade: Permite testes isolados por componente
  • Reuso: Lógica de negócio compartilhável entre Web/Mobile
  • Interoperabilidade: Camadas conversam via contratos (Interfaces)

As 4 Camadas Clássicas

  • Presentation: Blazor (UI / Componentes)
  • Application: Services (Orquestração / DTOs)
  • Domain: Lógica Pura (Entidades / Negócio)
  • Infrastructure: Dados (EF Core / Repositórios)

📊 Reflexão: Mudar de banco ou interface deve ter impacto zero na lógica de domínio (o coração do ERP).

Classes e Instâncias na Arquitetura
Moldes e Ciclos de Vida no Blazor

Classes (Os Moldes)

Cada camada é composta por classes específicas:

  • Entidades: Classes que representam tabelas
  • Serviços: Classes com lógica de negócio
  • DTOs: Classes para transporte de dados

Instâncias (Os Objetos)

No Blazor, as instâncias são gerenciadas pela Injeção de Dependência:

// Classe (Molde) public class PedidoService { ... } // Instância (Objeto vivo) // O ASP.NET cria para você via @inject @inject PedidoService pedidoService
DTOs vs Entidades de Domínio
Protegendo o Coração do ERP

Entidades (Domain)

  • Regras de Negócio: Lógica central do sistema
  • Persistência: Mapeadas ao banco (via EF)
  • Integridade: Validações complexas

DTOs (Application)

  • Transferência: Dados "achatados" para a View
  • Segurança: Oculta campos sensíveis (senhas, etc)
  • Performance: Somente o necessário para o Blazor

💡 Dica: Jamais exponha Entidades diretamente na View. Use Mappers (como AutoMapper) para converter entre Entidade e DTO.

Injeção de Dependência (DI)
O Elo da Arquitetura Blazor

O Papel da DI

  • Acoplamento: Reduz dependências diretas
  • Flexibilidade: Troca de implementações fácil
  • Vida (Lifetimes): Singleton, Scoped, Transient

Implementação Blazor

// Program.cs builder.Services.AddScoped<IProdutoService, ProdutoService>(); // Componente Razor @inject IProdutoService ProdutoService // Classe de Serviço public class ProdutoService : IProdutoService { private readonly IRepository<Produto> _repository; public ProdutoService(IRepository<Produto> repo) => _repository = repo; }
Diagrama de Classes: O Padrão MVC
Herança e Associações entre Componentes e Serviços
ComponentBase (do Blazor) ProdutoLista.razor - produtos: List<DTO> + OnInitializedAsync() <<interface>> IProdutoService ProdutoService + ObterTodos() usa (DI) ProdutoDTO + Nome, Preco Produto (Entity) - db_id: int + ValidarNegocio() retorna mapeia de

💡 Nota: Observe a Herança (triângulo branco) do ComponentBase e a Realização (linha tracejada) da interface IProdutoService.

O Fluxo de uma Requisição
Arquitetura em Camadas na Prática

Passo a Passo

  1. View: Componente Blazor dispara evento (clique em salvar)
  2. Application: Serviço recebe DTO e valida permissões
  3. Domain: Serviço orquestra Entidade e regras de negócio
  4. Infrastructure: Repositório persiste a Entidade no BD

Diagrama de Sequência Simplificado

View Service Domain DB
Herança na Arquitetura ERP
Reuso e Especialização em Camadas

Classes Base (BaseClasses)

A herança é o pilar para padronização:

  • EntityBase: Id, DataCriacao, Status
  • ServiceBase: Logs, Validações comuns
  • ComponentBase: Layout, Mensagens de UI

Exemplo em Blazor

public abstract class EntityBase { public int Id { get; set; } } public class Produto : EntityBase { public string Nome { get; set; } } // Produto herda 'Id' de EntityBase
Estrutura de Projetos (Solution)
Como Organizar os Arquivos no Mundo Real

Projetos da Solution

  • SeuProjeto.Web (Blazor)
  • SeuProjeto.Application (Services/DTOs)
  • SeuProjeto.Domain (Entities/Interfaces)
  • SeuProjeto.Infra (DB Context/Repos)
  • SeuProjeto.Shared (Utilidades)

Boas Práticas

  • Referencie apenas o necessário
  • Use CancellationToken em chamadas async
  • Mantenha as Entidades "magras"
  • Trate erros na Camada de Aplicação
Atividade de Sala
Modelagem de Classes e Herança no ERP

Cenário: Módulo de Cadastro de Fornecedores

Em grupos, desenhem a estrutura seguindo as 4 camadas, focando em POO:

  • Definam uma Classe Base para as Entidades do sistema.
  • Criem a Classe Fornecedor herdando desta base.
  • Identifiquem onde haverá uma Instância (Service) no Componente Blazor.
  • Esboçem o diagrama de classes UML conectando essas partes.
Dúvidas?
Próxima Aula: Implementando a Camada de Domínio