Questão de Engenharia de Software — UML — FGV 2024
- Código
- fg165465
- Banca
- FGV
- Órgão
- CGE PB
- Ano
- 2024
- Cargo
- ACP ( )

- ARealização;
- BAgregação;
- CComposição;
- DDependência;
- EGeneralização.

GabaritoE — Generalização.
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 |
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.
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.
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.
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.
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".
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