Questão de Engenharia de Software — Diagrama de Objetos — FUNDATEC 2023
Engenharia de Software›Diagrama de Objetos
Código
qq896849
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Programação de Sistemas na Tecnologia Microsoft
Qual é a diferença entre inversão de controle e injeção de dependências?
AA inversão de controle é um princípio e a injeção de dependências é uma técnica.
BA inversão de controle é uma técnica e a injeção de dependências é um princípio.
CNão há diferença, os termos são sinônimos.
DA inversão de controle é um conceito antigo e a injeção de dependências é um conceito moderno.
EA injeção de dependências é uma técnica específica da linguagem Java.
Revelar gabarito e comentário▾
GabaritoA — A inversão de controle é um princípio e a injeção de dependências é uma técnica.
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”.
Inversão de Controle e Injeção de Dependências
Gabarito: letra A. A inversão de controle (IoC) é um princípio de design no qual o fluxo de controle de um programa é invertido: em vez de o código controlar a execução, um framework ou contêiner assume o controle. A injeção de dependências (DI) é uma técnica específica para implementar IoC, na qual as dependências de um objeto são fornecidas externamente (injetadas) em vez de criadas pelo próprio objeto. Portanto, IoC é o princípio geral e DI é uma das formas de aplicá-lo.
Aspecto
Inversão de Controle (IoC)
Injeção de Dependências (DI)
Natureza
Princípio de design
Técnica de implementação
Função
Inverte o fluxo de controle do programa para um framework/contêiner
Fornece dependências externamente ao objeto
Relação
É o conceito geral
É uma forma específica de aplicar IoC
Exemplos de aplicação
Service Locator, eventos, template method
Injeção por construtor, setter ou interface
Inversão de controle (IoC)
1Princípio de design
Fluxo invertido
Framework/contêiner controla
2Implementações
Injeção de dependências (DI)
Service Locator
Eventos
Template Method
3Injeção de dependências (DI)
Técnica específica
Dependências fornecidas externamente
Construtor
Setter
Interface
Não exclusiva do Java
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Exatamente como descrito: IoC é princípio, DI é técnica. A DI é uma concretização do princípio de IoC, permitindo que as dependências sejam passadas ao objeto (construtor, setter ou interface).
Alternativa B — ❌ Incorreta
Inverte os papéis. DI não é princípio; ela é uma técnica. IoC não é técnica; é o princípio mais amplo.
Alternativa C — ❌ Incorreta
Afirma que são sinônimos, o que é falso. IoC é um princípio que pode ser implementado de várias maneiras (por exemplo, Service Locator, eventos, template method), e DI é uma dessas implementações.
Alternativa D — ❌ Incorreta
Não há base temporal que diferencie os conceitos como antigo vs moderno. Ambos são conceitos consolidados há décadas, sendo DI uma especialização de IoC.
Alternativa E — ❌ Incorreta
DI não é exclusiva do Java. É um padrão utilizado em diversas linguagens (C#, Python, JavaScript, etc.) com frameworks como Spring, Guice, Dagger, etc.