Software Disclaimer

Class UML 2.4.1::Extension

Description:

An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes.

Direct Superclasses: Association

Direct Subclasses:

Class Precedence List: Extension, Association, Classifier, Namespace, Type, PackageableElement, ParameterableElement, RedefinableElement, NamedElement, TemplateableElement, Relationship, Element

Properties:

isRequired : Boolean (1 1); -- source Extension
metaclass : Class (1 1); -- source Extension
ownedEnd : ExtensionEnd (1 1); -- source Extension
endType : Type (1 *); -- source Association
isDerived : Boolean (1 1); -- source Association

Specifies whether the association is derived from other model elements such as other associations or constraints.
Default value: FALSE

memberEnd : Property (2 *); -- source Association
navigableOwnedEnd : Property (0 *); -- source Association
attribute : Property (0 *); -- source Classifier
collaborationUse : CollaborationUse (0 *); -- source Classifier
feature : Feature (0 *); -- source Classifier

Specifies each feature defined in the classifier. Note that there may be members of the Classifier that are of the type Feature but are not included in this association, e.g. inherited features.
{readonly}
Derived union with sources: (attribute, ownedEnd)
Subsets: Namespace.member
Opposite: Feature.featuringClassifier

general : Classifier (0 *); -- source Classifier
generalization : Generalization (0 *); -- source Classifier
inheritedMember : NamedElement (0 *); -- source Classifier
isAbstract : Boolean (1 1); -- source Classifier
isFinalSpecialization : Boolean (1 1); -- source Classifier
ownedTemplateSignature : RedefinableTemplateSignature (0 1); -- source Classifier
ownedUseCase : UseCase (0 *); -- source Classifier
powertypeExtent : GeneralizationSet (0 *); -- source Classifier
redefinedClassifier : Classifier (0 *); -- source Classifier
representation : CollaborationUse (0 1); -- source Classifier

References a collaboration use which indicates the collaboration that represents this classifier.
Subsets: Classifier.collaborationUse

substitution : Substitution (0 *); -- source Classifier
templateParameter : ClassifierTemplateParameter (0 1); -- source Classifier
useCase : UseCase (0 *); -- source Classifier
elementImport : ElementImport (0 *); -- source Namespace
importedMember : PackageableElement (0 *); -- source Namespace
member : NamedElement (0 *); -- source Namespace
ownedMember : NamedElement (0 *); -- source Namespace
ownedRule : Constraint (0 *); -- source Namespace
packageImport : PackageImport (0 *); -- source Namespace
package : Package (0 1); -- source Type
visibility : VisibilityKind (1 1); -- source PackageableElement
owningTemplateParameter : TemplateParameter (0 1); -- source ParameterableElement
isLeaf : Boolean (1 1); -- source RedefinableElement
redefinedElement : RedefinableElement (0 *); -- source RedefinableElement
redefinitionContext : Classifier (0 *); -- source RedefinableElement
clientDependency : Dependency (0 *); -- source NamedElement
name : String (0 1); -- source NamedElement
nameExpression : StringExpression (0 1); -- source NamedElement

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

namespace : Namespace (0 1); -- source NamedElement
qualifiedName : String (0 1); -- source NamedElement
templateBinding : TemplateBinding (0 *); -- source TemplateableElement
relatedElement : Element (1 *); -- source Relationship
ownedComment : Comment (0 *); -- source Element
ownedElement : Element (0 *); -- source Element
owner : Element (0 1); -- source Element

Constraints:

Signature: non_owned_end() : Boolean;
Description: The non-owned end of an Extension is typed by a Class.
The OCL used here is not normative.
Editor's notes: metaclass, not metaclass(). Classifier, not class
Expression: metaclass->notEmpty() and metaclass.oclIsKindOf(Classifier)
Original: metaclassEnd()->notEmpty() and metaclass()->oclIsKindOf(Class)

Signature: is_binary() : Boolean;
Description: An Extension is binary, i.e., it has only two memberEnds.
Expression: memberEnd->size() = 2

Operations:

Signature: metaclassEnd() : Property;
Description: The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).
The OCL used here is not normative.
Editor's notes:
Expression: result = (memberEnd - OrderedSet{ownedEnd}).asOrderedSet()->first()
Original: result = memberEnd->reject(ownedEnd)

Signature: metaclass.1() : Class;
Description: The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).
Expression: result = metaclassEnd().type

Signature: isRequired.1() : Boolean;
Description: The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.
Expression: result = (ownedEnd->lowerBound() = 1)



Send questions or comments to [email protected].