La relación de asociación indica que una clase conoce y mantiene una referencia a otra clase. Las asociaciones pueden describirse como una relación "has-a" porque la implementación típica en Java es mediante el uso de un campo de instancia. La relación puede ser bidireccional con cada clase sosteniendo una referencia a la otra. La agregación y la composición son tipos de relaciones de asociación..
Las asociaciones unen una o más de una cosa contra una o más de otra cosa. Un profesor podría estar asociado con un curso universitario (una relación de uno a uno) pero también con cada estudiante en su clase (una relación de uno a muchos). Los estudiantes en una sección pueden estar asociados con los estudiantes en otra sección del mismo curso (una relación de muchos a muchos) mientras que todas las secciones del curso se relacionan con un solo curso (una relación de muchos a uno).
Imagine un juego de guerra simple con una clase AntiAircraftGun y una clase Bombardero. Ambas clases deben ser conscientes entre sí porque están diseñadas para destruirse mutuamente:
clase pública AntiAirCraftGun
blanco de bombardero privado;
posición int privada X;
posición int privada Y;
daño int privado;
público vacío setTarget (Bomber newTarget)
this.target = newTarget;
// resto de la clase AntiAircraftGun
Bombardero de clase pública
objetivo privado AntiAirCraftGun;
posición int privada X;
posición int privada Y;
daño int privado;
public void setTarget (AntiAirCraftGun newTarget)
this.target = newTarget;
// resto de la clase Bombardero
La clase AntiAirCraftGun tiene un Objeto bombardero y la clase bombardero tiene un Objeto AntiAirCraftGun.