Do you like reeding books? Full review of different kinds of books: technical, fantasy, fiction, etc.

Let's jump in the books world

Introduction into GRASP Design Principles

grasp paperback title

No one seems to argue with the statement that the knowledge of Design Patterns are incredibly important for each software developer. They give us a standard language to communicate with, offer valuable conceptual abstractions that we can use in a wide set of circumstances solving common problems, and which is also important to give us confidence during the interview.

Today I wanna start to tell you about a set of design principles called GRASP.

GRASP is the abbreviation of General Responsibility Assignment Software Patterns. They were first published by Craig Larman in his book Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development in 1997.

diagram

At the heart of everything is the OOP programming paradigm with its basic principles - inheritance, polymorphism, and encapsulation. This is a general abstraction. Descending through different levels of abstraction, we gradually move on to solving practical problems with the help of specific design patterns. The lower we go, the less abstraction and more practice.

OOP tells us that the whole system consists of objects that interact with each other. The three principles of OOP help us understand how they interact and how they are constructed. GRASP templates impose some restrictions on objects to make them convenient to use. And GoF templates show how to solve typical problems that we encounter in our daily work process. Thus, GRASP is an intermediate layer that lies between the pure abstraction of the OOP programming paradigm and the applied programming patterns of Gangs of Four.

Craig Larman discovered, systematized and gave a general name to the most general groups of problems. Thus, we can use the same terminology and rely on the same principles of building an OOP system.

There are nine of these principles so what I'm going to do today I will make an overview of those principles without diving in details but later in the next articles I'll show you how each of them works in detail. By understanding these principles, you'll be able to write better OOP code that is easier to maintain and extend.

  • Information Expert
  • Creator
  • High Cohesion
  • Low Coupling
  • Controller
  • Polymorphism
  • Pure Fabrication
  • Indirection
  • Protected Variations

The general meaning is a maximum of code reuse, a minimum of copy paste code.

Buy me a cup of coffee 😉

PayPal: s.minlevskiy@gmail.com

Berlin relocation Guide

How to receive a German Tax number, open bank account, apply for a Blue Card, setup German health insurance? What additional insurance do you need? How to get a local phone number? Many more is covered!

Learn more...

Serhii's blog. My thoughts about life and IT.

Please, write me: mydevthoughts@gmail.com