其InstanceSpecification具有多个分类器的InstanceValue的类型是什么?

时间:2018-11-22 12:44:09

标签: uml

据我了解,UML InstanceValue 是由单独的 InstanceSpecification 定义的值。另外, InstanceValue 专门用于 ValueSpecification ,因此, TypedElement ,这意味着 InstanceValue 必须具有type

但是, InstanceSpecification 可能在其classifier关联中具有多个分类符

我的问题: InstanceSpecification 具有多个分类符的 InstanceValue type是什么?


编辑(23/11):在规范的9.8.3节中确实存在以下句子:

  

如果InstanceSpecification具有一个或多个分类器,则ValueSpecification的类型必须符合至少一个这些分类器。

因此,应该只选择一个分类器作为type吗?即使可能意味着“隐藏”实例的许多方面?

2 个答案:

答案 0 :(得分:1)

关于UML 2.5.1的9.9.xx节,看来您没有真正的约束。

但是在阅读第9.8.3节时,我了解到 InstanceValue “类型”必须至少符合一个 InstanceSpecification “分类器”。

一方面,如果 InstanceValue “类型”不符合任何 InstanceSpecification “分类器”,则该模型显然是错误的。另一方面, InstanceValue “类型”可能符合许多 InstanceSpecification “分类器”,但这应该是一个问题,对吗?

答案 1 :(得分:0)

  

那么,应该只选择一个分类器作为类型吗?即使可能意味着“隐藏”实例的许多方面?

插槽代表分类器的实际属性。想象以下示例:

class Label {
    public String name;
}

class Identity {
    public Label label;
    public Integer number;
}

class Product extends Identity {
    public String brand;
}

然后您就是仅对身份方面进行建模。因此,您可以在分类器中指定Identity(即使它是Product的实例)。

enter image description here

然后,您只能拥有这些分类器提供的属性的插槽,在此示例中,这仅意味着{em> labelnumber属性。当然,您无需为所有模型建模,但是您无法添加在分类器中没有相应属性的新插槽。

enter image description here

换句话说,您不是在“挑选”要使用的分类器。相反。分类器及其属性指定可以使用的插槽。