Five principles for object-oriented programming:
- S: Single Responsibility Principle (SRP) – Each class should have one responsibility or reason to change.
- O: Open/Closed Principle – Classes should be open for extension but closed for modification.
- L: Liskov Substitution Principle – Subtypes must be substitutable for their base types.
- I: Interface Segregation Principle – Use small, specific interfaces instead of a large, general-purpose one.
- D: Dependency Inversion Principle – High-level modules should not depend on low-level modules; both should depend on abstractions.