In object-oriented analysis, we seek to model the world by identifying the classes and objects that form the vocabulary of the problem domain, and in object-oriented design, we invent the abstractions and mechanisms that provide the behavior that this model requires.

— Grady Booch, Object-Oriented Design: With Applications (1991)

Topics: software design