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: AssociationDirect Subclasses: Class Precedence List: Extension,
Association,
Classifier,
Namespace,
Type,
PackageableElement,
ParameterableElement,
RedefinableElement,
NamedElement,
TemplateableElement,
Relationship,
ElementProperties:
![](/se-interop/image/right-arrow.png)
isRequired : Boolean (1 1); -- source
ExtensionIndicates whether an instance of the extending stereotype must be created
when an instance of the extended class is created. The attribute value
is derived from the value of the lower property of the ExtensionEnd referenced
by Extension::ownedEnd; a lower value of 1 means that isRequired is true,
but otherwise it is false. Since the default value of ExtensionEnd::lower
is 0, the default value of isRequired is false.
{
readonly,
derived}
Default value: FALSE
![](/se-interop/image/down-arrow.png)
metaclass :
Class (1 1); -- source
Extension![](/se-interop/image/down-arrow.png)
ownedEnd :
ExtensionEnd (1 1); -- source
Extension![](/se-interop/image/down-arrow.png)
endType :
Type (1 *); -- source
Association![](/se-interop/image/down-arrow.png)
isDerived : Boolean (1 1); -- source
Association![](/se-interop/image/down-arrow.png)
memberEnd :
Property (2 *); -- source
Association![](/se-interop/image/down-arrow.png)
navigableOwnedEnd :
Property (0 *); -- source
Association![](/se-interop/image/down-arrow.png)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
feature :
Feature (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
general :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
isAbstract : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png)
ownedUseCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png)
substitution :
Substitution (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png)
package :
Package (0 1); -- source
Type![](/se-interop/image/down-arrow.png)
visibility :
VisibilityKind (1 1); -- source
PackageableElement![](/se-interop/image/down-arrow.png)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/right-arrow.png)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElementThe redefinable element that is being redefined by this element.
{
readonly}
Derived union with sources: (redefinedClassifier)
![](/se-interop/image/down-arrow.png)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png)
clientDependency :
Dependency (0 *); -- source
NamedElement![](/se-interop/image/down-arrow.png)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png)
relatedElement :
Element (1 *); -- source
Relationship![](/se-interop/image/down-arrow.png)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png)
owner :
Element (0 1); -- source
ElementConstraints:
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].