Pular para o conteúdo principal

Questão de Engenharia de Software — UML — CESGRANRIO 2024

Engenharia de SoftwareUML
Código
cg057921
Banca
CESGRANRIO
Órgão
IPEA
Ano
2024
Cargo
TPP ( )
A Figura a seguir exibe um modelo conceitual de dados por meio de um diagrama de classes UML. Admita que as instâncias dessas classes sejam representadas por conjuntos não vazios e cujos nomes sejam iguais aos nomes das classes que representam. Nessas condições, qual equação é sempre verdadeira?Imagem associada para resolução da questão
  1. AA = B1 U B2 U C
  2. BB = A – C
  3. CB \cap C = \varnothing
  4. DC = C1 \cup C2
  5. EC1 = C – C2
Revelar gabarito e comentário

GabaritoA — A = B1 U B2 U C

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

Diagrama de Classes UML e Teoria de Conjuntos

Gabarito: letra A. A equação A = B1 ∪ B2 ∪ C é sempre verdadeira porque, no diagrama de classes, a classe A é a superclasse (generalização) das classes B1, B2 e C, o que significa que todo elemento de A pertence a pelo menos uma dessas subclasses. Essa é a interpretação correta da relação de herança na UML, onde a classe filha é um subconjunto da classe pai.

A questão combina dois conhecimentos: a semântica do diagrama de classes UML (especificamente a generalização/herança) e a teoria de conjuntos. No diagrama, a seta com triângulo vazado apontando para a classe A indica que B1, B2 e C são subclasses de A. Isso estabelece que o conjunto de instâncias de A é a união dos conjuntos de instâncias de suas subclasses, desde que a generalização seja completa (toda instância da superclasse é instância de alguma subclasse) e disjunta (uma instância não pode pertencer a duas subclasses ao mesmo tempo). A UML permite generalizações parciais e sobrepostas, mas a questão afirma que a equação é "sempre verdadeira", o que só ocorre quando a generalização é completa e disjunta — a interpretação padrão para o modelo apresentado.

Vamos analisar cada alternativa com base nessa relação de conjuntos:

  • A) A = B1 ∪ B2 ∪ C: Correta, pois A é a união de todas as suas subclasses.

  • B) B = A – C: Incorreta, pois B não é definido no diagrama; além disso, A – C incluiria B1 e B2, não apenas B.

  • C) B ∩ C = ∅: Incorreta, pois B não é definido; mesmo que fosse, não há garantia de disjunção entre B e C.

  • D) C = C1 ∪ C2: Incorreta, pois C1 e C2 não são definidos no diagrama.

  • E) C1 = C – C2: Incorreta, pois C1 e C2 não são definidos no diagrama.

A pegadinha está em alternativas que usam classes inexistentes (B, C1, C2) ou relações que não são garantidas pelo diagrama. A única equação que reflete diretamente a estrutura de herança é a letra A.

Alternativa A — ✅ Correta ⟵ GABARITO

A equação A = B1 ∪ B2 ∪ C é verdadeira porque a generalização na UML indica que a classe A é a superclasse de B1, B2 e C. Isso significa que todo objeto de A é também objeto de pelo menos uma das subclasses, e a união dos conjuntos de instâncias das subclasses forma exatamente o conjunto de instâncias da superclasse. A notação de conjunto com o nome da classe representa o conjunto de todas as instâncias possíveis daquela classe, e a herança garante a relação de subconjunto.

Alternativa B — ❌ Incorreta

A equação B = A – C é incorreta porque a classe B não existe no diagrama. O diagrama apresenta apenas as classes A, B1, B2 e C. Além disso, mesmo que B existisse, a operação A – C (diferença de conjuntos) resultaria nos elementos de A que não estão em C, o que incluiria B1 e B2, não apenas um suposto B. A alternativa inventa uma classe inexistente e uma relação sem fundamento no modelo.

Alternativa C — ❌ Incorreta

A equação B ∩ C = ∅ é incorreta porque a classe B não existe no diagrama. Não há como afirmar que a interseção entre B e C é vazia, pois B não é definido. Mesmo que B existisse, a disjunção entre B e C não é garantida pelo diagrama — a generalização pode ser sobreposta, permitindo que um objeto pertença a mais de uma subclasse. A alternativa usa uma classe inexistente e assume uma propriedade (disjunção) que não é explicitada.

Alternativa D — ❌ Incorreta

A equação C = C1 ∪ C2 é incorreta porque as classes C1 e C2 não existem no diagrama. O diagrama apresenta apenas a classe C, sem subclasses. A alternativa inventa subclasses inexistentes para tentar decompor C, mas não há base no modelo para essa afirmação. A relação de herança de C não é mostrada, então não se pode afirmar que C é composta por C1 e C2.

Alternativa E — ❌ Incorreta

A equação C1 = C – C2 é incorreta pelas mesmas razões da alternativa D: as classes C1 e C2 não existem no diagrama. A alternativa tenta definir C1 como a diferença entre C e C2, mas como C1 e C2 não são classes do modelo, a equação não tem significado. Não há como calcular a diferença de conjuntos sem que os conjuntos estejam definidos no diagrama.

Gabarito: letra A

Link permanente: /questoes/cg057921