Questão de Engenharia de Software — UML — VUNESP 2023
Engenharia de Software›UML
Código
vu196736
Banca
VUNESP
Órgão
UFABC
Ano
2023
Cargo
ATI ( )
Considere o seguinte diagrama de classes UML. Com base nesse diagrama, é correto concluir que
Apara cada instância de A, existe uma única instância de B.
Bquando uma instância de A for destruída, as instâncias correspondentes de B também o serão.
CB é subclasse de A.
Dpara cada instância de B, existe uma única instância de A correspondente que não é compartilhada com outras instâncias de B.
EA e B são classes persistentes.
Revelar gabarito e comentário▾
GabaritoB — quando uma instância de A for destruída, as instâncias correspondentes de B também o serã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”.
Diagrama de classes UML: composição e agregação
Gabarito: letra B. A alternativa correta descreve o comportamento de uma composição — o losango preenchido (♦) que liga A a B —, em que a classe-parte (B) é destruída quando a classe-todo (A) é destruída. A notação UML define que a composição é uma forma forte de agregação, com ciclo de vida dependente entre o todo e a parte.
O diagrama de classes é o principal diagrama estrutural da UML. Ele mostra as classes do sistema, seus atributos, métodos e, principalmente, os relacionamentos entre elas. Os relacionamentos mais cobrados em prova são a associação, a agregação e a composição — e é exatamente a distinção entre agregação e composição que esta questão explora.
A associação é o relacionamento mais genérico: indica que uma classe conhece a outra, sem estabelecer vínculo de posse ou dependência de ciclo de vida. A agregação (losango vazio, ◇) representa uma relação "todo-parte" em que a parte pode existir independentemente do todo — por exemplo, um time de futebol tem jogadores, mas os jogadores existem mesmo se o time for extinto. Já a composição (losango preenchido, ◆) é uma relação "todo-parte" mais forte: a parte não tem existência autônoma — se o todo for destruído, a parte também é. Um exemplo clássico é a relação entre uma casa e seus cômodos: se a casa é demolida, os cômodos deixam de existir.
Na prática, a diferença entre agregação e composição está no ciclo de vida das instâncias. Na agregação, a parte pode ser criada antes do todo e continuar existindo depois que o todo é destruído. Na composição, a parte é criada junto com o todo e morre junto com ele. É essa dependência existencial que a alternativa B descreve com precisão.
A banca costuma confundir os símbolos: o losango vazio (agregação) com o losango preenchido (composição), e também a composição com a herança (seta com triângulo vazio), que indica que uma classe é subclasse de outra. Nesta questão, a alternativa C tenta exatamente essa confusão — mas o losango preenchido não tem nada a ver com herança.
Guarde o critério decisivo: losango preenchido = composição = ciclo de vida dependente. É esse critério que separa a alternativa correta das demais.
Critério
Composição (◆) — relação A→B no diagrama
Agregação (◇) — relação alternativa
Herança (▷) — relação alternativa
Símbolo UML
Losango preenchido
Losango vazio
Seta com triângulo vazio
Ciclo de vida da parte (B)
Dependente: B é destruído quando A é destruído
Independente: B sobrevive à destruição de A
Não se aplica (relação hierárquica, não todo-parte)
Existência da parte sem o todo
Impossível
Possível
Não se aplica
Relação entre as classes
Todo-parte (composição)
Todo-parte (agregação)
Subclasse/superclasse
Efeito da destruição do todo (A)
B é destruído junto
B permanece existindo
Nenhum efeito direto sobre instâncias
Alternativa correspondente na questão
B (correta)
— (não listada como correta)
C (incorreta)
Alternativa A — ❌ Incorreta
Afirma que para cada instância de A existe uma única instância de B. Isso descreveria uma multiplicidade 1 para 1 (1..1) entre as classes, mas o diagrama indica uma relação de composição com multiplicidade 1 para muitos (1..*), ou seja, uma instância de A pode estar associada a várias instâncias de B. A alternativa confunde o tipo de relacionamento (composição) com a cardinalidade (1..1), que são conceitos independentes.
Alternativa B — ✅ Correta ⟵ GABARITO
Descreve exatamente o comportamento da composição: quando a instância da classe-todo (A) é destruída, as instâncias da classe-parte (B) também são destruídas. É a definição de ciclo de vida dependente, característica central da composição na UML. O losango preenchido (◆) indica que B não tem existência autônoma em relação a A.
Alternativa C — ❌ Incorreta
Afirma que B é subclasse de A, o que caracterizaria uma relação de herança (generalização/especialização), representada por uma seta com triângulo vazio apontando para a classe-pai. O diagrama, porém, mostra um losango preenchido, que é o símbolo de composição — um relacionamento estrutural, não hierárquico. A alternativa confunde composição com herança.
Alternativa D — ❌ Incorreta
Afirma que para cada instância de B existe uma única instância de A correspondente que não é compartilhada com outras instâncias de B. Isso descreveria uma multiplicidade 1 para 1 (1..1) com exclusividade, mas o diagrama indica multiplicidade 1 para muitos (1..*). Além disso, a composição não implica necessariamente exclusividade de associação — o que a define é o ciclo de vida dependente, não a cardinalidade. A alternativa mistura os conceitos de multiplicidade e composição.
Alternativa E — ❌ Incorreta
Afirma que A e B são classes persistentes. Persistência é um conceito de banco de dados — significa que os objetos das classes são armazenados de forma permanente em um meio de armazenamento (como um banco de dados relacional). O diagrama de classes UML, por si só, não indica se as classes são persistentes ou não; isso seria representado por outras notações, como anotações de mapeamento objeto-relacional (ex.: JPA/Hibernate) ou diagramas de componentes/persistência. A alternativa extrapola o que o diagrama mostra.
NÃO CAIA NESSA!
A banca explora a confusão entre os símbolos de agregação (losango vazio) e composição (losango preenchido), e também entre composição e herança. O losango preenchido é o símbolo que indica ciclo de vida dependente — é ele que torna a alternativa B correta. Fique atento: se o losango fosse vazio, a alternativa B estaria errada, pois na agregação a parte sobrevive ao todo.
PEGA ESSA DICA!
Para não errar, decore o par de símbolos: losango vazio (◇) = agregação = parte independente; losango preenchido (◆) = composição = parte dependente. Na prova, ao ver um losango preenchido, pergunte-se: "a parte pode existir sem o todo?" Se não pode, é composição.