Gracias por tu respuesta Payaso73.
Acabo de leerme todo el PDF que me has pasado, y entre eso y tu explicación deduzco lo siguiente:
- Una asociación define de forma general, sin entrar en más detalle, una relación entre dos clases. Es decir, una clase tendrá un atributo del tipo de otra clase que puede ser un solo objeto o una colección de ellos. Pero la asociación no se para a decir como esos objetos han de adquirir valor, ni cuando se crean ni cuando se destruyen. Por ello están la agregación y la composición, que son formas mucho más especificas de asociación.
- La agregación extiende el significado previo de asociación, diciendo que el/los objeto/s se han de crear fuera de la clase. Es decir, que la clase no será la encargada de crearlos sino que se les asignará el valor desde fuera y la clase solamente guardará su referencia en un atributo.
- Y por último, la composición va un paso más allá diciendo que el/los objeto/s se crean dentro de la clase y se destruyen cuando la clase se destruye. Es decir, el atributo de la clase se instancia dentro de ella, sin poder asignarse el valor desde fuera, haciendo que el/los objeto/s solo puedan ser utilizados dentro de la clase.
Espero no equivocarme...
Por cierto, se me olvidó preguntar como se implementaría una dependencia. Tengo entendido que es la relación que menos acoplamiento entre clases genera.
Por casualidad, ¿no se implementará como el ejemplo que he puesto al intentar explicar la asociación?
Me refiero a que simplemente sea cuando se usan los objetos para pasarlos como argumento a los métodos y nada más, sin que haya atributos.
Saludos.