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:
- 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)
- 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.
Copyright Abhijit Nadgouda.