As we know Object oriented programming is a type of programming paradigm based around programming classes and instances of classes called objects. These can be objects that appear on the screen (e.g., pictures, textboxes, etc.) or are part of the programming (e.g. actors, connections, particles, etc as mentioned in my post http://www.developerscloud.org/2013/02/what-is-oop-basic-concepts.html written ages ago.
Here we are going to extend the oops beyond its four pillars i.e.
- Abstraction
- Encapsulation
- Polymorphism and
- Interfaces i.e. Inheritance
So first we will go through SOLID and then GRASP
SOLID
Principles are principles of class design.
•SRP: Single Responsibility
Principle
–An
object should have only a single responsibility & all the responsibility
should be entirely encapsulated by the class.
–There
should never be more than one reason for a class to change
•OCP: Open/Closed Principle
–Software
entities should be open for extension, but closed for modification
•LSP: Liskov Substituion
Principle
–Objects
in a program should be replaceable with instances of their subtypes without
altering the correctness of that program
•ISP: Interface Segregation
Principle
–many
client specific interfaces are better than one general purpose interface
–once
an interface has gotten too 'fat' split it into smaller and more specific
interfaces so that any clients of the interface will only know about the
methods that pertain to them. No client should be forced to depend on methods
it does not use
•DIP: Dependency Inversion
Principle
–Depend
upon Abstractions. Do not depend upon concretions.
–Dependency
Injection (DI) is one method of following this principle.
GRASP
•Acronym for General Responsibility Assignment Software Patterns.
•Assigning responsibilities to
classes is a critical aspect of object-oriented design.
•Appropriate assignment of
responsibilities to classes is the key to successful design.
•There are fundamental principles
in assigning responsibilities that experienced designers apply.
•These principles are summarized
in the GRASP patterns.
•Has nine core principles that
object-oriented designers apply when assigning responsibilities to classes and
designing message interactions.
Nine Principles:
•Expert.
•Creator.
•Controller.
•Low Coupling.
•High Cohesion.
•Polymorphism.
•Pure Fabrication.
•Indirection.
•Don’t Talk to Strangers.
I think this article is not so great in terms of visualizations but indeed if you read it, it will help you to brush up your concepts and increase your productivity as well...
In Continuation Next Post: http://www.developerscloud.org/2014/09/extending-object-oriented-programming.html
In Continuation Next Post: http://www.developerscloud.org/2014/09/extending-object-oriented-programming.html
Comments
Post a Comment
Important - Make sure to click the Notify Me check-box below the comment to be notified of follow up comments and replies.