Princípios GRASP Flashcards

1
Q

Os principais princípios GRASP são:

A
  • Criador (Creator);
  • Especialista na Informação (Information Expert);
  • Controlador (Controller);
  • Polimorfismo (Polymorphism);
  • Alta Coesão (High Cohesion);
  • Baixo Acoplamento (Low Coupling);
  • Variações Protegidas (Protected Variations);
  • Indireção (Indirection);
  • Fabricação/Invenção Pura (Pure Fabrication).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
1
Q

Os princípio GRASP (General Responsibility Assignement Software Patterns):

A

São um conjunto de padrões de design e heurísticas para atribuição de responsabilidades em classes e objetos durante o desenvolvimento de software orientado a objetos.
- Os princípios GRASP ajudam os desenvolvedores a tomar decisões de design consistentes e coerentes, visando criar um software mais robusto, flexível e fácil de manter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Criador (Creator):

A

Atribui a responsabilidade de criar uma instância de uma classe a uma classe relacionada que tem conhecimento detalhado ou utiliza frequentemente a classe a ser instanciada.
- Exemplo: Uma classe “Pedido” que cria e gerencia instâncias de uma classe “ItemPedido”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Especialista na Informação (Information Expert):

A

Atribui responsabilidades a classes que possuem as informações necessárias para executar determinada tarefa ou tomar decisões.
- Exemplo: Uma classe “Funcionario” que possui informações sobre salário e pode calcular o salário líquido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Controlador (Controller):

A

Atribui a responsabilidade de lidar com eventos do sistema e coordenar o fluxo entre objetos a uma classe que representa uma entidade do domínio ou um subsistema de alto nível.
- Exemplo: Uma classe “GerenciadorDePedidos” que coordena a criação e atualização de pedidos entre outras classes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Polimorfismo (Polymorphism):

A

Atribui responsabilidades a classes abstratas ou interfaces, permitindo que diferentes implementações sejam usadas de forma intercambiável.
- Exemplo: Uma classe abstrata “Animal” com subclasses “Cachorro”, “Gato” e “Pássaro”, cada uma com sua própria implementação do método “emitirSom”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Alta Coesão (High Cohesion):

A

Mantém as classes e objetos focados e com um propósito bem definido, evitando responsabilidades não relacionadas.
- Isso resulta em um código mais fácil de entender, manter e reutilizar.
- Exemplo: Separar a lógica de processamento de pagamentos em uma classe “ProcessadorDePagamentos” e a lógica de gerenciamento de produtos em uma classe “GerenciadorDeProdutos”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Baixo Acoplamento (Low Coupling):

A

Reduz as dependências entre classes e objetos, tornando o código mais flexível e menos propenso a erros.
- Exemplo: Usar interfaces ou classes abstratas para definir dependências entre classes em vez de depender diretamente das implementações concretas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Variações Protegidas (Protected Variations):

A

Protege as partes instáveis do código, isolando-as em classes e interfacesseparadas, de modo que as alterações em uma parte do código não afetem outras partes.
- Exemplo: Definir uma interface “RepositorioDeDados” que pode ser implementada por diferentes classes de acesso a dados, como “RepositorioDeDadosMySQL” e “RepositorioDeDadosMongoDB”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Indireção (Indirection):

A

Introduz um intermediário entre classes e objetos que interagem entre si, permitindo que as interações sejam modificadas sem afetar as classes envolvidas.
- Exemplo: Usar um padrão de design como o “Mediator” para coordenar a comunicação entre várias classes, em vez de permitir que elas interajam diretamente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Fabricação/Invenção Pura (Pure Fabrication):

A

Cria classes artificiais que não representam diretamente conceitos do domínio, mas são necessárias para garantir uma arquitetura limpa e bem organizada.
- Exemplo: Criar uma classe “GerenciadorDeCache” que lida com o armazenamento e recuperação de dados em cache, mesmo que o cache não seja um conceito do domínio do problema.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly