Entiendo qué composición hay en OOP, pero no puedo tener una idea clara de qué es la agregación. Alguien puede explicar?
object-oriented
Vinoth Kumar CM
fuente
fuente
De http://en.wikipedia.org/wiki/Object_composition
Por lo tanto, si bien tiene una relación de propiedad con la composición, el objeto de propiedad también se destruye cuando el propietario lo es, una agregación (y los objetos contenidos) puede existir de forma independiente.
-
Actualización: disculpas: esta respuesta es demasiado simplista en retrospectiva.
c.batt proporciona una excelente definición en su respuesta: Agregación vs Composición
fuente
No hay una sola explicación. Diferentes autores quieren decir cosas diferentes por agregación. La mayoría no quiere decir nada específico con eso.
fuente
La composición es una asociación
La agregación es una asociación
La composición es una asociación fuerte (si la vida del objeto contenido depende totalmente del objeto contenedor, se llama asociación fuerte)
La agregación es una asociación débil (si la vida del objeto contenido no depende del objeto contenedor, se llama asociación débil)
Ejemplo:
fuente
La composición (mezcla) es una forma de combinar objetos simples o tipos de datos en otros más complejos. Las composiciones son un componente fundamental de muchas estructuras de datos básicas.
La agregación (colección) difiere de la composición ordinaria en que no implica propiedad. En composición, cuando el objeto propietario se destruye, también lo son los objetos contenidos. En conjunto, esto no es necesariamente cierto
Ambos denotan relación entre objeto y solo difieren en su fuerza.
Notaciones UML para diferentes tipos de dependencia entre dos clases.
Composición : dado que el motor es parte del automóvil, la relación entre ellos es la composición. Así es como se implementan entre clases Java.
Agregación : Dado que la Organización tiene a una Persona como empleados, la relación entre ellos es la Agregación. Así es como se ven en términos de clases Java
Fuente
fuente
la agregación es una colección simple, como una bolsa de canicas
la composición implica dependencias internas / funcionales, como las bisagras de una caja
los automóviles agregan pasajeros; entran y salen sin romper la funcionalidad del automóvil
los neumáticos son componentes; retire uno y el automóvil ya no funciona correctamente
[nota: ¡la llanta de refacción es un agregado!]
fuente
Siempre veo la composición como 'necesita a', es decir, un automóvil necesita un motor, y veo la agregación como 'cosas relacionadas con un propósito'. Entonces, siguiendo la analogía del automóvil, mi agregación puede ser representar un viaje que puede implicar unir un automóvil y pasajeros. El viaje no es propiedad del automóvil ni de los pasajeros, estoy agregando datos relacionados con un escenario específico. Cuando se completa el viaje, el automóvil y los pasajeros continúan. Cuando se termina un automóvil, el automóvil y su motor normalmente se destruyen juntos.
fuente
Semánticamente, todos los conjuntos están hechos de subconjuntos, ¿verdad? Por lo tanto:
La agregación es cuando esos subconjuntos existen independientemente del conjunto padre. Como un monitor se puede desconectar de la computadora para conectarse a otro.
La composición es cuando esos subconjuntos dependen de la existencia del conjunto padre. Como una hoja es parte de un árbol o el hígado es parte de un cuerpo.
Estos conceptos hablan sobre el tipo de dependencia entre dos objetos o clases, conceptualmente. Directamente en un programa, en una agregación, cuando el objeto padre dispone, los objetos agregados también deben eliminarse. En el mismo escenario para una composición, los objetos hijo compuestos persistirán y el objeto padre se distribuirá.
fuente
¿Qué tal este simple ejemplo:
Una matriz de objetos es una composición. Una matriz de punteros a objetos es una agregación.
Si elimino el primero, su contenido desaparece con él. El segundo, por otro lado, puede desaparecer sin afectar la existencia de sus miembros a menos que exista un método específico que elimine cada objeto a medida que se elimina su puntero.
fuente