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:
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
metaclass :
Class (1 1); -- source
Extension ownedEnd :
ExtensionEnd (1 1); -- source
Extension endType :
Type (1 *); -- source
Association isDerived : Boolean (1 1); -- source
Association 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 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 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 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
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].