Considerando desenvolvimento do sistema descrito nessa situa...
Para acelerar os resultados e as entregas do desenvolvimento de um sistema, optou-se pelo uso de metodologias ágeis e pelo emprego de um quadro Kanban (lista de atividades para fazer, fazendo e prontas). Para a modelagem visual do sistema, optou-se pela linguagem de modelagem unificada (UML 2.2) como apoio à análise e ao projeto orientado a objetos. O gerente do projeto deseja adotar o padrão de arquitetura modelo-visão-controle (MVC), buscando um baixo acoplamento entre os componentes da aplicação.
Considerando desenvolvimento do sistema descrito nessa situação hipotética bem como os conceitos de engenharia de software, julgue o item que se segue.
No diagrama de classes do sistema, deve-se utilizar uma
classe associativa para representar a conexão entre um
conjunto de classes e outra para representar as características
que são herdadas das classes que participam desse
relacionamento.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - errado
Para abordar essa questão, é essencial compreender alguns conceitos da UML (Unified Modeling Language) e como ela se aplica à Engenharia de Software. A UML é uma linguagem padrão para a elaboração da estrutura de projetos de software, permitindo a visualização, especificação, construção e documentação de artefatos de um sistema orientado a objetos.
O diagrama de classes é um dos elementos centrais na UML, utilizado para representar a estrutura estática de um sistema, mostrando classes, seus atributos, métodos e as relações entre elas, como associações, heranças e dependências.
A questão menciona o uso de classe associativa, que é um recurso do diagrama de classes usado para modelar uma relação entre duas ou mais classes que possuem uma associação. Esclareceremos que a classe associativa é usada quando a associação entre as classes tem atributos ou operações próprias. Por exemplo, numa relação entre as classes 'Pedido' e 'Produto', poderia haver uma classe associativa 'Item de Pedido' para representar cada produto dentro de um pedido, incluindo atributos como quantidade e preço.
Contudo, a alternativa avança ao afirmar que se deve "utilizar uma classe associativa para representar as características que são herdadas das classes que participam desse relacionamento". Isso é incorreto. A herança, outro conceito fundamental na UML, é representada por uma seta com uma linha contínua e um triângulo vazio na ponta, apontando para a classe geral (superclasse) da qual as características são herdadas. Não se emprega uma classe associativa para representar herança.
A confusão pode vir da mistura dos conceitos de associação e de herança. Ambos são mecanismos de relacionamento entre classes, mas servem a propósitos distintos. Associação é usada para indicar que uma instância de uma classe está conectada a uma instância de outra classe, e pode ter propriedades próprias. Herança é um mecanismo para uma classe derivar características (atributos e métodos) de outra classe.
Portanto, a afirmativa é errada porque mistura incorretamente os conceitos de associação e herança. A herança é representada diretamente no diagrama de classes através de uma relação de generalização/especialização, e não por meio de uma classe associativa.
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
Acredito que o erro está na segunda parte. Classe associativa não é utilizada para representação de herança "características que são herdades das classes".
Concordo com o comentário do amigo. Uma associação pode ser suficientemente complexa para ela própria constituir-se numa . Uma classe associativa tem propriedades de associação e a associação correspondente tem propriedades de classe.
As classes associativas são usadas quando se tem associações de n..m (muitos para muitos), conseguindo-se com a sua utilização substituir esse relacionamento complexo por dois mais simples (1..n).
Fonte: https://homepages.dcc.ufmg.br/~amendes/GlossarioUML/glossario/conteudo/classe/classes_associativas.htm
A questão toda está errada. Fala que uma classe associativa está associada com um conjunto de classes. Na verdade, está associada a 2 classes. Eu entendo que a questão está falando de classes que fazem mapeamento do banco de dados. Em java, por exemplo, uma classe não herda de 2 ou mais classes, que é o que a questão fala. O outro erro é dizer que uma outra classe faz parte dessa relação, o que é meio redundante. Ou seja, dá a entender que uma classe faz parte de todo esse conjunto de relacionamento.
Classes associativas são necessárias nos casos em que existem atributos relacionados à associação que não podem ser armazenados por nenhuma das classes envolvidas, As classes associativas costumam ser utilizadas principalmente em associações que apresentem multiplicidade muitos (*) em todas as suas extremidades.
classes associativas são válidas somente quando existe um único objeto relacionado a duas instâncias associadas
Gilleandes T. A. Guedes: UML uma abordagem pratica.
O erro no caso esta na segunda parte ligando classes associativas com herança.
Em resumo:
- Características que são herdadas herança (linha contínua com a seta em branco) ;
- Classes associativa lida com a comunicação entre as classes. A grosso modo tentem associar com o relacionamento encontrado no DER (notação na UML: linha contínua sendo opcional exibir o número de associações).
>>Em frente e enfrente>>
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo