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

The classifier that owns this template signature.
Subsets: RedefinableElement.redefinitionContext, Element.owner
Redefines: TemplateSignature.template
Opposite: Classifier.ownedTemplateSignature

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
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