Composición sobre herencia es un principio de diseño ampliamente citado — favoreciendo la construcción de objetos mediante la combinación de comportamientos (composición) en lugar de heredar de clases base (herencia). La herencia tiene inconvenientes significativos que la composición evita, aunque ambas tienen su lugar.
Por qué es importante
INHERITANCE → a class EXTENDS another, inheriting its behavior ("IS-A" relationship):
class Dog extends Animal
COMPOSITION → a class is BUILT FROM other objects/behaviors ("HAS-A" / uses):
class Car { constructor() { this.engine = new Engine(); } } // composes behaviors
→ composition: combine smaller pieces; inheritance: derive from a parent
