Software Disclaimer

Class UML 2.5::Association

Description:

A link is a tuple of values that refer to typed objects. An Association classifies a set of links, each of which is an instance of the Association. Each value in the link refers to an instance of the type of the corresponding end of the Association.

Direct Superclasses: Relationship, Classifier

Direct Subclasses: Extension, CommunicationPath, AssociationClass

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

Properties:

endType : Type (1 *); -- source Association
isDerived : Boolean (1 1); -- source Association
memberEnd : Property (2 *); -- source Association
navigableOwnedEnd : Property (0 *); -- source Association
ownedEnd : Property (0 *); -- source Association
relatedElement : Element (1 *); -- source Relationship
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 (0 1); -- source PackageableElement
owningTemplateParameter : TemplateParameter (0 1); -- source ParameterableElement
templateBinding : TemplateBinding (0 *); -- source TemplateableElement
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
ownedComment : Comment (0 *); -- source Element
ownedElement : Element (0 *); -- source Element
owner : Element (0 1); -- source Element

Constraints:

Signature: CMOF_14_3_29() : Boolean;
Description: 14.3 [29] Each Association memberEnd Property must be typed by a Class.
Expression: memberEnd.type.oclIsKindOf(Class)

Signature: CMOF_14_3_1() : Boolean;
Description: 14.3 [1] The multiplicity of Association::memberEnd is limited to 2 rather than 2..* (i.e., n-ary Associations are not supported); unlike EMOF, CMOF associations can have navigable association-owned ends. see also: https://sites.google.com/site/metamodelingantipatterns/catalog/mof/association-does-not-have-two-member-ends
Expression: memberEnd->size() = 2 and ownedEnd->size() < 2

Operations:

Signature: endType.1() : Type;
Description: endType is derived from the types of the member ends.
Expression: result = (memberEnd->collect(type)->asSet())



Send questions or comments to [email protected].