Considere as seguintes afirmações sobre diagramas UML. I. ...

Próximas questões
Com base no mesmo assunto
Q304439 Engenharia de Software
Considere as seguintes afirmações sobre diagramas UML.

I. Um ator pode especializar (herdar comportamento de) outro ator, o que confere um significativo poder expressivo adicional ao diagrama de casos de uso.

II. Num diagrama de classes, os relacionamentos de agregação, associação e composição podem indicar a multiplicidade dos elementos que participam do relacionamento, enquanto, no relacionamento de generalização/especialização entre classes (que possui a propriedade de herança), ela não é indicada.

III. Do ponto de vista de implementação, os relacionamentos um-para-muitos e muitos-para-muitos representados no diagrama de classes frequentemente resultam no uso de coleções (listas, árvores, conjuntos, etc) no código fonte.

Levando-se em conta as afirmações acima, identifique a única alternativa válida.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: D - Todas as afirmações I, II e III estão corretas.

O entendimento das afirmações e a seleção da alternativa correta baseiam-se nos conceitos fundamentais da UML. Vamos desdobrar cada afirmativa:

I. Atores podem especializar outros atores em um diagrama de casos de uso, permitindo assim a reutilização de comportamento e a criação de atores com características mais específicas. Isso adiciona uma rica expressividade ao representar as interações dos usuários com o sistema.

II. No diagrama de classes, a representação de relacionamentos como agregação, associação e composição de fato permite especificar multiplicidades, evidenciando a quantidade de instâncias que participam do relacionamento. No caso da generalização/especialização (herança), não se discute multiplicidade porque se trata de uma relação de tipo e subtipo, e não de quantidades de instâncias.

III. No que diz respeito à implementação, é uma prática comum que relacionamentos um-para-muitos e muitos-para-muitos sejam implementados utilizando estruturas de dados que representam coleções na programação, possibilitando o gerenciamento adequado de múltiplas instâncias de uma classe.

Com base em tais esclarecimentos, podemos concluir que a alternativa D é a correta, pois as três afirmações estão alinhadas com os princípios da UML.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

I - O único relacionamento permitido no DCU entre atores é a Generalização. Evita de relacionar um ator especializado aos mesmos casos de uso que o ator generalizado, desta forma, significa um expressivo adicional ao DCU.

II - No DCL a multiplicidade é indicada justamente através das associações, agregações e composições. Na generalização, é irrelevante utilizar multiplicidade.

III - Utilizar Generics na implementação de Classes com cardinalidade é uma alternativa bastante válida, senão essencial.

A alternativa III parece estar correta pelo uso da palavra "frequentemente", pois relacionamentos muitos-para-muitos não resultam no uso de coleções e sim na criação de uma nova classe, enquanto que relacionamentos um-para-muitos implicam o uso de coleções.

Especialização não seria diferente de generalização? Achei que atores só podiam ter generalização

O item III pra mim está errado...primeiro só corrigindo o colega, no diagrama de classe assim como na implementação uma relação da muitos-para-muitos não cria uma nova classe, acho que ele confundiu com conceito de relação de banco de dados em que relação de muitos-para-muitos resulta numa nova tabela. Eu posso ter 2 classes com relacionamento tipo muito-para-muito e na implementação delas ter uma lista em cada uma implementando essa relação.

Mas na minha opinião o erro está em falar um-para-muitos frequentemente gera uma coleção na implementação, por exemplo eu posso ter as classes Empregado e Empresa e uma relação de um para muitos entre Empresa e Empregado, e na implementação eu apenas adiciono um atributo Empresa na classe Empregado para implementar essa relação.

Leandro Long.  Mas caso precisasse saber os empregados daquela empresa? Precisaria de uma lista de empregados dentro da classe empresa.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo