Sobes.tech
Junior — Middle

¿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.