# OOP Design & Responsibility **Track:** Objects, Data Structures & Algorithms — Creative Coding — the existing 50 **Framework / surface:** p5.js **Level:** Intermediate **Prerequisites:** Arrays of Objects **In one line:** Give each class one clear job. ## Theory, aesthetics & inspiration Good design assigns each class one clear responsibility, so that a change in one concern touches one place. The principle traces to Edsger Dijkstra's "separation of concerns" and to Niklaus Wirth's stepwise refinement, and is codified in Robert C. Martin's single-responsibility principle and the "Design Patterns" catalog of Gamma, Helm, Johnson, and Vlissides. Structure here is not bureaucracy but legibility: when a Renderer draws and a Physics object moves, each can be read, tested, and reused alone. For the coding artist, clean decomposition is an aesthetic of clarity—the same instinct that separates figure from ground, letting a system grow without collapsing into entanglement.