Previous UML Classes Table of Contents UML Packages Next


17.5.9 RedefinableTemplateSignature

Templates


   A redefinable template signature supports the addition of formal template parameters in a specialization of a template classifier.

*Generalizations

   

    TemplateSignature (from Templates) on page 655

   

    RedefinableElement (from Kernel ) on page 132

   Description

   RedefinableTemplateSignature specializes both TemplateSignature and RedefinableElement in order to allow the addition of new formal template parameters in the context of a specializing template Classifier.

   Attributes

   No additional attributes

   Associations

   Constraints

   [1] The inherited parameters are the parameters of the extended template signature.

   inheritedParameter = if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter endif

   Additional Operations

   [1] The query isConsistentWith() specifies, for any two RedefinableTemplateSignatures in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining template signature is always consistent with a redefined template signature, since redefinition only adds new formal parameters.

   RedefineableTemplateSignature::isConsistentWith(redefinee: RedefinableElement ): Boolean;pre: redefinee.isRedefinitionContextValid(self)isConsistentWith = redefinee.oclIsKindOf(RedefineableTemplateSignature)

   Semantics

   A RedefinableTemplateSignature may extend an inherited template signature in order to specify additional formal template parameters that apply within the templateable classifier that owns this RedefinableTemplateSignature. All the formal template parameters of the extended signatures are included as formal template parameters of the extending signature, along with any parameters locally specified for the extending signature.

   Notation

   Notation as for redefinition in general.

   PackageTemplates

   The Package templates diagram supports the specification of template packages and package template parameters.

Figure 17.25 - Package templates