Association (object-oriented programming)

In object-oriented programming, association defines a relationship between classes of objects that allows one object instance to cause another to perform an action on its behalf. This relationship is structural, because it specifies that objects of one kind are connected to objects of another and does not represent behaviour.

Top: A bidirectional association
Middle: An association is bidirectional, although it may be limited to just one direction by adorning some end with an arrowhead pointing to the direction of traversal.
Bottom: Association is prohibited

In generic terms, the causation is usually called "sending a message", "invoking a method" or "calling a member function" to the controlled object. Concrete implementation usually requires the requesting object to invoke a method or member function using a reference or pointer to the memory location of the controlled object.

The objects that are related via the association are considered to act in a role with respect to the association, if object's current state in the active situation allows the other associated objects to use the object in the manner specified by the role. A role can be used to distinguish two objects of the same class when describing its use in the context of the association. A role describes the public aspects of an object with respect to an association.[1]

The ends of the association can have all the characteristics of a property:

  • They can have a multiplicity, expressed by a lower and an upper limit in the form of "lowerLimit..upperLimit".
  • You can have a name.
  • You can declare a visibility.
  • You can specify whether the end of the association is ordered and / or unique.
  1. ^ Rumbaugh, JR; et al. (1991). Object-oriented modeling and design. Prentice Hall. ISBN 0-13-630054-5.