据我了解,UML InstanceValue 是由单独的 InstanceSpecification 定义的值。另外, InstanceValue 专门用于 ValueSpecification ,因此, TypedElement ,这意味着 InstanceValue 必须具有type
但是, InstanceSpecification 可能在其classifier
关联中具有多个分类符。
我的问题: InstanceSpecification 具有多个分类符的 InstanceValue 的type
是什么?
编辑(23/11):在规范的9.8.3节中确实存在以下句子:
如果InstanceSpecification具有一个或多个分类器,则ValueSpecification的类型必须符合至少一个这些分类器。
因此,应该只选择一个分类器作为type
吗?即使可能意味着“隐藏”实例的许多方面?
答案 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的实例)。
然后,您只能拥有这些分类器提供的属性的插槽,在此示例中,这仅意味着{em> label
和number
属性。当然,您无需为所有模型建模,但是您无法添加在分类器中没有相应属性的新插槽。
换句话说,您不是在“挑选”要使用的分类器。相反。分类器及其属性指定可以使用的插槽。