devterview_$ iniciar simulação

Herança x composição: quando cada uma

MédioPlenoDesign OO

Pergunta

Qual a diferença entre reusar código por herança e por composição, e por que o conselho comum é 'prefira composição'?

Resposta esperada

Herança expressa 'é um' e acopla a subclasse à implementação da superclasse: mudar a base pode quebrar filhos (fragile base class), e a hierarquia é fixada em tempo de compilação. Composição expressa 'tem um' — o objeto delega para outros objetos que recebe, geralmente por uma interface, então dá pra trocar comportamento em runtime e testar cada peça isolada. 'Prefira composição' porque herança profunda vira uma teia rígida onde reuso força você a herdar coisas que não quer. Herança ainda é boa quando há uma relação de subtipo genuína e estável e você quer polimorfismo — mas é a exceção, não o reflexo.

Por que perguntam isso

Pergunta que separa quem decorou 'os 4 pilares' de quem já manteve uma hierarquia grande. Bom sinal: citar 'fragile base class' ou dar um exemplo de herança que deu errado.

#heranca#composicao#design
publicidade

Perguntas de acompanhamento

Relacionadas