Questão de Engenharia de Software — UML — CESPE / CEBRASPE 2024
- Código
- ce403895
- Banca
- CESPE / CEBRASPE
- Órgão
- STJ
- Ano
- 2024
- Cargo
- AJ
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado (E). A afirmativa está incorreta porque confunde dois relacionamentos distintos da UML: a associação (que representa uma ligação estrutural entre classes, como "cliente possui pedidos") com a generalização (que representa herança, em que uma classe filha é substituível pela classe pai e compartilha estrutura e comportamento). A descrição apresentada — "especialização", "filhos substituíveis por objetos do item generalizado", "compartilhar comportamento e estrutura dos pais" — é exatamente a definição de generalização/especialização, não de associação.
Na UML, os relacionamentos entre classes são divididos em categorias com propósitos distintos. A associação é o relacionamento mais básico: indica que objetos de uma classe se conectam a objetos de outra, como um vínculo semântico. Por exemplo, um Pedido está associado a um Cliente — existe uma ligação, mas nenhuma das classes é "pai" ou "filho" da outra. Já a generalização (também chamada de herança ou especialização) é o mecanismo que permite que uma classe filha herde atributos e métodos de uma classe pai, estabelecendo uma relação "é um". Um Carro é um Veículo; um Cachorro é um Animal. A generalização é representada por uma seta com ponta vazia apontando para a classe pai, enquanto a associação é representada por uma linha simples (com ou sem seta, dependendo da navegabilidade).
A confusão entre esses dois conceitos é uma pegadinha clássica em provas de UML. O enunciado descreve com precisão o que é generalização, mas a rotula como associação. É como se a banca dissesse "a associação é quando um filho herda do pai" — o que está tecnicamente errado. A associação não envolve hierarquia nem substituição; ela apenas conecta classes independentes. A generalização, por sua vez, é que estabelece a relação de especialização, em que o objeto filho pode ser usado onde o pai é esperado (princípio da substituição de Liskov).
Para fixar: associação = "cliente faz pedidos" (ligação); generalização = "carro é um veículo" (herança). A banca trocou os termos para testar se o candidato conhece a diferença. Guarde essa distinção — é exatamente nela que esta questão se resolve.
Relacionamento | Definição | Exemplo | Representação UML |
|---|---|---|---|
Associação | Ligação estrutural entre classes independentes, sem hierarquia |
| Linha simples (com ou sem seta) |
Generalização | Herança/especialização: filho herda e é substituível pelo pai |
| Seta com ponta vazia apontando para a classe pai |
A afirmativa está errada porque descreve o relacionamento de generalização (herança/especialização) como se fosse associação. Na UML 2.5:
Associação: relacionamento estrutural que conecta instâncias de classes, sem hierarquia. Ex.: Professor — Disciplina.
Generalização: relacionamento de herança, em que a classe filha (especializada) herda e pode substituir a classe pai (generalizada). Ex.: Cachorro — Animal.
O trecho "especialização, em que os itens dos objetos especializados (filhos) são substituíveis por objetos do item generalizado (pais)" é a definição literal de generalização, não de associação. Portanto, o item está errado.
Gabarito: Errado (E).
Link permanente: /questoes/ce403895