0Pricing
Dart Academy · Aula

Composição em vez de herança

Prefira projetos do tipo “tem um” quando fizer sentido.

Composição em vez de herança é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.

Duas formas de reutilizar

Você pode reutilizar um comportamento herdando-o ou mantendo outro objeto. A segunda abordagem é chamada de composição.

É-um versus tem-um

A herança representa é-um: um Circle é um Shape. A composição representa tem-um: um Car tem um Engine.

Uma classe composta

Com a composição, você armazena um auxiliar como um campo e delega o trabalho a ele, em vez de estendê-lo.

class Car {
  final Engine engine = Engine();
}

Delegando comportamento

A classe externa encaminha as chamadas ao seu objeto interno. Essa delegação reutiliza a lógica sem nenhuma herança.

class Car {
  final engine = Engine();
  void start() => engine.ignite();
}

Problema da classe base frágil

Uma herança profunda é frágil. Uma alteração em uma classe pai pode quebrar silenciosamente subclasses distantes, uma armadilha conhecida como classe base frágil.

Flexibilidade em tempo de execução

A composição permite trocar o objeto interno sempre que você quiser. A herança é fixa desde o início, mas um campo pode mudar.

class Car {
  Engine engine;
  Car(this.engine);
}

Combine com interfaces

Combine a composição com interfaces: dependa de um tipo Engine abstrato para que qualquer mecanismo compatível possa ser conectado corretamente.

abstract class Engine {
  void ignite();
}

Mais fácil de testar

Como as partes são objetos separados, você pode passar um objeto falso nos testes. A composição torna o uso de objetos simulados simples e natural.

var car = Car(FakeEngine());

Evite herdar as coisas erradas

As subclasses herdam todos os membros, até mesmo aqueles que não deveriam expor. A composição compartilha apenas aquilo que você escolhe delegar.

Quando a herança ainda é melhor

A herança é adequada para uma relação clara de é-um, com identidade compartilhada. Prefira a composição quando a relação for realmente de tem-um.

A regra prática

Prefira a composição por padrão e use a herança com moderação. Isso mantém os projetos pouco acoplados e fáceis de alterar mais tarde. 🧩

Verificação rápida

Uma pergunta rápida sobre composição.

Recapitulação

A composição representa tem-um mantendo outros objetos e delegando trabalho a eles. Ela continua flexível e fácil de testar, enquanto a herança se encaixa em relações claras de é-um. 👍

Perguntas Frequentes

A aula “Composição em vez de herança” é grátis?

Sim — o texto completo de “Composição em vez de herança” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.

O que vou aprender em “Composição em vez de herança”?

Prefira projetos do tipo “tem um” quando fizer sentido. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Dart Academy?

Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Composição em vez de herança”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Dart Academy?

Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Classes e métodos abstratos
  2. Interfaces implícitas e implements
  3. Polimorfismo por meio de tipos compartilhados
  4. Composição em vez de herança
← Voltar para Dart Academy