Guía MVC (Model, View, Controller)

Por user
Guía MVC (Model, View, Controller)

Descubre el fascinante mundo de la arquitectura de software con nuestra completa guía de Modelo-Vista-Controlador (MVC). Desde la esencia de sus componentes (Modelo, Vista y Controlador) hasta ejemplos prácticos que ilustran su implementación.

La arquitectura Modelo-Vista-Controlador, o MVC, es un paradigma de diseño de software ampliamente utilizado para desarrollar aplicaciones robustas y escalables. En este artículo, desglosaremos los componentes clave de MVC y proporcionaremos ejemplos concretos para ilustrar cómo funciona en el mundo real.

Modelo: El núcleo de los datos

El Modelo en MVC representa la capa de datos de la aplicación y maneja la lógica empresarial. Es responsable de recuperar y almacenar datos, así como de realizar cualquier procesamiento necesario. En un ejemplo práctico, podríamos imaginar un sistema de gestión de biblioteca. Aquí, el Modelo podría ser una clase que gestiona la base de datos de libros, maneja la lógica de préstamos y devoluciones, y realiza cálculos relacionados con multas por retraso.

class LibroModelo:
    def __init__(self, titulo, autor, estado):
        self.titulo = titulo
        self.autor = autor
        self.estado = estado

    def prestar_libro(self):
        self.estado = 'Prestado'

    def devolver_libro(self):
        self.estado = 'Disponible'

Vista: La interfaz de usuario

La Vista es la capa de presentación que muestra la información al usuario y captura las interacciones. Siguiendo con nuestro ejemplo de la biblioteca, la Vista podría ser la interfaz de usuario que muestra la lista de libros disponibles y permite a los usuarios solicitar préstamos.

class VistaBiblioteca:
    def mostrar_libros(self, libros):
        for libro in libros:
            print(f"{libro.titulo} - {libro.autor} - Estado: {libro.estado}")

    def mostrar_mensaje(self, mensaje):
        print(mensaje)

Controlador: El intermediario

El Controlador actúa como intermediario entre el Modelo y la Vista. Gestiona las interacciones del usuario, actualiza el Modelo en consecuencia y refresca la Vista. Siguiendo nuestro ejemplo, el Controlador podría manejar la solicitud de préstamo de un libro. 

class ControladorBiblioteca:
    def __init__(self, modelo, vista):
        self.modelo = modelo
        self.vista = vista

    def prestar_libro(self, titulo):
        libro = next((libro for libro in self.modelo.libros if libro.titulo == titulo), None)
        if libro and libro.estado == 'Disponible':
            libro.prestar_libro()
            self.vista.mostrar_mensaje(f"Libro {titulo} prestado con éxito.")
        elif libro and libro.estado == 'Prestado':
            self.vista.mostrar_mensaje(f"El libro {titulo} ya está prestado.")
        else:
            self.vista.mostrar_mensaje(f"Libro {titulo} no encontrado o no disponible.")

 

 Analogía del Modelo Vista Controlador

  • Modelo: La estructura interna de la casa

El Modelo en esta analogía sería la estructura interna de la casa: las tuberías, cables eléctricos y la cimentación. Es la base sobre la cual se construye todo. Así como el Modelo en MVC maneja la lógica y los datos de la aplicación, la estructura interna de la casa gestiona los aspectos fundamentales para que todo funcione correctamente.

  • Vista: La fachada y el diseño interior

La Vista sería la parte visible de la casa: la fachada y el diseño interior. Es lo que los visitantes y los residentes ven y experimentan directamente. De manera similar, la Vista en MVC se encarga de la presentación y la interfaz de usuario, proporcionando una manera atractiva y fácil de interactuar con la aplicación.

  • Controlador: El arquitecto y contratista

El Controlador actuaría como el arquitecto y contratista. El arquitecto recibe las solicitudes y decide cómo deben implementarse, mientras que el contratista lleva a cabo las tareas prácticas para construir la casa según las especificaciones. De manera análoga, el Controlador en MVC maneja las interacciones del usuario y actualiza el Modelo y la Vista en consecuencia.

Siguiendo esta analogía que te presentamos aquí en Devcode, el MVC en la construcción de la casa permite una clara separación de responsabilidades. El Modelo se preocupa por la estructura interna, la Vista por la apariencia y la interfaz, y el Controlador por coordinar ambas partes para que la casa funcione de manera eficiente y sea agradable estéticamente.