Logical View  «Prev  Next»
 Lesson 7 Modeling associations, continued Objective Define the notation for three variations on associations

# 1) Reflexive association, 2) Association Class, 3) Qualified Association

## Define Notation for Three Variations on Associations

This lesson will define the notation for three variations on associations:
1. reflexive,
2. qualified, and
3. association classes.
In addition to the basic associations we just covered, the UML supports reflexive and qualified associations and association classes.

### 1) Reflexive association

The reflexive association is used when objects in the same class can be associated. The entire association notation remains the same, except that the association line is drawn to and from the same class.
Both examples below are equivalent expressions; one uses roles, whereas the other uses an association name:

### 2) Association class

Association classes are used to identify information about an association. The information is placed in a class attached to the association that it describes by a dashed line.

Be on the lookout for association classes when you see a multiplicity of more than one used on both ends of the association.

### 3) Qualified Association

Qualified associations provide the same functionality as indexes. The notation has a bit of a twist, so pay attention. To indicate that a customer can look up an order using the order's `ordernumber` attribute, the `ordernumber` attribute name is placed in a rectangular box on the Customer end of the association. All the other association notation remains intact but is pushed out to the edge of the rectangle. Also, because the qualifier is an attribute, it may include a data type.

Use qualifiers to reduce the multiplicity in the same way you would use indexes in a database. Note in the example how the multiplicity for Order changed from `0..*` to `1` because the qualifier provided a unique key for Order.

1. Start with the class diagram of Customer and Order. The association shows one customer places zero or more orders.
2. To look up a customer's orders individually, identify a field that will uniquely identify the order. The attributes reveal the ordernumber to be a unique identifier.
3. Place the qualifier box next to the class that will use it. The customer objects need to look up unique orders by ordernumber, so place the qualifier box next to the customer class.
4. Next copy the ordernumber attribute name and data type and place them in the qualifier box
5. Reduce the multiplicity to show that the order number qualifier allows use to reference exactly on order at a time.

Customer Order Modeling Associations
In the next lesson, you will learn about aggregation and composition associations.