Mostrando entradas con la etiqueta composici贸n. Mostrar todas las entradas
Mostrando entradas con la etiqueta composici贸n. Mostrar todas las entradas

domingo, 15 de junio de 2025

馃И Python Nivel 2 – Parte 5: Relaciones entre Clases – Composici贸n y Agregaci贸n

Despu茅s de aprender herencia, es momento de trabajar otro aspecto clave de la POO: c贸mo se relacionan las clases entre s铆. Esto se logra con t茅cnicas como composici贸n y agregaci贸n.


馃幆 ¿Qu茅 aprender谩s hoy?

✅ Qu茅 es la composici贸n y c贸mo implementarla
✅ Qu茅 es la agregaci贸n y en qu茅 se diferencia
✅ C贸mo crear relaciones entre clases (uno-a-uno, uno-a-muchos)
✅ Ejemplos pr谩cticos con objetos reales


馃敡 1. Composici贸n

La composici贸n representa una relaci贸n fuerte:

“Un objeto contiene otro como parte esencial.”

Si el objeto principal se destruye, los objetos internos tambi茅n.


class Motor: def arrancar(self): print("馃敡 Motor en marcha...") class Coche: def __init__(self): self.motor = Motor() # Composici贸n def arrancar(self): self.motor.arrancar() auto = Coche() auto.arrancar()

馃 Aprendiste:

  • El objeto Coche crea y contiene a Motor

  • No puedes usar Motor si no existe un Coche


馃敡 2. Agregaci贸n

La agregaci贸n representa una relaci贸n d茅bil:

“Un objeto usa a otro, pero no lo controla.”

Se pasa como par谩metro, y puede vivir por separado.


class Profesor: def __init__(self, nombre): self.nombre = nombre class Curso: def __init__(self, profesor): self.profesor = profesor # Agregaci贸n def mostrar(self): print(f"Curso impartido por {self.profesor.nombre}") profe = Profesor("Ana") curso = Curso(profe) curso.mostrar()

馃 Aprendiste:

  • El Curso utiliza un Profesor ya existente

  • Si destruyes el Curso, el Profesor sigue existiendo


馃 Comparaci贸n r谩pida

Relaci贸nCrea internamenteIndependencia
Composici贸n✅ S铆❌ No
Agregaci贸n❌ No✅ S铆

馃殌 ¿Qu茅 aprendiste hoy?

✔️ A crear relaciones reales entre objetos
✔️ A modelar sistemas complejos como colecciones, veh铆culos, usuarios, etc.
✔️ A aplicar buenas pr谩cticas de dise帽o OOP en Python


馃搨 C贸digo completo disponible en:
github.com/josecodetech

馃挰 ¿Te gustar铆a un proyecto real usando estas relaciones? ¿Un sistema escolar, app o juego?