我在这个 UML 类图中找不到错误

问题描述

UMLclassdiagramm

这个 UML 图只有一个错误,但我不确定它是什么。
我的猜测是 B 不能成为 A 的一部分,因为它是 C 的超类。

有人有解决办法吗?

解决方法

如果 C 是 B 的特化,它也继承了它的关联。这意味着 C 的任何实例除了是 D 实例的组件之外,还是 A 实例的组件(因为 1..1 的多重性):这与需要独占所有权的 UML 组合相矛盾.

例如,您可以通过删除继承、将 roleA 旁边的多重性更改为 0..1 或在 A 一侧使用聚合而不是组合来获得有效图。

,

一个元素只能在一个组合中扮演“部分”角色。 C 具有 A 的继承组合, D

的组合

两个组合都是强制性的(多重性 = 1),因此不能存在有效的 C

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...