Pular para o conteúdo principal

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

Engenharia de SoftwareUML
Código
fg165465
Banca
FGV
Órgão
CGE PB
Ano
2024
Cargo
ACP ( )
Observe o seguinte Diagrama de Classes UML.   A relação entre as Classes que está representada no diagrama é:Imagem associada para resolução da questão
  1. ARealização;
  2. BAgregação;
  3. CComposição;
  4. DDependência;
  5. EGeneralização.
Revelar gabarito e comentário

GabaritoE — Generalização.

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

UML – Diagrama de Classes: Relacionamentos

Gabarito: letra E. A relação representada no diagrama é a generalização (herança), em que uma classe filha (subclasse) herda atributos e métodos de uma classe pai (superclasse), sendo representada por uma seta com ponta triangular vazada apontando para a classe mais geral. As demais alternativas descrevem outros tipos de relacionamento da UML, cada um com notação e semântica próprias.

A UML (Unified Modeling Language) define quatro tipos principais de relacionamentos entre classes: dependência, associação (que inclui agregação e composição), generalização e realização. Cada um tem uma notação gráfica específica e um significado semântico distinto, e é exatamente essa distinção que a banca explora.

A generalização (alternativa E) é o relacionamento de herança: uma classe mais específica (subclasse) é um tipo de uma classe mais geral (superclasse). Na notação UML, é representada por uma linha sólida com uma seta de ponta triangular vazada (não preenchida) apontando da subclasse para a superclasse. É o relacionamento "é um" (is-a). Por exemplo, se temos a classe Animal e a classe Cachorro, Cachorro é uma generalização de Animal (ou Cachorro herda de Animal).

A realização (alternativa A) é o relacionamento entre uma interface (ou classe abstrata) e a classe que a implementa. É representada por uma linha tracejada com uma seta de ponta triangular vazada. A classe que realiza a interface deve implementar todos os seus métodos. É o relacionamento "implementa".

A agregação (alternativa B) é um tipo de associação que representa uma relação "todo-parte" onde a parte pode existir independentemente do todo. É representada por uma linha sólida com um losango vazio na extremidade da classe "todo". Por exemplo, uma Escola agrega Professores, mas os professores podem existir sem a escola.

A composição (alternativa C) é um tipo mais forte de agregação, onde a parte não pode existir sem o todo. É representada por uma linha sólida com um losango preenchido na extremidade da classe "todo". Por exemplo, uma Casa é composta por Cômodos; se a casa for destruída, os cômodos deixam de existir.

A dependência (alternativa D) é o relacionamento mais fraco, indicando que uma classe usa outra, mas não a possui. É representada por uma linha tracejada com uma seta simples (ponta aberta). Por exemplo, uma classe Pedido depende da classe Cliente para obter seus dados, mas não a contém como atributo.

A pegadinha desta questão está em confundir a notação da generalização com a da realização, pois ambas usam seta de ponta triangular. A diferença crucial é que a generalização usa linha sólida, enquanto a realização usa linha tracejada. Além disso, a generalização é entre classes, enquanto a realização é entre uma classe e uma interface.

Guarde a notação de cada relacionamento: é o critério decisivo para identificar o tipo de relação em um diagrama de classes.

Relacionamento

Notação (Linha)

Notação (Ponta/Extremidade)

Semântica

Generalização (E)

Sólida

Triângulo vazio (aponta p/ superclasse)

Herança: “é um” (subclasse herda da superclasse)

Realização (A)

Tracejada

Triângulo vazio (aponta p/ interface)

Classe implementa interface

Agregação (B)

Sólida

Losango vazio (lado do todo)

Todo-parte com parte independente

Composição (C)

Sólida

Losango preenchido (lado do todo)

Todo-parte com parte dependente do todo

Dependência (D)

Tracejada

Seta simples (ponta aberta)

Classe usa outra sem possuí-la

Alternativa A — ❌ Incorreta

A realização é representada por uma linha tracejada com seta de ponta triangular vazada, indicando que uma classe implementa uma interface. No diagrama da questão, a linha é sólida, o que descarta a realização. A realização é o relacionamento "implementa", típico entre uma classe e uma interface.

Alternativa B — ❌ Incorreta

A agregação é representada por uma linha sólida com um losango vazio na extremidade da classe que representa o todo. O diagrama da questão não apresenta losango, apenas uma seta de ponta triangular, portanto não é agregação. A agregação é um tipo de associação "todo-parte" onde a parte pode existir independentemente.

Alternativa C — ❌ Incorreta

A composição é representada por uma linha sólida com um losango preenchido na extremidade da classe que representa o todo. O diagrama da questão não apresenta losango preenchido, apenas uma seta de ponta triangular, portanto não é composição. A composição é um tipo de associação "todo-parte" onde a parte não pode existir sem o todo.

Alternativa D — ❌ Incorreta

A dependência é representada por uma linha tracejada com uma seta simples (ponta aberta). O diagrama da questão apresenta linha sólida e seta de ponta triangular, portanto não é dependência. A dependência é o relacionamento mais fraco, indicando que uma classe usa outra sem possuí-la.

Alternativa E — ✅ Correta ⟵ GABARITO

A generalização é representada por uma linha sólida com uma seta de ponta triangular vazada apontando da subclasse para a superclasse. É exatamente a notação presente no diagrama da questão. A generalização representa o relacionamento de herança, onde a subclasse herda atributos e métodos da superclasse, estabelecendo uma relação "é um".

NÃO CAIA NESSA!

A banca explora a confusão entre generalização e realização, pois ambas usam seta de ponta triangular. A diferença está na linha: a generalização usa linha sólida, enquanto a realização usa linha tracejada. Além disso, a generalização ocorre entre classes, enquanto a realização ocorre entre uma classe e uma interface. Fique atento a esses detalhes na prova!

Gabarito: letra E

Link permanente: /questoes/fg165465