¿Cuáles son las diferencias entre relaciones de agregación y composición en programación orientada a objetos?
sobes.tech AI
Respuesta de la IA
La agregación y la composición son dos tipos de relaciones entre objetos en la programación orientada a objetos (POO), que describen cómo los objetos están relacionados entre sí.
-
Agregación: es una relación de "tiene" (has-a), en la que un objeto contiene a otro, pero el ciclo de vida del objeto contenido no depende del contenedor. El objeto contenido puede existir de forma independiente.
-
Composición: una forma más fuerte de agregación, donde el objeto contenido pertenece completamente al contenedor y no existe por separado. Si el contenedor se destruye, también lo hace el objeto contenido.
Ejemplo:
class Engine {}
// Agregación: Car tiene Engine, pero Engine puede existir por separado
class Car {
var engine: Engine?
}
// Composición: House está compuesto por Rooms, las habitaciones no existen sin la casa
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
En la composición, los objetos están estrechamente relacionados y se gestionan juntos, mientras que en la agregación, la relación es más débil.