De associatierelatie geeft aan dat een klasse een andere klasse kent en ernaar verwijst. Koppelingen kunnen worden beschreven als een "has-a" -relatie omdat de typische implementatie in Java het gebruik is van een instantieveld. De relatie kan bidirectioneel zijn, waarbij elke klasse een verwijzing naar de andere bevat. Aggregatie en samenstelling zijn soorten associatierelaties.
Verenigingen voegen een of meer van een ding samen tegen een of meer van een ander ding. Een professor kan worden geassocieerd met een universiteitscursus (een één-op-één relatie) maar ook met elke student in haar klas (een één-op-veel relatie). De studenten in een sectie kunnen worden geassocieerd met de studenten in een andere sectie van dezelfde cursus (een veel-op-veel-relatie), terwijl alle secties van de cursus betrekking hebben op een enkele cursus (een veel-op-een-relatie).
Stel je een eenvoudig oorlogsspel voor met een klasse AntiAircraftGun en een klasse Bomber. Beide klassen moeten zich van elkaar bewust zijn omdat ze zijn ontworpen om elkaar te vernietigen:
public class AntiAirCraftGun
privé bommenwerper doel;
private int positionX;
privé int positieY;
privé schade;
public void setTarget (Bomber newTarget)
this.target = newTarget;
// rest van de klasse AntiAircraftGun
openbare klas Bomber
privé AntiAirCraftGun-doel;
private int positionX;
privé int positieY;
privé schade;
public void setTarget (AntiAirCraftGun newTarget)
this.target = newTarget;
// rest van de Bomber-klasse
De klasse AntiAirCraftGun heeft een Bomber-object en de Bomber-klasse heeft een AntiAirCraftGun-object.