OO Design Principles

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

Package Design

This list will be continuously updated to reflect the design principles covered.

Technorati tags: , ,

Copyright Abhijit Nadgouda.

Discussion [Participate or Link]

  1. Abhijit Nadgouda @ iface » Blog Archive » Simplification Using Abstraction said:

    […] OO Design Principles […]

  2. Abhijit Nadgouda @ iface » Blog Archive » From Paper To Web said:

    […] 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. […]

  3. Radhika & Bhushan said:

    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.

  4. Abhijit Nadgouda said:

    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.

  5. Liskov Substitution Principle on iface thoughts said:

    […] Search « Easy Or Cheap Blog Traffic? | OO Design Principles » March 23rd, 2006 […]

  6. Simplification Using Abstraction on iface thoughts said:

    […] All the Object Oriented Design Principles hover around the use of abstraction in software design for reusability and flexibility. However, the underlying implicit advantage of abstraction is simplification. Reusability and flexibility are not possible only unless the issue at hand can be understood and simplified, and abstraction is the way to do it. […]

  7. Transparency And Abstraction on iface thoughts said:

    […] Bill Higgins brings up the tension between transparency and abstraction. Abstraction has been beneficial for software development, in fact it is at the heart of the design principles. […]

  8. The FizzBuzz Fizz And Weak Programmers on iface thoughts said:

    […] as C++, Java, Ruby, PHP or any OOP language programmers. Only 1 in 20 candidates knew about the Design Principles, and only 2-3 had heard about them with their own misconceptions about it. This is not only about […]

  9. It Is Difficult To Teach OOP on iface thoughts said:

    […] less is more paradigm. The other problem, as I had mentioned earlier, is lack of knowledge of the design principles. Reading thoughts of experienced programmer can also help a lot, especially if they are some of the […]

  10. Is UML Good Enough? | iface thoughts said:

    […] to convey the semantics or to indicate if the design is appropriate, e.g., whether it follows the design principles. This is a limitation of being a language. The semantics are not part of it, only the grammar is. […]

  11. days out said:

    days out…

    cool great work , keep it up…

  12. Responsibility, Knowledge And Authority | iface thoughts said:

    […] why they can be used effectively to know before time if the design has holes. Of course we have the design principles to guide us, but I believe this new perspective can come in much earlier, even before software […]

  13. Stable Abstractions Principle | iface thoughts said:

    […] Back to Design Principles. […]

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.



Abhijit Nadgouda
iface Consulting
+91 9819820312
My bookmarks


This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.