```
+----------------+ +--------------------+ | B ehaviour | | ctor for structure | | D riven | | Load for data | | D evelopment | +--------------------+ | G iven | | W hen | +---------------------+ | T hen | | prefer aggregation¹ | +----------------+ | to inheritance² | | | +-----+ +--------------+ | ¹"has a" ²"is a" | | DRY | | defensive | +---------------------+ +-----+ | programming | +--------------+ +------------------------+ | S ingle responsibility | +-----------------------------+ | O pen closed | | Encapsulation Polymorphism | | L iskov substitution | | \ / | | I nterface segregation | | +-----+ | | D ependency inversion | | | OOP | | +------------------------+ | +-----+ | | / \ | +-------------+ | Inheritance Abstraction | | new is glue | +-----------------------------+ +-------------+
```