Object Oriented Programming (OOP) is a methodology for modelling and designing software systems which encompasses the basic concepts of encapsulation, abstraction, inheritance and polymorphism. This methodology is guided by a set of principles, called the Design Principles. These principles show the right direction of designing and helps in avoiding costly mistakes at the designing stage. This project is an effort to document the design principles, their derivatives, associations, examples or even specializations for certain programming languages.
The design principles are not important only from a software design point of view, but also from a business because design principles enable flexible designs, which can evolve with the business requirements with minimum effort, time and cost.
Following are the design principles that have been covered:
Class Design
- Open-Closed Principle (OCP)
- The Law Of Demeter And Object Oriented Programming (LOD)
- Dependency Inversion Principle And Interface (DIP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
Pacakge Design
- Reuse/Release Equivalency Principle (REP)
- Common Reuse Principle (CRP)
- Common Closure Principle (CCP)
- Acyclic Dependencies Principle (ADP)
- Stable Dependencies Principle (SDP)
- Stable Abstractions Principle
This list will be continuously updated to reflect the design principles covered.
Technorati tags: design principle, object oriented, oop
Copyright Abhijit Nadgouda.



















April 29, 2006 at 4:11 pm
[...] OO Design Principles [...]
June 3, 2006 at 9:09 am
[...] However, for this to happen, the journalist has to take explicit action to make sure that the information about external or internal references is provided in the article. In addition to linking to external articles, the journalist can build a thread or series of articles on a subject and provide all the links in a single place, which cannot be done on paper, for example OO Design Principles. [...]
July 7, 2006 at 8:03 am
Sir ,
I’ve a question , I think you can help me . In his book, Martin discusses the Design principles SRP, OCP, LSP, DIP, and ISP. Can you please explain how any three of these apply specifically to **agile** methods more than to **non-agile** methods.
Or all of these apply just as much to non-agile approaches only.
July 7, 2006 at 8:15 am
Hi Radhika & Bhushan,
First of all, don’t address me as sir, call me Abhijit.
The design principles are the basics of Object Oriented design to make it more reusable and flexible. In fact a lot of best practices and design patterns are based on them. So, they are not agile development specific.
However, they fit right in the agile methodologies which demand dynamic response to the business changes.