# OOD Principles | SOLID

Object Oriented Programming paradigm deals with centralizing data and associated behaviours in a single entity. The entities will communicate by message passing.

The high level languages like C++, Java, C#, etc… provide rich features in designing applications. One can learn the language constructs easily. However, few design principles guide the programmer for better utilization of language features. The following principles help programmer to arrive at flexible class design.

- Single Responsibility Principle
- Open Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle

All the above five principles are collectively called as SOLID principles. We will have detailed explanation of each principle.

*Note that there are few more principles that will be useful in OOD. We will expand the post when respective principles are published (We are sorry, at present the post is a moving target).*

Contributed by **Venki**. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

## Recommended Posts:

- Principles Of Animation
- Dependency Inversion Principle (SOLID)
- Shortest path in a complement graph
- Count number of Unique Triangles using Operator overloading
- Introduction of BlueJ
- Sorting algorithm visualization : Insertion Sort
- Fast Doubling method to find the Nth Fibonacci number
- Count number of ways to convert string S to T by performing K cyclic shifts
- Find the next greater element in a Circular Array
- Unique subsequences of length K with given sum
- Kth smallest or largest element in unsorted Array | Set 4
- Total number of cells covered in a matrix after D days
- Sum of absolute difference of all pairs raised to power K
- Sorting Algorithm Visualization : Quick Sort