Cenário: refatorar uma hierarquia que explodiu
Pergunta
Você tem `Personagem` e subclasses `Guerreiro`, `Mago`, `GuerreiroVoador`, `MagoVoador`, `MagoInvisível`... a hierarquia está explodindo com as combinações. Como composição resolve?
Resposta esperada
O problema é tentar expressar N capacidades independentes (voar, ficar invisível, atacar corpo a corpo, lançar magia) via herança, que só dá uma dimensão — cada combinação vira uma classe, e são 2^N. Com composição, `Personagem` tem uma lista de comportamentos/componentes: `movimento` (Andar, Voar), `ataque` (Espada, Magia), `habilidades` (Invisibilidade). Você monta um personagem combinando peças em runtime, e adicionar 'nadar' é uma classe nova de movimento, não uma explosão de subclasses. É o padrão Strategy / Entity-Component. O `Personagem` delega: `this.movimento.mover()`. Perde-se um pouco de rigidez de tipo (não existe mais o tipo `MagoVoador`), ganha-se flexibilidade e fim da explosão combinatória.
Por que perguntam isso
Cenário pleno/sênior — o exemplo didático clássico de 'prefira composição'. Termo-chave: 'explosão combinatória', Strategy, Entity-Component.