Questão de Engenharia de Software — UML — CESPE / CEBRASPE 2025
- Código
- ce417786
- Banca
- CESPE / CEBRASPE
- Órgão
- BDMG
- Ano
- 2025
- Cargo
- Ana Desen ( )

- CCerto
- EErrado

GabaritoC — Certo
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 |
|
|
Confusão comum | Achar que herdar já é polimorfismo | Confundir com sobrecarga (overload) |
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