0% acharam este documento útil (0 voto)
49 visualizações5 páginas

Princípios GRASP

Os princípios GRASP (General Responsibility Assignment Software Patterns) orientam a designação de responsabilidades na Programação Orientada a Objetos, promovendo um design de software flexível e de fácil manutenção. O documento detalha nove princípios, como Creator, Controller e Low Coupling, que ajudam a minimizar dependências e a garantir coesão. A aplicação desses princípios resulta em um código modular e reutilizável.

Enviado por

Eduardo Paka
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
49 visualizações5 páginas

Princípios GRASP

Os princípios GRASP (General Responsibility Assignment Software Patterns) orientam a designação de responsabilidades na Programação Orientada a Objetos, promovendo um design de software flexível e de fácil manutenção. O documento detalha nove princípios, como Creator, Controller e Low Coupling, que ajudam a minimizar dependências e a garantir coesão. A aplicação desses princípios resulta em um código modular e reutilizável.

Enviado por

Eduardo Paka
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

# 📘 Guia dos Princípios GRASP (General

Responsibility Assignment Software Patterns)


🎯 Objetivo
Os princípios GRASP (General Responsibility Assignment Software Patterns) ajudam na
designação de responsabilidades dentro da Programação Orientada a Objetos (POO). Este
documento descreve cada princípio e sua importância para um design de software flexível,
reutilizável e de fácil manutenção.

🔄 Os 9 Princípios do GRASP

1⃣ Creator (Criador)
Definição: Determina quem é responsável por criar um objeto. Uma classe deve criar um objeto se
ela conter, usar ou controlar seus dados.

✅ Boas práticas:
- A classe que agrega outra deve ser responsável por criá-la.
- A criação deve ser delegada a uma classe que já interage com o objeto criado.

📌 Exemplo:

Neste caso, a classe Pedido cria e gerencia a lista de itens.

2⃣ Controller (Controlador)
📌 Definição: Uma classe deve controlar o fluxo de dados entre a interface e a lógica de negócios.

✅ Boas práticas:
- Criar um controlador para gerenciar interações do utilizador.
- Separar a lógica de negócios da interface gráfica.
📌 Exemplo:

A classe PedidoController gerencia as ações do utilizador no sistema.

3⃣ Information Expert (Especialista em Informação)


📌 Definição: Atribuir responsabilidades à classe que possui os dados necessários para realizá-las.

✅ Boas práticas:
- A classe deve manipular apenas os dados que ela possui.
- Evitar que outras classes acessem informações que não pertencem a elas.

📌 Exemplo:

O cálculo do total do pedido fica dentro da classe `Pedido`, pois ela contém os itens necessários
para a operação.

4⃣ Low Coupling (Baixo Acoplamento)


📌 Definição: Minimiza a dependência entre classes para que alterações em uma não impactem
diretamente as outras.

✅ Boas práticas:
- Reduzir o número de dependências diretas entre classes.
- Criar interfaces para reduzir acoplamento.
📌 Exemplo:

A classe Cliente não depende diretamente de outras classes, tornando o código mais modular.

5⃣ High Cohesion (Alta Coesão)


📌 Definição: Garante que uma classe tenha um único propósito bem definido.

✅ Boas práticas:
- Separar responsabilidades em classes menores e especializadas.
- Evitar classes que fazem muitas coisas ao mesmo tempo.

📌 Exemplo:

A classe RelatorioVendas se concentra apenas na geração de relatórios.

6⃣ Polymorphism (Polimorfismo)
📌 Definição: Permite que diferentes classes implementem métodos de forma única, sem precisar
de verificações explícitas.

✅ Boas práticas:
- Usar herança e interfaces para evitar `if`/`switch` desnecessários.
📌 Exemplo:

7⃣ Pure Fabrication (Fabricação Pura)


📌 Definição: Criação de classes auxiliares que não pertencem ao domínio, mas ajudam a organizar
o código.

✅ Boas práticas:
- Criar classes de serviço para centralizar funcionalidades auxiliares.

📌 Exemplo:

A classe LogSistema centraliza a lógica de logging do sistema.

8⃣ Indirection (Indireção)
📌 Definição: Adiciona camadas intermediárias para reduzir dependências diretas entre classes.

✅ Boas práticas:
- Criar classes intermediárias para comunicação entre sistemas.
📌 Exemplo:

A classe ServicoPagamento atua como intermediária entre diferentes métodos de pagamento.

9⃣ Protected Variations (Variações Protegidas)


📌 Definição: Define pontos de extensão no sistema para evitar que mudanças futuras causem
grandes impactos.

✅ Boas práticas:
- Criar interfaces e classes abstratas para facilitar mudanças.

📌 Exemplo:

A classe `BancoDados` define um contrato que diferentes implementações podem seguir.

📜 Conclusão
Os princípios GRASP são fundamentais para criar software com boas práticas de design,
reduzindo o acoplamento e aumentando a coesão. Eles ajudam a garantir um código modular,
reutilizável e de fácil manutenção. 🚀

Você também pode gostar