POO: Agregación y Composición

Posted on February 19, 2026
Profile
Gastón Gaitan
February 19, 2026 · 8 hours, 31 minutes ago
POO: Agregación y Composición

Agregación y Composición en Python: diferencias claras con ejemplos reales

Relaciones entre objetos en POO

En programación orientada a objetos no solo modelamos entidades, sino también las relaciones entre ellas. Dos de las relaciones más importantes son: agregación y composición.

Ambas representan una relación “tiene un”, pero la diferencia clave está en el ciclo de vida de los objetos.

Composición: relación fuerte (dependencia total)

La composición representa una relación fuerte. Un objeto no puede existir sin el otro. Si el objeto principal se destruye, sus componentes también.

Ejemplo conceptual: una Persona tiene un Corazón y un Cerebro. No existen de forma independiente dentro del modelo.

class Corazon:
    def latir(self):
        return "El corazón está latiendo"


class Cerebro:
    def pensar(self):
        return "El cerebro está pensando"


class Persona:
    def __init__(self, nombre):
        self.nombre = nombre
        # La Persona crea sus propios componentes
        self.corazon = Corazon()
        self.cerebro = Cerebro()

    def vivir(self):
        return (
            self.corazon.latir() 
            + " y " 
            + self.cerebro.pensar()
        )

Aquí la Persona crea internamente su corazón y su cerebro. No se los pasan desde afuera. Si la persona deja de existir, sus componentes también.

Claves de la composición

  • Relación fuerte
  • El objeto contenido no tiene sentido sin el contenedor
  • El ciclo de vida depende completamente del objeto principal

Agregación: relación débil (independencia parcial)

La agregación representa una relación más flexible. Un objeto puede existir independientemente del otro.

Ejemplo: una Persona puede tener un Auto o un Celular, pero esos objetos pueden existir sin esa persona.

class Auto:
    def __init__(self, marca):
        self.marca = marca

    def encender(self):
        return "El auto está encendido"


class Celular:
    def __init__(self, modelo):
        self.modelo = modelo

    def llamar(self):
        return "Realizando llamada"


class Persona:
    def __init__(self, nombre, auto, celular):
        self.nombre = nombre
        # Los objetos se pasan desde afuera
        self.auto = auto
        self.celular = celular

    def usar_auto(self):
        return self.auto.encender()

    def usar_celular(self):
        return self.celular.llamar()

En este caso, el Auto y el Celular se crean fuera de la clase Persona y luego se inyectan. Pueden existir sin ella.

Claves de la agregación

  • Relación débil
  • Los objetos pueden existir de forma independiente
  • No comparten necesariamente el mismo ciclo de vida
Diagrama de composición y agregación
Otro ejemplo con cada uno de los conceptos de Agregación y Composición.

Diferencias resumidas

Característica Composición Agregación
Tipo de relación Fuerte Débil
Ciclo de vida Dependiente Independiente
Creación del objeto Interna Externa
Ejemplo Persona – Corazón – Cerebro Persona – Auto – Celular

Conclusión

La diferencia entre agregación y composición no es sintáctica, sino conceptual. Ambas usan clases y atributos, pero el significado del vínculo cambia.

Si el objeto contenido no puede existir sin el principal, estamos ante composición.

Si el objeto puede vivir por separado y simplemente se asocia, estamos ante agregación.

Comprender esta diferencia te ayuda a modelar mejor tus sistemas y tomar decisiones más sólidas al diseñar arquitectura orientada a objetos.