Considere as seguintes afirmações sobre diagramas UML. I. ...
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.
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
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.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo