12.3.3.6 Extensions

Extension用于指示元类的属性通过Stereotype得到扩展,它赋予了类灵活增加(之后删除)stereotypes的能力。

Extension是一种关联。它的一端是一个普通的属性,而另一端是一个ExtensionEnd。前者把该Extension链接到一个元类,后者链接该Extension到一个扩展了该类的Stereotype。

一个必须扩展(isRequired=true)意味着在Profile被应用到模型后,该Stereotype的实例必须被链接到该模型中扩展的元类的每个实例(否则该模型为非良构的)。如果扩展的Stereotype有子类,那么最多需要该Stereotype或它的子类的一个实例。

一个非必须扩展(isRequired=false)意味着该Stereotype的实例可以按需被链接到一个扩展的元类或者之后被删除;然而,并不是每个元类的实例都需要被stereotyped。然而,相同的stereotype(或它的子类型)不能向相同的元素应用两次。当被扩展的元类的实例被删除时,或者定义了该Stereotype的Profile被应用的包删除后,Stereotype的实例也相应地被删除。

与一个元类扩展等同的MOF构造体在图12.15中进行了展示。该图展示了图12.19中表达的例子,其中Stereotype Home扩展了元类Interface。在这幅图中,Interface是UML元类(一个CMOF类)的一个实例,Home是Stereotype的一个实例(也视为一个CMOF类)。与Extension等同的MOF构造体是一个从被扩展的元类到Stereotype的组合,它由被扩展的元类所拥有。当Extension是必须的时,那么Stereotype关联的属性的multiplicity为1。

由扩展元类所定型的的属性名为:

'base_'extendedMetaclassName

由扩展Stereotype所定型的属性名称(ExtensionEnd)是:

'extension_'stereotypName

通常Stereotypes会有一些约束。上述属性可能用于表达OCL导航中。举个例子,如下的OCL表达式声明一个Home接口不应该有属性:

self.base_Interface.ownedAttributes->isEmpty()

MOF Model Equivalent to Extending "Interface" by the "Home" Stereotype

图12.15 MOF Model Equivalent to Extending "Interface" by the "Home" Stereotype

多个元类扩展展示在图12.16中。Stereotype TestCase扩展了元类Operation和Behavior。

Example of Multiple Metaclass Extension

图12.16 Example of Multiple Metaclass Extension

多元类扩展相应等同的MOF构造体展示在图12.17。

MOF Model Equivalent to Multiple Metaclass Extension

图12.17 MOF Model Equivalent to Multiple Metaclass Extension

12.3.3.7 ExtensionEnd

ExtensionEnd用于在扩展一个元类时将Extension链接到一个Stereotype:它是Extension的一个navigableOwnedEnd,避免一个扩展元类上额外的ownedAttribute。它总是由一个Stereotype来定型并且总是有isComposite=true

ExtensionEnd的缺省multiplicity为0..1。如果Stereotype是必须的则为1..1,但上限不能超过1。

results matching ""

    No results matching ""