En la programación orientada a objetos, una asociación significa una relación entre clases de objetos que permite que una instancia de un objeto llame a otra para realizar una acción en su nombre. Es una relación estructural porque define una relación entre objetos de un tipo y objetos de otro tipo, y no modela el comportamiento .
La causalidad generalmente se conoce con los términos genéricos "enviar un mensaje", "llamar a un método" o "llamar a una función miembro" en el objeto controlado. Por lo general, una implementación particular requiere que el objeto solicitante invoque un método o función miembro utilizando una referencia o puntero a una ubicación de memoria del objeto controlado.
Se considera que los objetos que están relacionados a través de una asociación desempeñan funciones con respecto a la asociación si el estado actual del objeto en la configuración activa permite que otros objetos asociados utilicen el objeto de la manera especificada por la función. Se puede utilizar un rol para distinguir entre dos objetos de la misma clase al describir su uso en el contexto de una asociación. Un rol describe los aspectos públicos de un objeto en relación con una asociación [1] .