Mapa mental
Padrões Grasp

Conteúdo do mapa
Padrões Grasp
Características
- GRASP é acrônimo de General Responsability Assignment Software Patterns (ou Principles)
- To Grasp = Significa tomar, agarrar, apreender, captar, aferrar, pegar de súbito
- Padrões Grasp descrevem princípios fundamentais de desenho orientado a objetos e definição de responsabilidades, expressos em padrões
- Esse nome foi escolhido com o intuito de sugerir a importância de agarrar ou captar esses princípios para desenhar projetos de software orientados a objetos da melhor forma possível
- 9 padrões = 5 padrões básicos + 4 padrões avançados
- Conjunto de práticas que descrevem os princípios fundamentais de atribuição e de responsabilidade a objetos, expressas na forma de padrões
- Ajuda a compreender melhor a utilização da orientação a objetos em projetos complexos
- A qualidade de um projeto orientado a objetos está fortemente relacionada à distribuição de responsabilidades
- Conhecimento (Knowing)
- Refere-se à distribuição das características do sistema entre as classes
- Inferidas a partir do modelo conceitual, i.e., são atributos e relacionamentos
- Realização (Doing)
- Refere-se à distribuição do comportamento do sistema entre as classes
- Realizadas por um único método ou uma coleção de métodos trabalhando em conjunto
- Os Diagramas de Interação são bastante utilizados para representar responsabilidades
- Conhecimento (Knowing)
- GRASP é acrônimo de General Responsability Assignment Software Patterns (ou Principles)
Padrões GOF x Padrões Grasp
- Padrões GOF: Exploram soluções de projeto mais específicas
- Padrões Grasp: Refletem práticas mais pontuais da aplicação de técnicas orientadas a objetos
Padrões básicos
- Information Expert (Expert)
- Utilizado para determinar para quem delegar as responsabilidades
- Essas responsabilidades incluem métodos, campos calculados, etc
- Deve-se atribuir a responsabilidade ao especialista da informação, isto é., a classe que possui a informação necessária para satisfazer essa responsabilidade
- Creator
- A criação de objetos é uma das atividades mais comuns em sistemas orientados a objetos
- Esse padrão é responsável por criar objetos de classes possuindo a responsabilidade unívoca pela criação de uma nova instância de uma classe
- High Cohesion
- Busca manter objetos apropriadamente focados, gerenciáveis e compreensíveis
- Geralmente é utilizado para suportar o baixo acoplamento, enfatizando que as responsabilidades de um dado elemento são fortemente relacionadas e altamente focadas
- Coesão é a divisão de responsabilidades
- Low Coupling
- Responsável por ditar como atribuir responsabilidades para apoiar baixa dependência entre classes
- O acoplamento está sempre associado à coesão
- Acoplamento é a dependência entre as partes
- Determina como suportar mudanças em uma classe que tenham baixo impacto em outras classes e maior potencial de reúso
- Responsável por ditar como atribuir responsabilidades para apoiar baixa dependência entre classes
- Controller
- Atribui a responsabilidade de lidar com eventos de sistema a uma classe que não implemente elementos gráficos e represente um sistema completo ou um cenário de caso de uso
- Um objeto Controller não é uma interface com o usuário, trata-se - na verdade - de um objeto responsável por receber e tratar eventos do sistema
- Polymorphism
- Atribui a responsabilidade de definir a variação de comportamentos baseados em tipos aos tipos em que essas variações ocorrem
- Em outras palavras, não se deve utilizar a lógica condicional para decidir qual comportamento será realizado, mas utilizar os próprios tipos
- Pure fabrication
- Apresenta uma classe que não representa um conceito real, mas artificial, no domínio do problema, sendo utilizada para atingir baixo acoplamento, alta coesão e potencial reúso
- Em outras palavras, ela atribui um conjunto altamente coesivo de responsabilidade a uma classe artificial que não representa um conceito do domínio do problema
- Polimorfismo a nível de componentes
- Indirection
- Atribui responsabilidade a um objeto intermediário para mediar as mensagens entre outros componentes ou serviços para que não sejam diretamente acoplados
- Cria uma camada de indireção entre os dois componentes que não mais dependem um do outro, i.e., ambos dependem da indireção
- Protected variations
- Identifica pontos de variação ou instabilidades potenciais e atribui responsabilidades para criar uma interface estável em volta desses pontos
- Protege elementos das variações de outros elementos (objetos, sistemas, subsistemas)
- Envolve o foco de instabilidade em uma interface e usa polimorfismo para criar várias implementações desta interface
- Polimorfismo a nível de classe
- Originalmente chamado "Don't talk to strangers"
- Information Expert (Expert)
Imagens e arquivos do mapa
Informações
- Descrição
- Desenvolvimento de software Mapa Mental sobre Padrões Grasp, criado por Michel Souza em 21-04-2018.
- Criado por
- Michel Souza
- Visualizações
- 0
- Avaliação