Chapter 1. Design Concepts

Alan Kay’s favorite metaphor for software objects is a biological system. Like cells, software objects don’t know what goes on inside one another, but they communicate and work together to perform complex tasks. In contrast, monolithic software is like a mechanical clock containing innumerable gears. Each gear functions unintelligently and only in relation to other adjacent gears. That design is hopelessly flawed. “When you’re building gear clocks, eventually you reach a certain level of complexity and it falls in on itself,” says Kay.

A software object may be machinelike, but, crafted by a thoughtful designer, it can be very smart. It makes decisions; it does things and knows things. It collaborates with potentially ...

Get Object Design: Roles, Responsibilities, and Collaborations now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.