Pular para o conteúdo principal

Questão de Engenharia de Software — UML — CESPE / CEBRASPE 2025

Engenharia de SoftwareUML
Código
ce417786
Banca
CESPE / CEBRASPE
Órgão
BDMG
Ano
2025
Cargo
Ana Desen ( )
Julgue o próximo item, acerca de análise de requisitos, UML e conceitos relativos à orientação a objetos. No seguinte diagrama de classes, os métodos e atributos das classes Ave e Mamífero são herdados da classe Animal e o método falar(), nas classes BemTeVi, Papagaio, Vaca e Cachorro, é um exemplo de polimorfismo.Imagem associada para resolução da questão
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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 e Herança em UML

Gabarito: Certo (C). O item está correto: no diagrama de classes, as classes Ave e Mamífero herdam de Animal (relação de generalização/especialização), e o método falar() sobrescrito nas subclasses BemTeVi, Papagaio, Vaca e Cachorro é um exemplo clássico de polimorfismo por sobrescrita (override).

O polimorfismo é um dos quatro pilares da orientação a objetos, ao lado de abstração, encapsulamento e herança. A palavra vem do grego e significa "muitas formas". Na prática, o polimorfismo permite que um mesmo método (mesma assinatura) tenha comportamentos diferentes em classes distintas, desde que essas classes compartilhem uma mesma superclasse ou interface. No diagrama, Animal declara o método falar(), e cada subclasse (BemTeVi, Papagaio, Vaca, Cachorro) o redefine com uma implementação própria — o que caracteriza a sobrescrita (override), uma das formas de se alcançar o polimorfismo.

A herança, por sua vez, é o mecanismo que permite que uma classe (subclasse) herde atributos e métodos de outra (superclasse). No diagrama, Ave e Mamífero herdam de Animal, o que significa que elas reutilizam o código da superclasse e podem adicionar ou modificar comportamentos. A relação é representada por uma seta com triângulo vazado apontando para a superclasse, indicando generalização/especialização.

É importante distinguir polimorfismo de sobrecarga (overload). Enquanto a sobrescrita redefine um método da superclasse com a mesma assinatura (nome e parâmetros), a sobrecarga define métodos com o mesmo nome, mas assinaturas diferentes (parâmetros diferentes), dentro da mesma classe. A sobrescrita é resolvida em tempo de execução (ligação tardia), enquanto a sobrecarga é resolvida em tempo de compilação.

A banca explora exatamente essa distinção: o candidato pode confundir o polimorfismo por sobrescrita com a sobrecarga, ou achar que o simples fato de herdar já configura polimorfismo. No entanto, o polimorfismo só se manifesta quando há redefinição de comportamento — como ocorre com o método falar() nas quatro subclasses.

Guarde o critério decisivo: herança é o mecanismo de reuso; polimorfismo é a capacidade de um mesmo método se comportar de formas diferentes. É exatamente essa fronteira que o item explora.

Critério

Herança (Ave/Mamífero → Animal)

Polimorfismo (falar() nas 4 subclasses)

Mecanismo

Reuso de código (atributos/métodos da superclasse)

Redefinição de comportamento (override)

Relação UML

Generalização/especialização (seta com triângulo vazado)

Mesma assinatura, implementações diferentes

Momento de resolução

Estrutural (tempo de compilação)

Comportamental (tempo de execução)

Exemplo no diagrama

Ave e Mamífero herdam de Animal

BemTeVi, Papagaio, Vaca, Cachorro sobrescrevem falar()

Confusão comum

Achar que herdar já é polimorfismo

Confundir com sobrecarga (overload)

Item — ✅ CERTO

O item afirma duas coisas: (1) os métodos e atributos de Ave e Mamífero são herdados de Animal; (2) o método falar() nas classes BemTeVi, Papagaio, Vaca e Cachorro é um exemplo de polimorfismo. Ambas as afirmações estão corretas.

A primeira parte é verdadeira porque o diagrama de classes mostra uma relação de generalização entre Animal (superclasse) e Ave/Mamífero (subclasses). Isso significa que as subclasses herdam os atributos e métodos da superclasse, podendo adicionar novos ou sobrescrever os existentes.

A segunda parte é verdadeira porque o método falar() é declarado na superclasse Animal e redefinido (sobrescrito) em cada uma das quatro subclasses. Cada uma fornece uma implementação específica para o mesmo método, o que é a essência do polimorfismo por sobrescrita. Em tempo de execução, a JVM (ou o runtime da linguagem) decide qual versão do método será chamada com base no tipo real do objeto, não no tipo da referência.

Gabarito: letra C (Certo).

Link permanente: /questoes/ce417786