domingo, 15 de junio de 2025

🧪 Python Nivel 2 – Parte 7: Poner en práctica UML con un mini proyecto

Ahora que conoces cómo funciona UML, es momento de aplicarlo a un proyecto práctico donde diseñaremos con UML y luego lo programaremos en Python. Esta actividad te ayudará a consolidar los conceptos de clases, herencia, composición y agregación.


🎯 Proyecto: Sistema de Biblioteca

Vamos a construir un sistema sencillo para una biblioteca que permita:

  • Registrar libros y usuarios

  • Asignar libros a usuarios

  • Consultar disponibilidad de libros


🗂️ Diseño UML: Clases y Relaciones

Clases involucradas:

  1. Libro

    • titulo: str

    • autor: str

    • disponible: bool

    • prestar(), devolver()

  2. Usuario

    • nombre: str

    • email: str

    • prestamos: list

  3. Biblioteca

    • libros: list

    • usuarios: list

    • agregar_libro(), registrar_usuario(), prestar_libro()


🧱 Fragmento UML


-------------------------------- | Libro | -------------------------------- | + titulo: str | | + autor: str | | + disponible: bool | -------------------------------- | + prestar() | | + devolver() | -------------------------------- -------------------------------- | Usuario | -------------------------------- | + nombre: str | | + email: str | | + prestamos: list | -------------------------------- -------------------------------- | Biblioteca | -------------------------------- | + libros: list | | + usuarios: list | -------------------------------- | + agregar_libro() | | + registrar_usuario() | | + prestar_libro() | --------------------------------

💻 Código en Python (versión simplificada)


class Libro: def __init__(self, titulo, autor): self.titulo = titulo self.autor = autor self.disponible = True def prestar(self): if self.disponible: self.disponible = False return True return False def devolver(self): self.disponible = True class Usuario: def __init__(self, nombre, email): self.nombre = nombre self.email = email self.prestamos = [] class Biblioteca: def __init__(self): self.libros = [] self.usuarios = [] def agregar_libro(self, libro): self.libros.append(libro) def registrar_usuario(self, usuario): self.usuarios.append(usuario) def prestar_libro(self, titulo, email): libro = next((l for l in self.libros if l.titulo == titulo and l.disponible), None) usuario = next((u for u in self.usuarios if u.email == email), None) if libro and usuario: if libro.prestar(): usuario.prestamos.append(libro) print(f"{usuario.nombre} ha tomado prestado '{libro.titulo}'.") else: print("❌ No se pudo completar el préstamo.")

🧠 ¿Qué aprendiste hoy?

✔️ A diseñar con UML antes de programar
✔️ A transformar ese diseño en código Python
✔️ A trabajar con clases relacionadas mediante composición y listas
✔️ A crear una app funcional basada en objetos


📂 Código completo en GitHub:
github.com/josecodetech

🎥 Video del mini proyecto en YouTube:
http://youtube.com/watch?v=s4kWoqrTGVM



No hay comentarios:

Publicar un comentario

Se procedera a revision para su pronta publicacion en caso de que no incumpla las normas de blogger.