Interface Segregation Principle (ISP)

This is the ‘eye’ of SOLID software design principles.

Definition:

Clients should not be forced to depend on methods that they do not use.

Alternate Definition (s):

The dependency of one class to another one should depend on the smallest possible interface

The idea

Consider two components- which interact with each other. The interaction between the two is defined by the [...]

Open Closed Principle (OCP)

This is one of the most powerful principle of OOP.

The Principle

Simply stated- what this means is- once you are done coding an entity - e.g Class,function etc- you should have no reason to modify it again (…hence closed), but that entity should be available for modification via extensions e.g inheritance or any other smart mechanism [...]

The Liskov Substitution Principle (LSP)

If S is a subtype of T, then objects of type T in a program may be replaced with objects of type S without altering any of the desirable properties of that

Sounds confusing? It sure does to me at least.

Here is an easier version

If you have sub-classed a given class- in that case any program that [...]