Pular para o conteúdo principal

Questão de Engenharia de Software — UML — FGV 2024

Engenharia de SoftwareUML
Código
fg077382
Banca
FGV
Órgão
CVM
Ano
2024
Nível
Superior
Cargo
Analista - Perfil 8 - TI / Sistemas e Desenvolvimento - Tarde
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.Imagem associada para resolução da questãoO diagrama acima explicita que:
  1. Aa designação powertype :ParticipanteTipo no GeneralizationSet em Participante especifica uma outra tipificação para as subclasses de Participante;
  2. Bcada instância de Associado tem seus próprios atributos e compartilha instâncias com Eventual e Incentivador;
  3. Cas instâncias das subclasses de Participante podem corresponder a várias instâncias de ParticipanteTipo simultaneamente;
  4. Das instâncias de ParticipanteTipo têm um relacionamento semântico de realização com as instâncias de Participante;
  5. 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”.

GeneralizationSet e Powertype na UML

Gabarito: letra A. A alternativa correta afirma que a designação powertype :ParticipanteTipo no GeneralizationSet em Participante especifica uma outra tipificação para as subclasses de Participante. Isso está de acordo com a semântica de powertype na UML, onde um powertype é um classificador cujas instâncias são subclasses de outro classificador, permitindo uma tipificação adicional e dinâmica das subclasses.

O conceito central aqui é o de powertype e GeneralizationSet na UML. Um GeneralizationSet é um agrupamento de relações de generalização entre um classificador (a superclasse) e suas subclasses. Ele pode ter propriedades como {complete, disjoint} ou {incomplete, overlapping}, que definem se a cobertura das subclasses é total ou parcial e se elas podem ter instâncias em comum. O powertype, por sua vez, é um classificador cujas instâncias são os próprios classificadores que participam do GeneralizationSet. Em outras palavras, o powertype é uma "classe de classes": cada instância do powertype é uma subclasse da superclasse original.

Na prática, isso significa que, além da hierarquia de herança estática (Participante → Associado, Eventual, Incentivador), o powertype ParticipanteTipo permite uma tipificação adicional e dinâmica. Por exemplo, um Associado poderia ser classificado como ParticipanteTipo de uma determinada categoria (como "Ativo" ou "Inativo"), sem que isso seja representado como uma subclasse estática. Essa é uma forma de modelar atributos ou comportamentos que variam conforme o tipo, sem criar uma explosão de subclasses.

A distinção crucial que a banca explora é entre a generalização estática (as subclasses fixas no diagrama) e a tipificação dinâmica via powertype. Enquanto a generalização define uma hierarquia rígida de classes, o powertype permite que as instâncias das subclasses sejam reclassificadas em tempo de execução, de acordo com o valor do powertype. É exatamente essa "outra tipificação" que a alternativa A menciona, e é o que a torna correta.

A pegadinha da questão está em confundir o powertype com uma relação de realização, com uma associação comum, ou com a ideia de que as subclasses compartilham instâncias entre si. O powertype não é uma realização (que é uma relação entre uma interface e uma classe que a implementa), nem uma associação (que é uma relação estrutural entre instâncias de duas classes). Ele é um mecanismo de tipificação que atua sobre as próprias classes, não sobre as instâncias diretamente.

Guarde a fronteira entre generalização estática e powertype dinâmico: é exatamente nela que as alternativas se dividem. A alternativa correta reconhece o powertype como uma tipificação adicional; as incorretas tentam descrevê-lo como uma relação de instância, realização ou compartilhamento de instâncias.

Alternativa

Afirmação

Análise

A

powertype :ParticipanteTipo no GeneralizationSet especifica outra tipificação para as subclasses de Participante.

Correta. O powertype é um classificador cujas instâncias são as próprias subclasses, permitindo tipificação adicional e dinâmica além da hierarquia estática.

B

Cada instância de Associado tem atributos próprios e compartilha instâncias com Eventual e Incentivador.

Incorreta. Sem indicação de {overlapping}, as subclasses são disjuntas; uma instância de Associado não pode ser também de Eventual ou Incentivador.

C

Instâncias das subclasses de Participante podem corresponder a várias instâncias de ParticipanteTipo simultaneamente.

Incorreta. Confunde níveis: as instâncias de ParticipanteTipo são as classes (Associado, Eventual, Incentivador), não os objetos dessas classes.

D

Instâncias de ParticipanteTipo têm relação de realização com instâncias de Participante.

Incorreta. Realização é relação interface-classe (seta tracejada); aqui a relação é de powertype, não de implementação.

E

O GeneralizationSet tem "tipificação forte" e cobre semanticamente os classificadores, sem instâncias em comum.

Incorreta. "Tipificação forte" não é termo padrão da UML; a disjunção só valeria se o conjunto fosse {disjoint}, o que não é explicitado.

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 é um classificador cujas instâncias são as próprias subclasses do GeneralizationSet. Assim, ParticipanteTipo é uma "classe de classes" que permite tipificar as subclasses de Participante de forma adicional e dinâmica, além da hierarquia estática já representada. Por exemplo, as subclasses Associado, Eventual e Incentivador podem ser instâncias de ParticipanteTipo, permitindo que cada uma seja classificada de acordo com um tipo específico (como "Ativo", "Inativo", etc.) sem criar novas subclasses estáticas.

Alternativa B — ❌ Incorreta

A alternativa 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 por padrão (a menos que o GeneralizationSet seja marcado como overlapping). O enunciado não indica que o GeneralizationSet é overlapping, portanto, uma instância de Associado não pode ser simultaneamente uma instância de Eventual ou Incentivador. Cada instância pertence a uma única subclasse. O compartilhamento de instâncias só ocorreria se o GeneralizationSet fosse explicitamente {overlapping}, o que não é o caso.

Alternativa C — ❌ Incorreta

A alternativa afirma que as instâncias das subclasses de Participante podem corresponder a várias instâncias de ParticipanteTipo simultaneamente. Isso está errado. O powertype ParticipanteTipo é um classificador cujas instâncias são as próprias subclasses, não as instâncias das subclasses. Ou seja, Associado, Eventual e Incentivador são instâncias de ParticipanteTipo, mas uma instância concreta de Associado (um objeto) não é uma instância de ParticipanteTipo. A relação é entre classes, não entre objetos. Portanto, a afirmação confunde o nível de classe com o nível de instância.

Alternativa D — ❌ Incorreta

A alternativa afirma que as instâncias de ParticipanteTipo têm um relacionamento semântico de realização com as instâncias de Participante. Isso está errado. Realização é uma relação entre uma interface (ou especificação) e uma classe que a implementa, representada por uma seta tracejada com triângulo vazado. No diagrama, a relação entre ParticipanteTipo e Participante é de powertype, não de realização. O powertype é uma relação de tipificação, onde as instâncias do powertype são as subclasses do classificador. Não há implementação de interface envolvida.

Alternativa E — ❌ Incorreta

A alternativa afirma 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 ser {complete, disjoint} (cobertura total e disjunta) ou {incomplete, overlapping} (cobertura parcial e sobreposta). O termo "tipificação forte" não é uma propriedade padrão da UML. Além disso, a afirmação de que "não têm instâncias em comum" só seria verdadeira se o GeneralizationSet fosse disjoint, o que não é explicitamente indicado no enunciado. A alternativa mistura conceitos e usa uma terminologia não padronizada.

Gabarito: letra A

Link permanente: /questoes/fg077382