12.3.3.4 Stereotypes

Stereotype定义了一个或多个元类的一个扩展,它使得可以使用额外的术语或表示法来表示被扩展的元类。如果一个Stereotype扩展了多个元类,在任意时刻,它也只能被应用到这些元类中其中一个的实例上。然而,可以从一个元类的实例上分类该Stereotype实例并把它附加到另一个元类的一个实例上。

Stereotype是一种受限的元类,它们不能以自身的形式被使用,而是必须要和它所扩展的某个元类一起使用。每个Stereotype可以通过Extension关联而非泛化/特化关联来扩展一个或多个元类。类似的,一个元类也可以被一个或多个Stereotypes所扩展。使用一个Extension关联将Stereotype的实例S关联到一个元类C指明类型为C的模型元素可以被S的实例所扩展(参见图12.24)。在模型层(例如图12.29),S的实例通过链接(从SC的Extension关联的出现)关联到C模型元素(C的实例)。

通过metaclassReference引用的元类或通过metamodelReference引用的某个包中的元类可以被该Profile中的Stereotype所扩展。举个例子,如果metamodelReference是UML的话,那么状态、转换、活动、用例、构件、属性、依赖等等都可以被Stereotypes所扩展。Stereotype所允许扩展的元类是包含该Stereotype的包的最近父Profile所引用的那些元类。

与类相似,Stereotype可以有属性,传统上它们被当做Tag(标签)定义。当把一个Stereotype应用到一个模型元素时,这些属性的值被当做tagged values(标签值)。Stereotype特化了类,Stereotype中的属性就如同这些属性在类中一样,具有相同的意义。Stereotype属性可以有组合聚合,就如同一个被类所拥有的组合聚合属性。Stereotype上的组合聚合属性的值被该Stereotype的实例所拥有。由于模型可以分离它之前应用的profile,所以模型中元类实例不能引用stereotypes实例和它们的属性值。Stereotype的组合聚合属性的类型不能是一个Stereotype(因为Stereotype被Extension所拥有)或一个元类(因为元类的实例被其它的元类实例所拥有);然而,这种属性的类型可以是Proflie中定义的类或数据类型。但工具必须支持Stereotype的ownedAttributes。

Stereotype的命名空间由Profile或包来定义。当把Profiles应用到一个包时,可用的Stereotypes由这些Profiles定义,这些Stereotypes可以使用全限定名来显示以防止与其它不同Profiles或包中的同名Stereotypes相区分。可以使用PackageImport和ElementImport来指示未限定名。直接被Profile所拥有的Stereotypes(ownedStereotype)可以不用限定名。

results matching ""

    No results matching ""