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:
![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
isRequired : Boolean (1 1); -- source
Extension![](/se-interop/image/right-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
metaclass :
Class (1 1); -- source
Extension References the Class that is extended through an Extension. The property
is derived from the type of the memberEnd that is not the ownedEnd.
{
readonly,
derived}
Opposite: Class.extension
![](/se-interop/image/right-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
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
![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
endType :
Type (1 *); -- source
Association![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
isDerived : Boolean (1 1); -- source
Association![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
memberEnd :
Property (2 *); -- source
Association![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
navigableOwnedEnd :
Property (0 *); -- source
Association![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
attribute :
Property (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
collaborationUse :
CollaborationUse (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
feature :
Feature (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
general :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
generalization :
Generalization (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
inheritedMember :
NamedElement (0 *); -- source
Classifier![](/se-interop/image/right-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
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
![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
isFinalSpecialization : Boolean (1 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
ownedTemplateSignature :
RedefinableTemplateSignature (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
ownedUseCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
powertypeExtent :
GeneralizationSet (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
redefinedClassifier :
Classifier (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
representation :
CollaborationUse (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
substitution :
Substitution (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
templateParameter :
ClassifierTemplateParameter (0 1); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
useCase :
UseCase (0 *); -- source
Classifier![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
templateBinding :
TemplateBinding (0 *); -- source
TemplateableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
package :
Package (0 1); -- source
Type![](/se-interop/image/right-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
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
![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
owningTemplateParameter :
TemplateParameter (0 1); -- source
ParameterableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
elementImport :
ElementImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
importedMember :
PackageableElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
member :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
ownedMember :
NamedElement (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
ownedRule :
Constraint (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
packageImport :
PackageImport (0 *); -- source
Namespace![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
isLeaf : Boolean (1 1); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
redefinedElement :
RedefinableElement (0 *); -- source
RedefinableElement![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
redefinitionContext :
Classifier (0 *); -- source
RedefinableElement![](/se-interop/image/right-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
clientDependency :
Dependency (0 *); -- source
NamedElement Indicates the dependencies that reference the client.
Opposite: Dependency.client
![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
name : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
nameExpression :
StringExpression (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
namespace :
Namespace (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
qualifiedName : String (0 1); -- source
NamedElement![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
relatedElement :
Element (1 *); -- source
Relationship![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
ownedComment :
Comment (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
ownedElement :
Element (0 *); -- source
Element![](/se-interop/image/down-arrow.png?hunchentoot-session=3777%3AA8563263E1D7AEF898ACCF0B08EF5B21)
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].