La relazione di associazione indica che una classe conosce e detiene un riferimento a un'altra classe. Le associazioni possono essere descritte come una relazione "has-a" perché l'implementazione tipica in Java è attraverso l'uso di un campo di istanza. La relazione può essere bidirezionale con ciascuna classe con un riferimento all'altro. Aggregazione e composizione sono tipi di relazioni di associazione.
Le associazioni uniscono una o più di una cosa contro una o più di un'altra cosa. Un professore potrebbe essere associato a un corso universitario (una relazione uno a uno) ma anche a ogni studente della sua classe (una relazione uno a molti). Gli studenti di una sezione potrebbero essere associati agli studenti di un'altra sezione dello stesso corso (una relazione molti-a-molti) mentre tutte le sezioni del corso si riferiscono a un singolo corso (una relazione molti-a-uno).
Immagina un semplice gioco di guerra con una classe AntiAircraftGun e una classe Bomber. Entrambe le classi devono essere consapevoli l'una dell'altra perché sono progettate per distruggersi:
classe pubblica AntiAirCraftGun
bersaglio del bombardiere privato;
private int positionX;
privato int positionY;
danno int privato;
public void setTarget (Bomber newTarget)
this.target = newTarget;
// resto della classe AntiAircraftGun
bombardiere di classe pubblica
target privato AntiAirCraftGun;
private int positionX;
privato int positionY;
danno int privato;
public void setTarget (AntiAirCraftGun newTarget)
this.target = newTarget;
// resto della classe Bomber
La classe AntiAirCraftGun ha un Oggetto Bomber e classe Bomber ha un Oggetto AntiAirCraftGun.