There are five basic principles of object oriented programming and design. The intention is that the developer will create a system that is easy to maintain and extend over time. It is part of agile and Adaptive Software Development.
- S – Single responsibility principle
a class should have only a single responsibility
- Open/Closed principle
software entities should be open for extension, but closed for modification
- Liskov substitution principle
objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program
(Barbara Liskov is an american computer scientist)
- Interface segregation principle
many client-specific interfaces are better than one general-purpose interface
- Dependency inversion principle
one should “Depend upon Abstractions. Do not depend upon concretions.