This document discusses object oriented design principles. It begins with an introduction and agenda. It then covers several object oriented design principles including the open-closed principle, single responsibility principle, interface segregation principle, Liskov substitution principle, and dependency inversion principle. Examples are provided for each. It also discusses bad designs, anti-patterns, and some "evil stuff" to avoid like singletons. The document concludes with a review of key principles like encapsulation, composition over inheritance, programming to interfaces, and loose coupling.
Related topics: