Pular para o conteúdo principal

Questão de Engenharia de Software — Geral — VUNESP 2024

Engenharia de SoftwareGeral
Código
vu212226
Banca
VUNESP
Órgão
Pref Osasco
Ano
2024
Cargo
Ana ( )

Considere o diagrama de classes UML abaixo.

Imagem associada para resolução da questão

Assinale a alternativa correta a respeito do diagrama.

  1. AQuando objetos da classe A são destruídos, os objetos associados da classe B também são destruídos e, consequentemente, os objetos da classe C associados a instâncias de B também são destruídos.
  2. BQuando os objetos da classe A são destruídos, os objetos associados da classe B, apenas, também são destruídos.
  3. CUm objeto da classe C não pode existir sem que exista algum objeto da classe B associado.
  4. DQuando um objeto da classe B é criado, automaticamente um objeto da classe C também é criado.
  5. EUm objeto da classe A não pode existir sem que exista algum objeto da classe B associado.
Revelar gabarito e comentário

GabaritoB — Quando os objetos da classe A são destruídos, os objetos associados da classe B, apenas, também são destruídos.

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: Composição e Agregação

Gabarito: letra B. No diagrama, a relação entre as classes A e B é de composição (losango preenchido), o que significa que a destruição de um objeto da classe A implica a destruição dos objetos da classe B diretamente associados. A alternativa B afirma exatamente isso: "Quando os objetos da classe A são destruídos, os objetos associados da classe B, apenas, também são destruídos." A relação entre B e C, por sua vez, é de agregação (losango vazio), em que a destruição de B não acarreta a destruição de C.

O diagrama de classes é um dos principais diagramas estruturais da UML, utilizado para representar a estrutura estática do sistema, ou seja, as classes, seus atributos, métodos e os relacionamentos entre elas. Os relacionamentos mais comuns são a associação, a agregação e a composição. A distinção entre agregação e composição é fundamental para interpretar corretamente o ciclo de vida dos objetos.

A composição é um tipo de associação em que a classe "todo" é responsável pelo ciclo de vida da classe "parte". Isso significa que, se o objeto "todo" for destruído, os objetos "parte" também serão. A notação UML para composição é um losango preenchido (ou sólido) na extremidade da classe "todo". Por exemplo, em um sistema de uma casa, a relação entre a classe Casa e a classe Cômodo é de composição: se a casa for demolida, os cômodos deixam de existir.

A agregação, por outro lado, é uma associação em que a classe "todo" contém referências a objetos da classe "parte", mas não é responsável pelo ciclo de vida deles. A destruição do objeto "todo" não implica a destruição dos objetos "parte". A notação UML para agregação é um losango vazio na extremidade da classe "todo". Por exemplo, a relação entre Escola e Professor é de agregação: se a escola for fechada, os professores continuam existindo.

A associação simples é a forma mais básica de relacionamento, representada por uma linha contínua, sem losango. Ela indica que as classes estão relacionadas, mas não especifica a natureza do ciclo de vida. Por exemplo, a relação entre Cliente e Pedido é uma associação simples: um cliente pode fazer vários pedidos, mas a destruição de um não afeta o outro.

A pegadinha desta questão está em confundir os símbolos de composição e agregação. A banca espera que o candidato identifique corretamente qual relacionamento é de composição (losango preenchido) e qual é de agregação (losango vazio). A alternativa A, por exemplo, afirma que a destruição de A também destrói C, o que seria verdade se a relação entre B e C fosse de composição, mas não é o caso.

Guarde a diferença: composição = losango preenchido = destruição em cascata; agregação = losango vazio = independência de ciclo de vida. É exatamente essa distinção que separa as alternativas corretas das incorretas.

Critério

Composição (A → B)

Agregação (B → C)

Notação UML

Losango preenchido

Losango vazio

Ciclo de vida da parte

Parte (B) destruída junto com o todo (A)

Parte (C) independente do todo (B)

Existência da parte sem o todo

Impossível

Possível

Criação automática da parte

Pode ocorrer

Não ocorre

Destruição em cascata

Sim (A destrói B)

Não (B não destrói C)

Alternativa A — ❌ Incorreta

Afirma que a destruição de objetos da classe A também destrói os objetos da classe C associados a instâncias de B. Isso estaria correto se a relação entre B e C fosse de composição, mas o diagrama mostra uma agregação (losango vazio) entre B e C. Na agregação, a destruição do todo (B) não implica a destruição da parte (C). Portanto, a alternativa erra ao estender o efeito da composição (A-B) para a relação de agregação (B-C).

Alternativa B — ✅ Correta ⟵ GABARITO

A alternativa afirma que, quando os objetos da classe A são destruídos, apenas os objetos associados da classe B também são destruídos. Isso está correto, pois a relação entre A e B é de composição (losango preenchido), o que implica que a destruição do todo (A) acarreta a destruição das partes (B). A palavra "apenas" é crucial, pois exclui a classe C, que não é destruída, já que a relação entre B e C é de agregação.

Alternativa C — ❌ Incorreta

Afirma que um objeto da classe C não pode existir sem que exista algum objeto da classe B associado. Isso seria verdade se a relação entre B e C fosse de composição, mas o diagrama mostra uma agregação. Na agregação, a parte (C) pode existir independentemente do todo (B). Portanto, a alternativa está incorreta.

Alternativa D — ❌ Incorreta

Afirma que, quando um objeto da classe B é criado, automaticamente um objeto da classe C também é criado. Isso não é uma consequência direta da agregação. Na agregação, a criação do todo não implica a criação automática das partes. A criação de C é independente da criação de B. A alternativa confunde agregação com composição, onde a criação do todo pode implicar a criação das partes.

Alternativa E — ❌ Incorreta

Afirma que um objeto da classe A não pode existir sem que exista algum objeto da classe B associado. Isso seria verdade se a relação entre A e B fosse de composição, mas a alternativa inverte a lógica. Na composição, a parte (B) não pode existir sem o todo (A), mas o todo (A) pode existir sem a parte (B) em alguns contextos, dependendo da multiplicidade. A alternativa afirma o contrário, que o todo depende da parte, o que não é a regra da composição. A regra é que a parte depende do todo.

Gabarito: letra B

Link permanente: /questoes/vu212226