|Previous||UML Classes||Table of Contents||UML Packages||Next|
A model element that has both association and class properties. An AssociationClass can be seen as an association that also
has class properties, or as a class that also has association properties. It not only connects a set of classifiers but also
defines a set of features that belong to the relationship itself and not to any of the classifiers.
• Association (from Kernel ) on page 37
• Class (from Kernel ) on page 48
In the metamodel, an AssociationClass is a declaration of a semantic relationship between Classifiers, which has a set of
features of its own. AssociationClass is both an Association and a Class.
No additional attributes
No additional associations
 An AssociationClass cannot be defined between itself and something else.
self.endType->excludes(self) and self.endType>collect(et|et.allparents()->excludes(self))
 The operation allConnections results in the set of all AssociationEnds of the Association.
AssociationClass::allConnections ( ) : Set ( Property );
allConnections = memberEnd->union ( self.parents ()->collect (p | p.allConnections () )
An association may be refined to have its own set of features; that is, features that do not belong to any of the connected
classifiers but rather to the association itself. Such an association is called an association class. It will be both an association,
connecting a set of classifiers and a class, and as such have features and be included in other associations. The semantics
of an association class is a combination of the semantics of an ordinary association and of a class.
An association class is both a kind of association and kind of a class. Both of these constructs are classifiers and hence
have a set of common properties, like being able to have features, having a name, etc. As these properties are inherited from
the same construct (Classifier), they will not be duplicated. Therefore, an association class has only one name, and has the
set of features that are defined for classes and associations. The constraints defined for class and association also are
applicable for association class, which implies for example that the attributes of the association class, the ends of the
association class, and the opposite ends of associations connected to the association class must all have distinct names.
Moreover, the specialization and refinement rules defined for class and association are also applicable to association class.
Note – It should be noted that in an instance of an association class, there is only one instance of the associated classifiers
at each end, i.e., from the instance point of view, the multiplicity of the associations ends are ‘1.’
An association class is shown as a class symbol attached to the association path by a dashed line. The association path and
the association class symbol represent the same underlying model element, which has a single name. The name may be placed
on the path, in the class symbol, or on both, but they must be the same name.
Logically, the association class and the association are the same semantic entity; however, they are graphically distinct.
The association class symbol can be dragged away from the line, but the dashed line must remain attached to both the path
and the class symbol.
Figure 7.27 - An AssociationClass is depicted by an association symbol (a line) and a class symbol (a box) connected with
a dashed line. The diagram shows the association class Job, which is defined between the two classes Person and Company.