Bueno eh estado leyendo sobre el tema y así por encima va mas o menos así XD
Agregación y composición en lo que se refiere a código es lo mismo(O bien no se diferencia uno de otro).
Pero agregación y composición son diferentes conceptos.
Composición:
Si un objeto A esta esta compuesto por un segundo objeto B ya sabemos lo que es..."composición".
El tiempo de vida del objeto B esta condicionado por el tiempo de vida del objeto A (B no existe sin A).
Un coche esta compuesto por ruedas, puerta motor(Un coche tiene un....).
Si elimino el todo sus partes también dejan de existir o no servirían.
¿Queda claro lo que es composición? :D
Agregación:
Es cuando agregamos varios objetos B, C, D... para formar un objeto A.
Ejemplo: agregamos una pantalla, un ratón, un disco duro y muchos mas objetos para formar un ordenador.
Se puede decir que ordenador tiene una pantalla, tiene un disco duro, tiene un ratón...(Tiene un/uno/una...)
¿Queda claro que es agregación?
Bien, miremos otros aspectos que diferencian agregación de composición:
El tiempo de vida del los objetos B, C o D no esta condicionado por el tiempo de vida del objeto A
(B, C, D... siguen existiendo aun que A desaparezca).
Pantalla, ratón y teclado siguen existiendo aun que eliminemos ordenador.
El Todo no influencia en las partes.
Lo que se refiere a código es lo mismo, es el concepto como dije antes el que varia.
Mas o menos ya sabemos cual elegir en determinado caso.
Si se supone que la programación orientada a objeto se basa en re-aprovechar el código hay que tener bien claro este concepto por que imaginemos que creamos una clase que depende de muchas otras, o que no funcione sin muchas clases asociadas seria una ruina re-aprovechar algunos códigos.
Deberías leer algo sobre uml o conceptos de POO, y por supuesto yo también XD
Saludos y mucha suerte! XD
PD: Asociacion:
Es la
relación entre clases(Una clase depende de otra).
Agregación/Composición es un tipo derivado de esa
relación.