# GRASPS
# Histórico de Versão
Data | Autor(es) | Descrição | Versão |
---|---|---|---|
26/10/2020 | Caio César Beleza(Caiocbeleza) | Adicionando introdução GRASPS | 0.1 |
26/10/2020 | Cauê(caue96) | Adicionando pontos do código de aplicação dos padrões GRASP(s) | 0.2 |
15/11/2020 | Lucas Midlhey(lucasmidlhey) | justificativas e reflexoes do grupo | 0.3 |
# Introdução
Os padrões GRASPS foram criados com o intuito de tornar o código mais flexível, facilitando a manutenção e a extensibilidade.
A sigla GRASPS vem de "General Responsibility Assignment Software Patterns", eles consistem em uma série de princípios baseados em conceitos para atribuição de responsabilidades a classes e objetos na construção de bons softwares usando programação orientada a objetos.
# GRASPS aplicados no projeto (QRodízio)
- Information Expert(Especialista de informação): Determina quando devemos delegar a responsabilidade para um outro objeto que seja especialista naquele domínio.
- A classe Menu é especialista da classe Item;
- A classe TableSession é especialista da classe "Conta", classe essa que ainda não foi implementada;
- A classe "Conta", que ainda não foi implementada, é especialista da classe Demand.
De forma muito simples nos implementamos o modelo de especialista sem um conhecimento profunda e quando estudado sobre foi percebemos as vantagens em utilizar, tais como, conhecer as responsabilidades por objetos, metodos e campos cumputados.
- Creator(Criador): Determina qual classe deve ser responsável pela criação certos objetos.
A criação de objetos por outra classe é a forma mais clara de orientação a objetos, devido a isso pudemos evidenciar neste Criador que as instancias em Payment contem, agregam e as instancias de User, provando o uso do GRASP criador.
- Polimorfism(Polimorfismo): As responsabilidades devem ser atribuídas a abstrações e não a objetos concretos, permitindo que eles possam variar conforme a necessidade.
- A função de notificação, ainda não implementada, utilizará do polimorfismos para envio de mensagens tanto para usuários quanto para funcionários que irá variar de acordo com o que se deseja. Exemplo: a mesma função retornará mensagens diferentes para quando o usuário fizer um pedido, para quando um usuário fechar a conta, para quando o usuário pagar a conta, etc, sempre mostrando diferentes mensagens a depender de onde a requisição venha.
Analisando a função do polimorfismo é possível perceber o quanto é necessário para um software que possui inúmeras rotas e classes, podendo criar apenas um objeto mudando seu paramento analisando sua necessidade, fizemos disso um padrão mais utilizado em nosso sistema.
# Referências
- MEDIUM. Padrões GRASP — Padrões de Atribuir Responsabilidades. Disponível em: https://medium.com/@leandrovboas/padr%C3%B5es-grasp-padr%C3%B5es-de-atribuir-responsabilidades-1ae4351eb204 . Acesso em: 26 de outubro. 2020.
- DEVMEDIA. Desenvolvimento com qualidade com GRASP. https://www.devmedia.com.br/desenvolvimento-com-qualidade-com-grasp/28704 . Acesso em: 26 de outubro. 2020.