Questão de Programação — Programação Orientada a Objetos — INSTITUTO AOCP 2024
Programação›Programação Orientada a Objetos
Código
qg263620
Banca
INSTITUTO AOCP
Órgão
UFS
Ano
2024
Nível
Médio
Cargo
Técnico em Tecnologia da Informação - Classe D
Enquanto desenvolve um sistema para a Universidade Federal de Sergipe, que utiliza o paradigma de programação orientada a objetos, você incorpora vários conceitos importantes, um deles é o polimorfismo. Acerca do conceito de polimorfismo, assinale a alternativa correta.
ADiz respeito a moldes para criar objetos. Definem atributos (dados) e métodos (funções) que os objetos podem ter.
BRefere-se a instâncias de classes e contém valores específicos para os atributos.
CEnvolve ocultar detalhes internos de uma classe e fornecer interfaces para interagir com os objetos. Isso ajuda a proteger os dados e o comportamento de uma classe.
DPermite que objetos de classes diferentes sejam tratados de maneira semelhante. Isso é alcançado usando métodos com o mesmo nome em classes diferentes.
EPermite que uma classe herde atributos e métodos de outra classe. Isso promove a reutilização de código e a criação de hierarquias de classes.
Revelar gabarito e comentário▾
GabaritoD — Permite que objetos de classes diferentes sejam tratados de maneira semelhante. Isso é alcançado usando métodos com o mesmo nome em classes diferentes.
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”.
Polimorfismo na Programação Orientada a Objetos
Gabarito: letra D. O polimorfismo permite que objetos de classes diferentes sejam tratados de maneira semelhante, alcançado pelo uso de métodos com o mesmo nome em classes diferentes — exatamente o que a alternativa D descreve. Esse é um dos quatro pilares da POO, ao lado de abstração, encapsulamento e herança.
O polimorfismo, do grego "muitas formas", é a capacidade de um objeto assumir diferentes formas ou comportamentos. Na prática, isso significa que uma mesma chamada de método pode executar implementações diferentes, dependendo do tipo do objeto que a recebe. Isso é alcançado principalmente por dois mecanismos: a sobrescrita (override) e a sobrecarga (overload).
Na sobrescrita, uma subclasse redefine um método da superclasse, mantendo o mesmo nome e a mesma assinatura, mas com comportamento próprio. Por exemplo, se temos uma classe Animal com o método emitirSom(), e as classes Cachorro e Gato sobrescrevem esse método, cada uma emitirá um som diferente. Ao chamar emitirSom() em uma referência do tipo Animal, o comportamento executado será o da classe real do objeto — isso é a ligação tardia (late binding), resolvida em tempo de execução.
Na sobrecarga, uma mesma classe define vários métodos com o mesmo nome, mas com assinaturas diferentes (diferentes tipos ou quantidades de parâmetros). O método a ser executado é decidido em tempo de compilação, com base nos argumentos passados. Por exemplo, um método calcular() pode aceitar dois inteiros ou três inteiros, realizando operações distintas.
O polimorfismo é um dos pilares que promovem a reutilização de código e a flexibilidade do software, permitindo que um código genérico trabalhe com diferentes tipos de objetos sem precisar conhecê-los especificamente. É o que possibilita, por exemplo, que uma lista de objetos Animal contenha Cachorro, Gato e Pato, e que ao percorrê-la chamando emitirSom(), cada um execute seu próprio som.
A banca explora a confusão entre os quatro pilares da POO: abstração, encapsulamento, herança e polimorfismo. Cada alternativa incorreta descreve um desses outros conceitos, e o candidato precisa identificar qual deles corresponde à definição de polimorfismo. Guarde a fronteira entre eles: é exatamente nela que as alternativas se dividem.
Pilares da POO: Abstração (Focar no essencial); Encapsulamento (Ocultar detalhes internos, Proteger dados e comportamento); Herança (Reutilizar código, Hierarquia de classes); Polimorfismo (Muitas formas, Métodos com o mesmo nome, Sobrescrita (override), Sobrecarga (overload))
Alternativa A — ❌ Incorreta
Esta alternativa descreve classes, não polimorfismo. Classes são moldes (ou modelos) para criar objetos, definindo seus atributos (dados) e métodos (funções). O polimorfismo, por sua vez, trata do comportamento de métodos em objetos de classes diferentes, não da definição de moldes.
Alternativa B — ❌ Incorreta
Esta alternativa descreve objetos, que são instâncias de classes e contêm valores específicos para os atributos. O polimorfismo não se refere a instâncias, mas à capacidade de tratar objetos de classes diferentes de forma semelhante.
Alternativa C — ❌ Incorreta
Esta alternativa descreve o encapsulamento, que envolve ocultar detalhes internos de uma classe e fornecer interfaces para interagir com os objetos, protegendo dados e comportamento. O polimorfismo não trata de ocultação, mas de comportamento polimórfico.
Alternativa D — ✅ Correta ⟵ GABARITO
Esta é a definição correta de polimorfismo. Ele permite que objetos de classes diferentes sejam tratados de maneira semelhante, alcançado pelo uso de métodos com o mesmo nome em classes diferentes. Isso é feito por meio da sobrescrita (override) e da sobrecarga (overload), permitindo que uma mesma chamada de método execute comportamentos distintos conforme o objeto.
Alternativa E — ❌ Incorreta
Esta alternativa descreve a herança, que permite que uma classe herde atributos e métodos de outra classe, promovendo reutilização de código e hierarquias de classes. O polimorfismo, embora frequentemente associado à herança, é um conceito distinto, focado no comportamento de métodos.
NÃO CAIA NESSA!
A banca troca os pilares da POO entre si. As alternativas A, B, C e E descrevem, respectivamente, classe, objeto, encapsulamento e herança — todos conceitos vizinhos ao polimorfismo. O candidato que não domina a distinção entre eles cai facilmente. Lembre-se: polimorfismo é "muitas formas" — a capacidade de um mesmo método se comportar de maneiras diferentes em classes diferentes.
PEGA ESSA DICA!
Para fixar, monte uma tabela mental com os quatro pilares: Abstração (focar no essencial), Encapsulamento (esconder detalhes), Herança (reutilizar código via hierarquia) e Polimorfismo (muitas formas de um mesmo método). Nas questões, identifique a palavra-chave: "moldes" → classe; "instâncias" → objeto; "ocultar" → encapsulamento; "herdar" → herança; "métodos com o mesmo nome" → polimorfismo.