Questão de Engenharia de Software — UML — FUNDATEC 2023
Engenharia de Software›UML
Código
qq896808
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Programação de Sistemas na Tecnologia Java
Sobre injeção de dependência, analise as assertivas abaixo e assinale a alternativa correta.I. Recomenda-se implementar a injeção de dependência quando uma classe é dependente de outra.II. A injeção de dependência não permite desacoplar uma classe de suas classes dependentes, mas facilita o entendimento da implementação.III. Uma das formas de implementação é pela criação de um pool de objetos, no qual objetos são retirados para serem injetados em uma classe.
ATodas estão corretas.
BTodas estão incorretas.
CApenas I e II estão corretas.
DApenas I e III estão corretas.
EApenas II e III estão corretas.
Revelar gabarito e comentário▾
GabaritoD — Apenas I e III estão corretas.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Injeção de Dependência
Gabarito: letra D. A injeção de dependência é uma técnica que promove o desacoplamento entre classes, transferindo a responsabilidade de criar e fornecer as dependências para um agente externo (container ou framework). A assertiva I está correta, pois a técnica é recomendada justamente quando uma classe depende de outra; a assertiva II está incorreta, pois a injeção de dependência permite desacoplar a classe de suas dependências; e a assertiva III está correta, pois uma das formas de implementação é o pool de objetos, onde objetos são retirados para serem injetados.
A injeção de dependência (DI) é um padrão de projeto que implementa o princípio da inversão de controle (IoC): em vez de a classe criar suas próprias dependências internamente (com new), ela as recebe prontas de um agente externo. Isso reduz o acoplamento, pois a classe passa a depender de abstrações (interfaces) e não de implementações concretas, facilitando a testabilidade e a manutenção.
Existem várias formas de implementar a injeção de dependência, sendo as mais comuns:
Injeção por construtor: a dependência é passada como parâmetro do construtor.
Injeção por setter: a dependência é atribuída por um método setter.
Injeção por interface: a classe implementa uma interface que expõe um método para receber a dependência.
Pool de objetos: um conjunto de objetos pré-instanciados é mantido em um pool; quando uma classe precisa de uma dependência, um objeto é retirado do pool e injetado. Essa abordagem é útil para otimizar a criação de objetos caros.
A banca explora a confusão entre acoplamento e entendimento: a injeção de dependência reduz o acoplamento, e não o contrário. A assertiva II inverte esse conceito, afirmando que a técnica "não permite desacoplar", o que é falso.
Injeção de dependência (DI): Objetivo (Desacoplar classes, Facilitar testes, Implementa IoC); Formas de implementação (Construtor, Setter, Interface, Pool de objetos); Benefícios (Reduz acoplamento, Depende de abstrações, Facilita manutenção)
Item I — ✅ Correto
A assertiva afirma que "recomenda-se implementar a injeção de dependência quando uma classe é dependente de outra". Isso está correto: a injeção de dependência é uma técnica recomendada exatamente para gerenciar e reduzir o acoplamento entre classes dependentes, tornando o sistema mais flexível e testável.
Item II — ❌ Incorreto
A assertiva afirma que "a injeção de dependência não permite desacoplar uma classe de suas classes dependentes, mas facilita o entendimento da implementação". Isso está incorreto: a injeção de dependência permite desacoplar a classe de suas dependências, pois a classe não precisa mais instanciá-las diretamente. O desacoplamento é um dos principais objetivos da técnica, e não algo que ela não faz.
Item III — ✅ Correto
A assertiva afirma que "uma das formas de implementação é pela criação de um pool de objetos, no qual objetos são retirados para serem injetados em uma classe". Isso está correto: o pool de objetos é uma das formas de implementar a injeção de dependência, onde objetos são pré-criados e reutilizados, sendo retirados do pool para serem injetados nas classes que precisam deles.
Conclusão: Corretos os itens I e III → portanto, a alternativa correta é a letra D.
NÃO CAIA NESSA!
A banca inverte o efeito da injeção de dependência na assertiva II: ela afirma que a técnica "não permite desacoplar", quando na verdade o desacoplamento é o seu principal benefício. Cuidado com essa inversão clássica — a injeção de dependência reduz o acoplamento, não o mantém.
PEGA ESSA DICA!
Para questões sobre injeção de dependência, lembre-se: o objetivo central é desacoplar e facilitar testes. Qualquer alternativa que diga o contrário está errada. Além disso, memorize as formas de implementação: construtor, setter, interface e pool de objetos.