Mostrando entradas con la etiqueta relaciones entre clases. Mostrar todas las entradas
Mostrando entradas con la etiqueta relaciones entre clases. Mostrar todas las entradas

domingo, 15 de junio de 2025

馃И Python Nivel 2 – Parte 6: UML y Dise帽o de Clases

 

馃幆 ¿Qu茅 aprender谩s en esta parte?

✅ Qu茅 es UML y para qu茅 se usa
✅ C贸mo representar clases con UML
✅ C贸mo planificar relaciones (herencia, composici贸n, agregaci贸n)
✅ C贸mo traducir un dise帽o UML en clases Python
✅ Ejemplo completo: diagrama + c贸digo


馃搶 ¿Qu茅 es UML?

UML (Unified Modeling Language) es un lenguaje visual para representar sistemas orientados a objetos.
Se utiliza para planificar clases, atributos, m茅todos y relaciones entre objetos antes de programar.


馃П Estructura de una clase en UML

Un diagrama de clase b谩sico UML incluye:


-------------------------------------- | NombreClase | -------------------------------------- | - atributo1: Tipo | | - atributo2: Tipo | -------------------------------------- | + metodo1(): TipoRetorno | | + metodo2(par谩metro: Tipo): Retorno | --------------------------------------
  • + = p煤blico

  • - = privado

  • # = protegido


馃З Ejemplo simple en UML


------------------------- | Persona | ------------------------- | - nombre: str | | - edad: int | ------------------------- | + saludar(): str | -------------------------

Traducci贸n en c贸digo Python:


class Persona: def __init__(self, nombre, edad): self._nombre = nombre self._edad = edad def saludar(self): return f"Hola, me llamo {self.nombre} y tengo {self.edad} a帽os."

馃敆 Relaciones UML

Relaci贸nUMLEjemplo
HerenciaFlecha abiertaEmpleado → Persona
Composici贸nRombo negroCoche ▪── Motor
Agregaci贸nRombo blancoCurso ◇── Profesor

馃 ¿Por qu茅 usar UML?

✅ Facilita la planificaci贸n antes de codificar
✅ Mejora la comunicaci贸n entre programadores
✅ Ayuda a evitar errores de dise帽o
✅ Documenta mejor tus sistemas


✅ ¿Qu茅 aprendiste hoy?

✔️ Leer y escribir diagramas UML
✔️ Representar atributos y m茅todos
✔️ Comprender relaciones entre clases
✔️ Traducir UML a Python


馃搨 C贸digo de ejemplo completo:
github.com/josecodetech

馃帴 Video paso a paso en YouTube:
https://www.youtube.com/watch?v=RwGeo03rL6g



馃И 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?