Software Disclaimer

Class UML 2.3::RedefinableTemplateSignature


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

Direct Superclasses: TemplateSignature, RedefinableElement

Direct Subclasses:

Class Precedence List: RedefinableTemplateSignature, TemplateSignature, RedefinableElement, NamedElement, Element


classifier : Classifier (1 1); -- source RedefinableTemplateSignature
extendedSignature : RedefinableTemplateSignature (0 *); -- source RedefinableTemplateSignature

The template signature that is extended by this template signature.
Subsets: RedefinableElement.redefinedElement

inheritedParameter : TemplateParameter (0 *); -- source RedefinableTemplateSignature
ownedParameter : TemplateParameter (0 *); -- source TemplateSignature
parameter : TemplateParameter (1 *); -- source TemplateSignature

The ordered set of all formal template parameters for this template signature.

isLeaf : Boolean (1 1); -- source RedefinableElement

Indicates whether it is possible to further redefine a RedefinableElement. If the value is true, then it is not possible to further redefine the RedefinableElement. Note that this property is preserved through package merge operations; that is, the capability to redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in the resulting RedefinableElement of a package merge operation where a RedefinableElement with isLeaf=false is merged with a matching RedefinableElement with isLeaf=true: the resulting RedefinableElement will have isLeaf=false. Default value is false.
Default value: FALSE

redefinedElement : RedefinableElement (0 *); -- source RedefinableElement
redefinitionContext : Classifier (0 *); -- source RedefinableElement

References the contexts that this element may be redefined from.
Derived union with sources: (classifier)

clientDependency : Dependency (0 *); -- source NamedElement
name : String (0 1); -- source NamedElement

The name of the NamedElement.

nameExpression : StringExpression (0 1); -- source NamedElement

The string expression used to define the name of this named element.
Subsets: Element.ownedElement

namespace : Namespace (0 1); -- source NamedElement
qualifiedName : String (0 1); -- source NamedElement

A name which allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.
{readonly, derived}

visibility : VisibilityKind (0 1); -- source NamedElement
ownedComment : Comment (0 *); -- source Element
ownedElement : Element (0 *); -- source Element
owner : Element (0 1); -- source Element


Signature: inherited_parameters() : Boolean;
Description: The inherited parameters are the parameters of the extended template signature.
Expression: if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter endif


Signature: isConsistentWith(redefinee : RedefinableElement; ) : Boolean;
Description: 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.
The OCL used here is not normative.
Editor's notes: Redefinable not Redefineable
Expression: result = redefinee.oclIsKindOf(RedefinableTemplateSignature)
Original: result = redefinee.oclIsKindOf(RedefineableTemplateSignature)

Send questions or comments to