-
Notifications
You must be signed in to change notification settings - Fork 0
TG4
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.
- 🧭 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.
- 🧠 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.
- ✨ 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ê".
- 🎛️ 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.