Pular para o conteúdo principal

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

Engenharia de SoftwareUML
Código
fg165467
Banca
FGV
Órgão
TJ AP
Ano
2024
Cargo
AJ ( )
Observe o seguinte Diagrama de Classes da UML 2.5.1.   O tipo de relacionamento entre as classes representado no diagrama é a:Imagem associada para resolução da questão
  1. AAssociação;
  2. BComposição;
  3. CDependência;
  4. DAgregação;
  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. O relacionamento representado no diagrama é a generalização (herança), identificada pela seta triangular vazia apontando da classe filha para a classe pai. Na UML 2.5.1, a generalização é o único relacionamento entre classes que usa essa notação de seta com triângulo oco — enquanto associação, agregação e composição usam linhas simples (com losango vazio ou preenchido, respectivamente) e dependência usa linha tracejada com seta.

O diagrama de classes é o principal diagrama estrutural da UML, usado para modelar a estrutura estática do sistema: classes, atributos, operações e os relacionamentos entre elas. Os relacionamentos entre classes na UML são de quatro tipos fundamentais: associação (incluindo agregação e composição como casos especiais), generalização (herança), dependência e realização. Cada um tem uma notação gráfica própria, e é exatamente essa notação que a banca explora — o candidato precisa reconhecer o símbolo e saber o que ele significa.

A generalização representa uma relação do tipo "é um" (é-um), em que uma classe filha (subclasse) herda atributos e operações de uma classe pai (superclasse). Na UML, é desenhada como uma linha sólida com uma seta triangular vazia (triângulo oco) na extremidade que aponta para a classe mais geral (a superclasse). Por exemplo, se temos as classes Animal e Cachorro, e Cachorro herda de Animal, a seta aponta de Cachorro para Animal. É o relacionamento mais forte semanticamente, pois estabelece uma hierarquia de especialização.

A associação é um relacionamento estrutural que indica que objetos de uma classe estão ligados a objetos de outra classe — uma relação "tem um" (tem-um) genérica. É representada por uma linha sólida simples, sem adornos, podendo ter multiplicidade (1, 1.., 0..) e navegabilidade (seta aberta). Por exemplo, Professor e Disciplina: um professor ministra uma disciplina. A agregação é um caso especial de associação do tipo todo-parte, em que a parte pode existir independentemente do todo — representada por uma linha com losango vazio do lado da classe "todo". Exemplo: Carro e Roda — as rodas existem mesmo sem o carro. A composição é uma agregação mais forte, em que a parte não existe sem o todo — representada por uma linha com losango preenchido (sólido) do lado da classe "todo". Exemplo: NotaFiscal e ItemNotaFiscal — se a nota é destruída, os itens também são.

A dependência é o relacionamento mais fraco, indicando que uma classe usa outra de alguma forma (por exemplo, como parâmetro de método ou variável local), mas não há vínculo estrutural permanente. É representada por uma linha tracejada com seta apontando para a classe da qual se depende. Já a realização (usada em interfaces) é representada por uma linha tracejada com seta triangular vazia — mas não aparece nas alternativas desta questão.

A pegadinha clássica da banca é confundir os símbolos: a seta triangular vazia da generalização com o losango da agregação/composição, ou trocar agregação por composição (losango vazio × preenchido). Nesta questão, o diagrama mostra claramente uma seta triangular vazia, o que só pode ser generalização. Guarde o mapa dos símbolos:

Relacionamento

Notação

Significado

Associação

Linha sólida simples

"tem um" genérico

Agregação

Linha sólida + losango vazio

todo-parte, parte independente

Composição

Linha sólida + losango preenchido

todo-parte, parte dependente

Dependência

Linha tracejada + seta

uso fraco

Generalização

Linha sólida + seta triangular vazia

"é um" (herança)

É exatamente esse critério — o formato da extremidade da linha — que separa as alternativas: se a extremidade é um triângulo vazio, é generalização; se é um losango, é agregação ou composição; se é uma seta comum, é associação ou dependência.

Relacionamentos UML
  • 1Estruturais (linha sólida)
    • Associação (linha simples)
    • Agregação (losango vazio)
    • Composição (losango preenchido)
    • Generalização (triângulo vazio)
  • 2Comportamentais
    • Dependência (linha tracejada)
    • Realização (tracejada + triângulo)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A associação é representada por uma linha sólida simples, sem losango ou triângulo na extremidade. O diagrama da questão mostra uma seta triangular vazia, que é o símbolo exclusivo da generalização. A associação indica um vínculo estrutural genérico entre classes ("tem um"), mas não é o que o diagrama representa.

Alternativa B — ❌ Incorreta

A composição é representada por uma linha com losango preenchido (sólido) do lado da classe que contém a outra. O diagrama não apresenta losango algum — apresenta uma seta triangular vazia. Além disso, a composição é um relacionamento todo-parte com dependência existencial (a parte não existe sem o todo), o que não se confunde com herança.

Alternativa C — ❌ Incorreta

A dependência é representada por uma linha tracejada com seta, indicando um uso fraco entre classes. O diagrama da questão usa linha sólida com seta triangular vazia, o que descarta a dependência. A dependência não estabelece hierarquia nem vínculo estrutural permanente — é apenas "usa".

Alternativa D — ❌ Incorreta

A agregação é representada por uma linha com losango vazio do lado da classe "todo". O diagrama não tem losango — tem triângulo vazio. A agregação é um relacionamento todo-parte em que a parte pode existir independentemente (ex.: Carro e Roda), mas não é o caso do diagrama, que mostra herança.

Alternativa E — ✅ Correta ⟵ GABARITO

A generalização (herança) é representada por uma linha sólida com seta triangular vazia apontando da classe filha para a classe pai. É exatamente o que o diagrama mostra: a seta triangular vazia indica que uma classe é especialização da outra, herdando seus atributos e operações. Esse é o único relacionamento entre classes que usa essa notação, tornando a identificação imediata.

NÃO CAIA NESSA!

A banca explora a semelhança visual entre os símbolos: a seta triangular vazia da generalização pode ser confundida com o losango da agregação/composição, ou com a seta comum da associação. A chave é olhar a extremidade da linha: triângulo vazio = herança; losango vazio = agregação; losango preenchido = composição; linha tracejada = dependência. Com esse mapa, você elimina as alternativas erradas sem hesitar.

PEGA ESSA DICA!

Para fixar, associe cada símbolo a uma palavra-chave: triângulo = "é um" (herança); losango vazio = "parte de, mas sobrevive" (agregação); losango preenchido = "parte de, e morre junto" (composição); tracejado = "usa" (dependência). Na prova, desenhe mentalmente o símbolo e pergunte: "a parte existe sem o todo?" — se sim, agregação; se não, composição.

Gabarito: letra E — o relacionamento é a generalização.

Link permanente: /questoes/fg165467