哪个 UML 关系用于连接实例及其 class?

Which UML relationship is used to connect an instance with its class?

我有一个包含 classes 和对象的图表。我可以使用哪种定向关系将对象与其作为实例的 class 连接起来?是不是如下图的实现依赖?

在这个图中,关系是多余的,因为class名称已经在对象的冒号后面的矩形中提到,但在我的项目中,他们使用很长的class名称并且我不想在所有对象的矩形内显示那些。

你不需要一段感情。您显示 MyOldBMW 是 Car 的一个实例,具有:MyOldBMW:Car.

此外,MyOldBMW 应该用驼峰写法:myOldBMW:Car(第一个字母小写)。

你使用的Realize关系是错误的。这用于显示接口已实现。而是使用刻板依赖:

但是,由于 class 已经显示在实例名称中,所以这是信息重复(我认为这是多余的)。

根据 UML 规范,您不能遗漏分类器的名称。

UML v2.5 §9.8.4 关于实例表示法说:

An InstanceSpecification is depicted using similar notation to its classifiers, but in place of the Classifier name appears an underlined concatenation of the instance name (if any), a colon (‘:’) and the Classifier name or names. The convention for showing multiple classifiers is to separate their names by commas.

所以虽然使用 Dependency(不是 Realization)来可视化 ClassifierInstance 之间的关系并没有错(尽管是多余的) , 似乎 从基于本段的实例表示法中省略分类器名称是错误的。

正如 www.admiraalit.nl 所指出的,不幸的是,规范没有明确定义 InstanceSpecifications

的符号语法,因此留下了讨论的空间

同一章的另一段内容如下:

NOTE. Names are optional for Classifiers and InstanceSpecifications. The absence of a name in a diagram does not necessarily reflect its absence in the underlying model.

我不是 100% 清楚。是的,分类器和实例可以有空名称,但是这个声明是否意味着我们可以从 InstanceSpecification 中省略 Classifier 的名称?

并且为 Nested InstanceSpecifications 定义的语法似乎表明我们可以将 ClassifierName 排除在外

{<name> [‘/’ <rolename>] | ‘/’ <rolename>} [‘:’ <classifiername> [‘,’<classifiername>]*]

我的建议是保留 Classifier 名称以避免任何歧义。