Em programação orientada a objetos, o uso de composição ao i...

Próximas questões
Com base no mesmo assunto
Q873520 Engenharia de Software
Em programação orientada a objetos, o uso de composição ao invés de herança é preferível porque
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: B - reduz o acoplamento.

Quando tratamos de programação orientada a objetos (POO), discutimos os princípios que guiam o design e a estrutura de um software eficiente, manutenível e escalável. Entre esses princípios, a escolha entre composição e herança é de suma importância, pois afeta diretamente como as classes interagem entre si e como as funcionalidades são distribuídas.

A composição é uma forma de associar classes onde uma "tem um" objeto de outra classe, enquanto a herança é uma relação "é um", onde uma subclasse herda características de uma superclasse. A composição é geralmente recomendada sobre a herança em muitos casos, pois ela reduz o acoplamento entre as classes. Acoplamento é o grau de dependência direta entre duas classes. Quando o acoplamento é alto, uma mudança em uma classe pode ter grandes impactos em outra, o que não é desejável.

Com a composição, os objetos são combinados para formar sistemas mais complexos e cada objeto é responsável por uma tarefa específica. Essa abordagem confere maior flexibilidade, pois facilita a troca, extensão e reutilização de componentes sem a necessidade de alterar outras partes do sistema, contribuindo assim para um design mais modular e fácil de entender e manter.

As outras alternativas não estão corretas porque:

  • A composição não tem uma relação direta com a facilidade de uso de estruturas de decisão e controle.
  • A composição, por si só, não elimina bugs, embora possa contribuir para um design mais claro, o que pode ajudar indiretamente na prevenção de bugs.
  • Embora o uso eficiente de memória e CPU seja importante, minimizar o consumo de recursos não é o principal motivo pelo qual a composição é preferida sobre a herança.

Portanto, a composição é uma abordagem de design preferível em muitos casos devido à sua capacidade de reduzir o acoplamento entre as classes, o que facilita a manutenção e a evolução do software.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

É  sempre recomendável favorecer o uso da composição entre classes no lugar de utilizar herança. Porque que o uso da herança aumenta bastante o acoplamento de suas classes e de alguma forma sempre acaba comprometendo o encapsulamento. Já a composição dimunui o acoplamento, assim, o acoplamento reduzido também melhora a facilidade de extensão.

 

 

Letra B

 

 

Fonte:Desbravando Java e Orientação a Objetos: Um guia para o iniciante da linguagem - Rodrigo Turini

 

Usando herança:

1- Ao usar herança estamos violando um dos pilares da orientação a objetos: o encapsulamento, visto que os detalhes da implementação da classe Pai são expostos nas classes Filhas;
2- Ao usar herança estamos violando um dos princípios básicos das boas práticas de programação : manter o acoplamento entre as classe fraco, visto que as classes filhas estão fortemente acopladas à classe Pai e alterar uma classe Pai pode afetar todas as classes Filhas;
3- As implementações herdadas da classe Pai pelas classes Filhas não pode ser alteradas em tempo de execução;

Usando composição

1- Os objetos que foram instanciados e estão contidos na classe que os instanciou são acessados somente através de sua interface;
2- A composição pode ser definida dinamicamente em tempo de execução pela obtenção de referência de objetos a objetos de do mesmo tipo;
3- A composição apresenta uma menor dependência de implementações;
4- Na composição temos cada classe focada em apenas uma tarefa (princípio SRP);
5- Na composição temos um bom encapsulamento visto que os detalhes internos dos objetos instanciados não são visíveis;

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo