Skip to content
peehs2004 edited this page Nov 16, 2025 · 1 revision

Padrões GRASP: A Lógica por Trás do Design do SGOM (Sistema de gerenciamento de oficina mecânica) Na etapa de design, usamos os princípios GRASP para decidir qual classe seria responsável por qual tarefa. O objetivo é criar um sistema onde as responsabilidades estão bem distribuídas, tornando o código mais flexível, fácil de testar e simples de entender.

  1. 🧭 O Ponto de Entrada: Controlador (Controller) Onde Usamos: Classe RegistroLancamentoControlador.

O Que Faz: O Controlador atua como o "Gerente de Tráfego" do Caso de Uso "Registrar Lançamentos na OS". Ele é a primeira classe que recebe o comando do Mecânico (através da tela).

Por Que Funciona: Se a tela fosse responsável por verificar o estoque, o código ficaria "poluído". Ao centralizar a coordenação no Controlador, garantimos que a interface do usuário fique limpa e que a lógica de negócio esteja em um único lugar fácil de encontrar e modificar.

  1. 🧠 Quem Sabe, Faz: Especialista em Informação (Information Expert) Onde Usamos: Classes Estoque e Peca.

O Que Faz: Este é o princípio mais fundamental: a responsabilidade é dada à classe que possui todos os dados necessários para realizar a tarefa.

Estoque: É a única que conhece a quantidadeAtual. Por isso, ela é a especialista para a operação darBaixa(qtde). O Controlador não precisa saber como o estoque funciona, apenas pede à classe Estoque para fazer a baixa.

Peca: É a especialista em fornecer seu próprio precoVenda.

Por Que Funciona: Minimiza a necessidade de "pedir emprestado" dados de outras classes, mantendo as responsabilidades junto aos dados que elas gerenciam.

  1. ✨ O Organizador: Criador (Creator) Onde Usamos: Classe OrdemDeServico.

O Que Faz: A classe OrdemDeServico recebeu a responsabilidade de criar o objeto ItemDeServico.

Por Que Funciona: A regra do Criador diz que um objeto deve criar outro se ele o contiver (ou agregá-lo). Como uma OS é a "mãe" que lista todos os itens (peças e mão de obra), faz todo o sentido que ela seja a responsável por criar seus itens de linha. Isso simplifica o trabalho do Controlador, que apenas diz à OS: "Crie este novo item para você".

  1. 🎛️ Qualidade Estrutural: Coesão e Acoplamento Estes padrões garantem que o sistema seja robusto:

Alta Coesão (High Cohesion): As responsabilidades de cada classe são focadas. Por exemplo, a OrdemDeServico cuida apenas do seu status e da lista de itens; ela não tenta saber como o estoque funciona. Isso significa que as classes são pequenas, focadas e fáceis de testar isoladamente.

Baixo Acoplamento (Low Coupling): Reduzimos as dependências desnecessárias. A TelaLançamentoOS não chama a Estoque diretamente. Ela se comunica apenas com o RegistroLancamentoControlador. Se mudarmos a forma como o estoque é gerenciado, a interface não é afetada. Isso torna o sistema flexível e resiliente a mudanças.

image

Clone this wiki locally