Association Relationships

Association is used to model objects that contain other objects. Here a class holds a data field reference to the other class. For example, Course has a (field of type) Instructor:

Association represents has-a relationship. It is represented by a (solid) line between two classes.

We can indicate the multiplicity of an association by adding multiplicity adornments to the line denoting the association.

The above example indicates that a Course has one Instructor.

The above example indicates that an Instructor is associated with (teaches) one or more Course.

We can indicate the the role of an object in an association using role names.

We can also name the association.

We can specify more than one association on a pair of classes.

We can constrain the association relationship by defining the navigability of the association.

Here, a Router object requests services from a DomainNameServer object by sending messages to (invoking the operations of) the server. The direction of the association indicates that the server has no knowledge of the Router.

A class can have a self association.

Finally, there are special associations called aggregations and compositions.

Aggregation

An aggregation specifies a whole-part relationship between an aggregate (a whole) and a constituent part, where the part can exist independently from the aggregate. Aggregations are denoted by a hollow-diamond adornment on the association.

Composition

A composition indicates strong ownership and coincident lifetime of parts by the whole (i.e., they live and die as a whole). Compositions are denoted by a filled-diamond adornment on the association.