Five object-oriented design principles: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion. Guide the creation of maintainable, extensible software. (Ch. 24, 25)