GRASP's
Versionamento
Data | Versão | Descrição | Autor(es) |
---|---|---|---|
22/10/2020 | 0.1 | Criação do Documento | Murilo Loiola |
22/10/2020 | 0.2 | Adição do tópico Introdução | Murilo Loiola |
26/10/2020 | 0.3 | Adição de hyperlink para Factory Method | Murilo Loiola |
26/10/2020 | 0.4 | Adição do Especialista | Rodrigo Dadamos |
26/10/2020 | 0.5 | Consertando hyperlinks | Murilo Loiola |
26/10/2020 | 1.0 | Adição do tópico Controladora | Gabriel Tiveron |
Introdução
O GRASP (Padrões de Software para Atribuição de Responsabilidades Gerais, em tradução livre) consiste de diretrizes que ajudam na atribuição de responsabilidades para classes e objetos em design orientado a objeto. O GRASP é constituído por nove padrões ou princípios, sendo eles:
- Especialista;
- Criador;
- Controladora;
- Indireção;
- Baixo acoplamento;
- Polimorfismo;
- Alta Coesão;
- Fabricação própria;
- Variações Protegidas;
Creator
A criação de objetos é uma das atividades mais comuns em um sistema orientado a objetos. Consequentemente, é útil ter um princípio geral para a atribuição de responsabilidades de criação. Sendo essas responsabilidades bem atribuídas, o projeto apresentará acoplamento baixo, mais clareza, encapsulamento e reutilização. Dessa forma, o padrão Criador busca determinar quem deve ser responsável pela criação de uma nova instância de uma classe. No projeto, o princípio Creator pode ser observado nas relações de composição Grupo-Formulário e Formulário-Questão. Nestas relações, a primeira classe, que é composta pela segunda e portanto não pode existir sem ela, é responsável por instanciar objetos da segunda classe, conforme observado no Diagrama de Classes.
Especialista
Quando temos uma relação de composição (todo-parte) entre duas entidades, o padrão criador atribui a responsabilidade de instanciação de partes para a classe todo. Assim, a classe todo é especialista em termos de criação de suas partes. Isso se justifica pois, na relação de composição o todo não existe sem suas partes sendo responsável por intanciar suas partes ao ser ele mesmo instanciado. Ao aplicar o GRASP Criador, o Especialista também foi aplicado no sentido em que o Criador é um Especialista na criação de instâncias.
O GRASP Especialista é um padrão que preocupa-se em atribuir responsabilidades para a entidade mais especialista em um dado aspecto do sistema, não apenas na criação de instâncias. Devemos perguntar quem é a melhor entidade para realizar para realizar determinada responsabilidade recorrente no sistema.
No Diário da Saúde, podemos observar no Diagrama de Classes uma relação de todo-parte entre as classes Grupo e Forms, sendo essa uma relação de composição, pois os formulários compõem os grupos de acompanhamento que não podem existir sem esses formulários, já que a intenção dos grupos é acompanhar o estado de saúde dos pacientes que respondem seus respectivos formulários para indicar sua condição naquele dia.
Controladora
Para obter um controle melhor sobre os formulários que contribuem para o funcionamento íntegro do Diário da Saúde, é necessário que haja a recuperação das questões, bem como respostas, referentes a cada formulário como é definido no Diagrama de Classes. Para isso, implementamos controladoras para distribuir a carga de encontrar resposta do formulário cadastradas no banco de dados, ou seja, cada questão recupera a resposta do formulário relacionada a sí, para então ter o conjunto de respostas do usuário em questão.
Essa aplicação de padrão corrobora para uma maior coesão do projeto e uma menor complexidade para o formulário, visto que não terá que fazer buscas em todas as classes de questões. Esse padrão pôde ser realizado pela utilização do GoF Estrutural que especializou cada tipo de questão existente no projeto, e, dessa forma, as controladoras poderam ser aplicadas para assistir no desempenho de buscas do formulário
Referência
- Craig, L. Utilizando UML e Padrões. Grupo A, 2011. 9788577800476. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788577800476/. Acesso em: 22 Outubro 2020.
- GRASP (object-oriented-design) - Wikipedia. Disponível em: https://en.wikipedia.org/wiki/GRASP_(object-oriented_design). Aceesso em: 22 Outubro 2020.