Questão de Engenharia de Software — UML — FGV 2024
Engenharia de Software›UML
Código
fg165482
Banca
FGV
Órgão
CVM
Ano
2024
Cargo
Ana ( )
O diagrama abaixo, modelado na linguagem UML 2.5.1, representa um conceito do negócio para o Sistema PARCEIROS utilizado por uma associação civil sem fins lucrativos. O diagrama acima explicita que:
Aa designação powertype :ParticipanteTipo no GeneralizationSet em Participante especifica uma outra tipificação para as subclasses de Participante;
Bcada instância de Associado tem seus próprios atributos e compartilha instâncias com Eventual e Incentivador;
Cas instâncias das subclasses de Participante podem corresponder a várias instâncias de ParticipanteTipo simultaneamente;
Das instâncias de ParticipanteTipo têm um relacionamento semântico de realização com as instâncias de Participante;
Eo GeneralizationSet em Participante tem tipificação forte e está cobrindo semanticamente seus classificadores, que não têm instâncias em comum.
Revelar gabarito e comentário▾
GabaritoA — a designação powertype :ParticipanteTipo no GeneralizationSet em Participante especifica uma outra tipificação para as subclasses de Participante;
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 – GeneralizationSet e Powertype
Gabarito: letra A. A alternativa correta descreve que a designação powertype :ParticipanteTipo no GeneralizationSet em Participante especifica uma outra tipificação para as subclasses de Participante. Isso significa que ParticipanteTipo é um powertype — uma classe cujas instâncias são os próprios tipos das subclasses — e o GeneralizationSet indica que essa tipificação é dinâmica, permitindo que uma instância de Participante seja reclassificada entre as subclasses (Associado, Eventual, Incentivador) conforme o valor de ParticipanteTipo.
O conceito central aqui é o de powertype na UML. Um powertype é uma classe cujas instâncias são subclasses de outra classe. No diagrama, ParticipanteTipo é o powertype, e suas instâncias (por exemplo, "Associado", "Eventual", "Incentivador") são os tipos possíveis de Participante. O GeneralizationSet com a propriedade powertype indica que a classificação de um Participante em uma de suas subclasses é dinâmica — ou seja, uma instância pode mudar de subclassificação ao longo do tempo, conforme o valor do atributo ParticipanteTipo.
Na prática, imagine um sistema de uma associação: uma pessoa é cadastrada como Participante. Inicialmente, ela pode ser Eventual (participa de um evento isolado). Depois, decide se associar e passa a ser Associado. Com o powertype, essa mudança é modelada de forma explícita: o ParticipanteTipo daquela instância muda de "Eventual" para "Associado", e ela é reclassificada automaticamente. Isso é diferente de uma generalização comum, onde a subclassificação é estática — definida no momento da criação do objeto e imutável.
A distinção crucial é entre generalização estática (padrão) e generalização dinâmica (com powertype). Na estática, uma instância pertence a uma única subclasse e não pode mudar. Na dinâmica, a instância pode transitar entre subclasses, e o powertype é o mecanismo que controla essa transição. É exatamente essa característica que a alternativa A captura: o powertype especifica "uma outra tipificação" — ou seja, uma forma de classificar que é independente da hierarquia estática.
A pegadinha da banca está em confundir o powertype com uma relação de instanciação comum, ou em interpretar a generalização como estática. Guarde a fronteira: powertype = classificação dinâmica; generalização comum = classificação estática. É nessa fronteira que as alternativas se dividem.
Alternativa
Afirmação
Veredito
Motivo
A
powertype :ParticipanteTipo especifica outra tipificação para as subclasses de Participante
✅ Correta
O powertype define os tipos possíveis (Associado, Eventual, Incentivador) e permite classificação dinâmica, complementando a hierarquia estática.
B
Cada instância de Associado tem atributos próprios e compartilha instâncias com Eventual e Incentivador
❌ Incorreta
Subclasses são disjuntas; o powertype permite mudança de subclasse, não pertencimento simultâneo a várias.
C
Instâncias das subclasses podem corresponder a várias instâncias de ParticipanteTipo simultaneamente
❌ Incorreta
Cada instância de Participante tem um único valor de ParticipanteTipo em dado momento.
D
Instâncias de ParticipanteTipo têm relação de realização com instâncias de Participante
❌ Incorreta
A relação é de classificação dinâmica (powertype), não de realização (interface/implementação).
E
GeneralizationSet tem "tipificação forte" e cobertura semântica, sem instâncias em comum
❌ Incorreta
"Tipificação forte" não é propriedade UML; o diagrama não indica disjunção ou completude.
GeneralizationSet (UML)
1Tipificação estática
Subclasse fixa na criação
Não muda ao longo do tempo
2Tipificação dinâmica (powertype)
Instância muda de subclasse
Controlada por ParticipanteTipo
3Propriedades do conjunto
complete/incomplete (cobertura)
disjoint/overlapping (sobreposição)
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa afirma que a designação powertype :ParticipanteTipo no GeneralizationSet em Participante especifica uma outra tipificação para as subclasses de Participante. Isso está correto: o powertype ParticipanteTipo define os tipos possíveis de Participante (Associado, Eventual, Incentivador), e o GeneralizationSet com essa designação indica que a subclassificação é dinâmica. A palavra-chave é "outra tipificação" — o powertype é uma classificação adicional, que não substitui a hierarquia estática, mas a complementa, permitindo que uma instância mude de subclasse.
Alternativa B — ❌ Incorreta
Afirma que "cada instância de Associado tem seus próprios atributos e compartilha instâncias com Eventual e Incentivador". O erro está em "compartilha instâncias": em uma generalização, as subclasses são disjuntas (uma instância pertence a uma única subclasse) ou sobrepostas (pode pertencer a várias), mas o diagrama com powertype não indica sobreposição. Além disso, o powertype permite que uma instância mude de subclasse, mas não que ela pertença a várias simultaneamente. O conceito confundido é o de sobreposição de subclasses (generalização com {overlapping}) com o de reclassificação dinâmica.
Alternativa C — ❌ Incorreta
Diz que "as instâncias das subclasses de Participante podem corresponder a várias instâncias de ParticipanteTipo simultaneamente". Isso é falso: uma instância de Participante tem um único valor de ParticipanteTipo em um dado momento. O powertype define o tipo atual da instância, não múltiplos tipos simultâneos. A confusão aqui é entre o powertype (que é uma classificação única por instância) e uma associação muitos-para-muitos (onde uma instância poderia ter vários tipos).
Alternativa D — ❌ Incorreta
Afirma que "as instâncias de ParticipanteTipo têm um relacionamento semântico de realização com as instâncias de Participante". Realização (realization) é um relacionamento entre uma classe e uma interface, ou entre um caso de uso e sua implementação. Não é o caso aqui: ParticipanteTipo é um powertype, e a relação é de classificação dinâmica, não de realização. O conceito confundido é o de realização (seta tracejada com triângulo) com o de dependência de classificação.
Alternativa E — ❌ Incorreta
Diz que "o GeneralizationSet em Participante tem tipificação forte e está cobrindo semanticamente seus classificadores, que não têm instâncias em comum". O erro está em "tipificação forte": na UML, um GeneralizationSet pode ter os atributos {complete, disjoint} (cobertura total e disjunta) ou {incomplete, overlapping}. O termo "tipificação forte" não é uma propriedade padrão da UML. Além disso, o diagrama com powertype não indica necessariamente que as subclasses são disjuntas — o powertype permite reclassificação, mas não diz nada sobre sobreposição. A alternativa mistura conceitos de generalização (complete/disjoint) com o de powertype, que é um mecanismo diferente.