This document discusses the five SOLID principles of object-oriented design: single responsibility principle, open-closed principle, Liskov substitution principle, interface segregation principle, and dependency inversion principle. The single responsibility principle states that a class should have one responsibility. The open-closed principle specifies that classes should be open for extension but closed for modification. The Liskov substitution principle indicates that objects should be replaceable with their subtypes without altering program correctness. The interface segregation principle promotes separating general interfaces into specific ones for client needs. Finally, the dependency inversion principle establishes that high-level modules should not depend on low-level ones but instead both should depend on abstractions.