Questão de Engenharia de Software — UML — FGV 2025
Engenharia de Software›UML
Código
fg115299
Banca
FGV
Órgão
MPU
Ano
2025
Nível
Superior
Cargo
Analista do - Desenvolvimento de Sistemas
Observe o diagrama abaixo modelado em UML 2.5.1.Semanticamente, o diagrama indica que:
Aa associação de dependência entre as classes A e B é binária com duas extremidades nomeadas;
Ba extremidade b da associação entre as classes A e B pode ser representada por um atributo da classe A;
Co valor 5 do atributo a4 da classe A é atribuído a todas as instâncias da classe, tornando-se o valor fixo da propriedade;
Da agregação composta entre as classes B e C exige que um objeto parte seja incluído em no mínimo um objeto composto por vez;
Ena associação entre as classes A e B, a extremidade a é de propriedade da classe A e a extremidade b é de propriedade da classe B.
Revelar gabarito e comentário▾
GabaritoB — a extremidade b da associação entre as classes A e B pode ser representada por um atributo da classe A;
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: Associação, Extremidades e Propriedades
Gabarito: letra B. Na UML 2.5.1, uma extremidade de associação nomeada e navegável (como b na associação entre A e B) é semanticamente equivalente a um atributo da classe na extremidade oposta — ou seja, a extremidade b pode ser representada como um atributo da classe A. Essa é a leitura correta do diagrama, conforme o conceito de association end como propriedade da classe.
O diagrama de classes UML é a representação estática da estrutura de um sistema: mostra classes, atributos, operações e os relacionamentos entre elas. Um dos relacionamentos mais comuns é a associação, que representa uma conexão semântica entre instâncias de duas ou mais classes. Na UML, uma associação possui extremidades (association ends), e cada extremidade pode ter um nome (um role name) e uma multiplicidade (como 1, 0..*, 1..*).
A chave para entender a questão está em como a UML trata essas extremidades. Quando uma extremidade de associação tem um nome e é navegável (indicada por uma seta aberta, ou implicitamente pela presença de um nome), ela pode ser implementada como um atributo na classe da extremidade oposta. Por exemplo, se a classe A tem uma associação com a classe B, e a extremidade do lado de B é nomeada b, isso significa que cada instância de A pode ter uma referência a uma instância de B, que seria armazenada em um atributo chamado b na classe A. Essa é a interpretação semântica que a alternativa B descreve.
É importante distinguir associação de agregação e composição. Na associação simples, as classes são independentes; na agregação, uma classe é "parte de" outra, mas pode existir sozinha; na composição, a parte não existe sem o todo. A alternativa D fala de "agregação composta", que é um termo incorreto — o correto seria composição, e mesmo assim a afirmação sobre a multiplicidade mínima de 1 não é uma regra geral da UML, mas uma restrição específica do modelo.
A pegadinha da banca está em confundir propriedade da extremidade (quem é o dono da extremidade, indicado por uma seta ou por um ponto) com navegabilidade (a capacidade de uma classe acessar a outra). A alternativa E afirma que a extremidade a é propriedade da classe A e a extremidade b é propriedade da classe B, o que seria verdade apenas se houvesse indicação explícita de propriedade (como uma seta ou um ponto) em cada extremidade — o que não é o caso no diagrama. A alternativa B, por sua vez, fala de representação como atributo, que é a consequência prática da navegabilidade.
Guarde a fronteira entre navegabilidade (que gera atributo na classe oposta) e propriedade da extremidade (que indica quem é o dono da referência): é exatamente nela que as alternativas se dividem.
Alternativa A — ❌ Incorreta
Afirma que a associação entre A e B é "binária com duas extremidades nomeadas". O erro está em dizer que a associação é binária — uma associação binária conecta exatamente duas classes, o que é verdade, mas a alternativa não menciona que as extremidades têm multiplicidades e que a navegabilidade é o que importa. Além disso, o termo "duas extremidades nomeadas" é vago: na UML, uma associação binária tem duas extremidades, mas nem sempre ambas são nomeadas. A alternativa não captura a semântica essencial do diagrama, que é a possibilidade de representar a extremidade como atributo.
Alternativa B — ✅ Correta ⟵ GABARITO
A extremidade b da associação entre A e B pode ser representada como um atributo da classe A. Isso decorre do conceito de navegabilidade: se a associação é navegável de A para B (indicada por uma seta ou pela presença do nome b na extremidade), então a classe A pode ter um atributo do tipo B, chamado b. Essa é a forma padrão de implementar uma associação navegável em linguagens orientadas a objetos. A alternativa está correta porque descreve exatamente essa equivalência semântica.
Alternativa C — ❌ Incorreta
Afirma que o valor 5 do atributo a4 da classe A é atribuído a todas as instâncias, tornando-se o valor fixo da propriedade. O erro está em confundir valor inicial com valor fixo. Na UML, um valor inicial (como = 5) é o valor que o atributo assume quando o objeto é criado, mas ele pode ser alterado posteriormente. Um valor fixo (constante) seria indicado de outra forma, como {readOnly} ou {frozen}. A alternativa generaliza indevidamente o valor inicial como imutável.
Alternativa D — ❌ Incorreta
Fala em "agregação composta" entre B e C, exigindo que um objeto parte seja incluído em no mínimo um objeto composto. O termo correto é composição, não "agregação composta". Além disso, a multiplicidade mínima de 1 ("no mínimo um") não é uma regra geral da composição — ela depende do modelo específico. Na composição, a parte não pode existir sem o todo, mas a multiplicidade pode ser 0..1 ou 0..*, dependendo do domínio. A alternativa mistura conceitos e impõe uma restrição que não é universal.
Alternativa E — ❌ Incorreta
Afirma que a extremidade a é propriedade da classe A e a extremidade b é propriedade da classe B. Isso só seria verdade se houvesse indicação explícita de propriedade (como uma seta ou um ponto) em cada extremidade. No diagrama, a navegabilidade não é indicada dessa forma, então não se pode afirmar que cada extremidade é propriedade da classe correspondente. A alternativa confunde propriedade da extremidade com navegabilidade, que são conceitos distintos na UML.
NÃO CAIA NESSA!
A banca troca navegabilidade (que gera atributo na classe oposta) por propriedade da extremidade (quem é o dono da referência). Na alternativa E, ela afirma que cada extremidade é propriedade da classe correspondente, mas isso só seria verdade com indicação explícita de propriedade. Na alternativa B, a navegabilidade é o que permite representar a extremidade como atributo. Fique atento: navegabilidade ≠ propriedade.
PEGA ESSA DICA!
Para resolver questões de associação UML, verifique sempre: (1) se a extremidade tem nome e multiplicidade; (2) se há indicação de navegabilidade (seta ou ponto); (3) se a extremidade pode ser implementada como atributo. Esses três pontos decidem a maioria das questões sobre associações.