Pular para o conteúdo principal

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

Engenharia de SoftwareUML
Código
ce163614
Banca
CESPE / CEBRASPE
Órgão
TC-DF
Ano
2023
Nível
Superior
Cargo
Auditor de Controle Externo – Área Especializada – Especialidade Tecnologia da Informação – Orientação Sistemas de TI
Acerca de orientação a objetos, julgue o item subsequente.O “problema do diamante”, que surge quando uma classe herda de duas classes que compartilham uma mesma classe pai, não resulta em conflitos de métodos ou ambiguidades na resolução de herança múltipla.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

Herança Múltipla e o Problema do Diamante

Gabarito: Errado. A afirmação de que o problema do diamante não resulta em conflitos ou ambiguidades é falsa. Na herança múltipla, quando uma classe herda de duas classes que compartilham um ancestral comum (o "diamante"), podem surgir ambiguidades na resolução de métodos e atributos com o mesmo nome, a menos que a linguagem ofereça mecanismos específicos para resolvê-las (como herança virtual em C++).

O próprio material de apoio destaca o problema: "solucionar a coincidência de nomes, quando duas ou mais superclasses têm atributos com o mesmo nome, mas com diferentes significados" é um dos desafios da herança múltipla. Portanto, a afirmação está errada.

SE LIGUE NESSA!

O problema do diamante é uma questão clássica em linguagens que suportam herança múltipla, como C++. O conflito ocorre porque a classe derivada herda duas cópias do ancestral comum, gerando ambiguidade. Linguagens como Java e C# evitam o problema ao não permitir herança múltipla de classes.

Problema do diamante
  • 1Herança múltipla
    • Classe D herda de B e C
    • B e C herdam de A
    • Ambiguidade: duas cópias de A
  • 2Resolução
    • Herança virtual (C++)
    • Herança múltipla proibida (Java, C#)
LEVEL · soulevel.com.br

Link permanente: /questoes/ce163614