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.