Questão de Programação — Programação Orientada a Objetos — Quadrix 2023
- Código
- qg026005
- Banca
- Quadrix
- Órgão
- CREA-GO
- Ano
- 2023
- Nível
- Superior
- Cargo
- Analista de Área - T.I
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: E — ERRADO. A propriedade da programação orientada a objetos (POO) que permite que um objeto seja tratado de várias formas, assumindo diferentes comportamentos, é o polimorfismo, e não a abstração. A abstração, por sua vez, é o mecanismo que oculta detalhes de implementação e expõe apenas o essencial. O item troca os dois conceitos, incorrendo em erro conceitual clássico.
A programação orientada a objetos é um paradigma de programação baseado no conceito de "objetos", que podem conter dados (atributos) e códigos (métodos). Os quatro pilares fundamentais da POO são: abstração, encapsulamento, herança e polimorfismo. Cada um tem um papel distinto, e é exatamente essa distinção que a banca explora nesta questão.
A abstração é o processo de modelar entidades do mundo real no mundo computacional, focando apenas nas características e comportamentos essenciais, ignorando os detalhes irrelevantes. Na prática, ela é alcançada por meio de classes abstratas e interfaces, que definem "o que" um objeto faz, sem especificar "como" ele faz. Por exemplo, uma classe abstrata Animal pode definir o método emitirSom(), mas não implementa o som específico de cada animal — isso fica para as subclasses.
O polimorfismo, por sua vez, é a capacidade de um objeto assumir várias formas, ou seja, de uma mesma referência (ou chamada de método) se comportar de maneiras diferentes dependendo do objeto concreto ao qual está associada. Ele se manifesta de duas formas principais: o polimorfismo estático (sobrecarga/overload), que ocorre dentro da mesma classe quando métodos têm o mesmo nome, mas assinaturas diferentes (parâmetros ou tipos distintos); e o polimorfismo dinâmico (sobrescrita/override), que ocorre entre classes diferentes, quando uma subclasse redefine um método da superclasse, permitindo que um objeto seja tratado pelo tipo da superclasse, mas execute o comportamento da subclasse.
Para fixar a diferença, veja a comparação:
Critério | Abstração | Polimorfismo |
|---|---|---|
Conceito | Ocultar detalhes de implementação, expondo apenas o essencial | Permitir que um objeto assuma várias formas/comportamentos |
Como é alcançada | Classes abstratas e interfaces | Sobrecarga (estático) e sobrescrita (dinâmico) |
Pergunta que responde | "O que o objeto faz?" | "Como o objeto se comporta em diferentes contextos?" |
Exemplo | Interface | Uma variável do tipo |
A pegadinha desta questão é justamente a troca de conceitos: a banca descreve o polimorfismo, mas o nomeia como abstração. O candidato que não domina a definição precisa de cada pilar acaba marcando "Certo", quando o correto é "Errado".
A banca adora inverter os pilares da POO. Aqui, ela descreve o polimorfismo ("objeto tratado de várias formas, assumindo diferentes comportamentos") e o chama de abstração. Fique atento: abstração é sobre esconder complexidade; polimorfismo é sobre múltiplos comportamentos. Se a frase falar em "várias formas" ou "diferentes comportamentos", o conceito é polimorfismo, não abstração.
A afirmação está incorreta porque descreve o polimorfismo e o rotula como abstração. O polimorfismo é exatamente a capacidade de um objeto ser tratado de várias formas, assumindo diferentes comportamentos — seja por sobrecarga (mesmo método com assinaturas diferentes) ou por sobrescrita (subclasses redefinindo métodos da superclasse). A abstração, por outro lado, é o processo de modelar o mundo real, ocultando detalhes de implementação e expondo apenas o essencial, geralmente por meio de classes abstratas e interfaces. Portanto, o item está errado.
Gabarito: E — ERRADO.
Link permanente: /questoes/qg026005