Class UML 2.3::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,
TemplateableElement,
Type,
PackageableElement,
ParameterableElement,
Namespace,
RedefinableElement,
NamedElement,
Relationship,
ElementProperties:
isRequired : Boolean (1 1); -- source
Extension metaclass :
Class (1 1); -- source
Extension ownedEnd :
ExtensionEnd (1 1); -- source
Extension References the end of the extension that is typed by a Stereotype.
{
composite}
Subsets: Association.memberEnd, Classifier.feature, Namespace.ownedMember
Redefines: Association.ownedEnd
Opposite: ExtensionEnd.owningAssociation
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 Refers to all of the Properties that are direct (i.e. not inherited or
imported) attributes of the classifier.
{
readonly}
Derived union with sources: ()
Subsets: Classifier.feature
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 If true, the Classifier does not provide a complete declaration and can
typically not be instantiated. An abstract classifier is intended to be
used by other classifiers e.g. as the target of general metarelationships
or generalization relationships.
Default value: FALSE
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 templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement package :
Package (0 1); -- source
Type visibility :
VisibilityKind (1 1); -- source
PackageableElement Indicates that packageable elements must always have a visibility, i.e.,
visibility is not optional.
Redefines: NamedElement.visibility
Default value: PUBLIC
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement 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 isLeaf : Boolean (1 1); -- source
RedefinableElement redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement redefinitionContext :
Classifier (0 *); -- source
RedefinableElement clientDependency :
Dependency (0 *); -- source
NamedElement Indicates the dependencies that reference the client.
Opposite: Dependency.client
name : String (0 1); -- source
NamedElement nameExpression :
StringExpression (0 1); -- source
NamedElement namespace :
Namespace (0 1); -- source
NamedElement qualifiedName : String (0 1); -- source
NamedElement 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: metaclass()->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: Borrowed from UML2.5
Expression: memberEnd->reject(p | ownedEnd->includes(p.oclAsType(ExtensionEnd)))->any(true)
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].