O catalogo de princípios GRASP (General Responsibility Assignment Software Principles), consiste em orientações para a construção de bons softwares usando programação orientada a objetos.
Assim como os padrões SOLID, o GRASP foi criado com o intuito de tornar o código mais flexível, facilitando a manutenção e a extensibilidade.
Objetivos do GRASP
Os princípios responde a um problema comum no desenvolvimento de software. Esses princípios não têm como objetivo criar novas formas de trabalhar, mas sim, busca documentar e padronizar fundamentos de desenvolvimento de software amplamente experimentados.
Craig Larman disse em seu livro, “A parte crítica do desenvolvimento de software é ter uma mente bem educada para os princípios de Design, sem isso UML ou qualquer outra tecnologia torna-se irrelevante“.
Esses princípios de baseiam fundamentalmente nos três conceitos mais básicos do Orientação a Objetos:
Encapsulamento, todo objeto não deve expor seus detalhes implementação.
Abstração, devemos programar tendo em mente a abstração com a qual estamos lidando, e não para a sua implementação.
Polimorfismo, cada objeto deve ser capaz de assumir diferentes papéis de acordo com o contexto no qual está inserido.
O Catálogo GRASP
Controller, este princípio atribui a responsabilidade por lidar com eventos do sistema a uma classe que não esteja relacionada a interface com o usuário.
Creator, este princípio determina qual classe deve ser responsável pela criação certos objetos.
Alta Coesão, este princípio determina que as classes devem se focar apenas na sua responsabilidade.
Indireção, este princípio ajuda a manter o baixo acoplamento, através de delegação de responsabilidades através de um classe mediadora.
Especialista, este princípio determina quando devemos delegar a responsabilidade para um outro objeto que seja especialista naquele domínio.
Baixo Acoplamento, determina que as classes não devem depender de objetos concretos e sim de abstrações, permitindo que haja mudanças sem impacto.
Polimorfismo, as responsabilidade devem ser atribuídas a abstrações e não a objetos concretos, permitindo que eles possam variar conforme a necessidade.
Proteção contra Variações, este princípio protege o sistema com a variação de componentes, encapsulando o comportamento que realmente importa.
Pura Fabricação, é uma classe que não representa nenhum conceito no domínio do problema, ela apenas funciona como um classe prestadora de serviços, e é projeto para que possamos ter uma baixo acoplamento e alta coesão no sistema.
Conclusão
Os princípios GRASP funcionam como complemento aos princípios SOLID, sendo que muitos conceitos se repetem nos dois catálogos. O GRASP é altamente recomendado pelos melhores desenvolvedores de software. Suas técnicas foram amplamente utilizadas e aperfeiçoadas ao longo dos anos que que garante que elas possuem um alto nível de conhecimento intrínseco.
Até a próxima.