Aula 15: Composição versus herança
Um carro tem um motor — mas ele não é um tipo de motor. Para relações de "tem um" existe uma segunda ferramenta, surpreendentemente simples: guardar um objeto como atributo de outro objeto. Isso é composição — e escolher entre ela e a herança é uma das decisões mais importantes de projeto.
Herança é DNA — o que você é; composição é uma mochila — o que você tem. Um cachorro é um animal (herança), mas um carro apenas tem um motor (composição).
- composição
- Construir uma classe a partir de objetos de outras classes — um objeto guardado como atributo: self.engine = Engine().
- a relação de "tem um"
- "Um carro tem um motor" — uma relação resolvida com composição, não com herança.