Aula 07 - Padrão MVC na Prática 🏗️
Nesta aula, vamos aprender a separar as responsabilidades do nosso sistema de forma profissional utilizando o padrão MVC (Model-View-Controller).
😊 O que é MVC?
O MVC é um padrão de arquitetura que divide a aplicação em três componentes principais:
- Model (Modelo): Onde os dados vivem. Não conhece a interface nem o banco diretamente.
- View (Visão): A cara do sistema. Botões, campos de texto e janelas.
- Controller (Controle): O cérebro. Escuta os eventos da View e manda o Model agir.
📊 Fluxo de Dados no MVC
sequenceDiagram
participant User
participant View
participant Controller
participant Model
User->>View: Clica no botão "Salvar"
View->>Controller: enviaDados(form)
Controller->>Model: criar(objeto)
Model-->>Controller: Confirmação
Controller-->>View: atualizarTabela()
View-->>User: Mensagem "Sucesso!"
🧠 Separação de Responsabilidades
[!IMPORTANT] A regra de ouro é: A View nunca deve conter lógica de negócio (cálculos, validações complexas, acesso a dados). Ela deve apenas repassar o que o usuário quer para o Controller.
💻 Refatoração para MVC
Imagine que tínhamos tudo em um único arquivo. Agora separamos:
# Antes: Tudo em App.java# Depois:ls src/controller/ # ProdutoController.java
model/ # Produto.java
view/ # Principal.java (JFrame)
model/ # Produto.java
view/ # Principal.java (JFrame)
📝 Exercícios Progressivos
- Básico: Relacione as siglas: M - __, V - _, C - ___.
- Básico: Por que o Controller é chamado de "intermediário"?
- Intermediário: Se eu quiser mudar a cor de um botão, em qual camada devo mexer?
- Intermediário: Se eu mudar a fórmula de cálculo de imposto de um produto, em qual camada devo mexer?
- Desafio: Descreva o que acontece no MVC quando um usuário solicita a exclusão de um registro em uma tabela.
🚀 Mini-projeto: Refatore o mini-projeto da aula anterior (Produto) para que ele utilize o padrão MVC. O Controller deve ser responsável por imprimir os detalhes no console após a ação da "View" (que por enquanto será um método main).