{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Modelo-Vista-Controlador (MVC)\n",
"\n",
"## Introducción\n",
"\n",
"El diseño **MVC (Model-View-Controller)** es uno de los patrones de diseño más utilizados en el desarrollo de software, especialmente en aplicaciones con interfaces gráficas o sistemas web. Este patrón separa la lógica de negocio, la presentación, y la interacción del usuario en tres componentes distintos: **Modelo (Model)**, **Vista (View)** y **Controlador (Controller)**. \n",
"\n",
"La principal ventaja de este diseño es que promueve la modularidad, facilitando el mantenimiento, la escalabilidad y la reutilización de los componentes de la aplicación. En esta clase aprenderemos los fundamentos del diseño MVC, sus aplicaciones prácticas y cómo implementarlo en Java. {cite}`Gamma`\n",
"\n",
"\n",
"## Objetivos\n",
"\n",
"- **Explicar** el concepto de diseño MVC y su importancia en el desarrollo de software.\n",
"- **Entender** cómo se separan las responsabilidades entre los componentes Model, View y Controller.\n",
"- **Implementar** un ejemplo práctico de MVC en Java.\n",
"- **Reconocer** las aplicaciones más comunes del diseño MVC.\n",
"\n",
"\n",
"## Administrador de Diseño: El Patrón MVC\n",
"\n",
"### ¿Qué es el Patrón MVC?\n",
"\n",
"El patrón **MVC** organiza el código de una aplicación dividiéndolo en tres partes principales:\n",
"\n",
"1. **Modelo (Model)**:\n",
" - Representa la lógica de negocio y los datos de la aplicación.\n",
" - Encapsula las reglas de negocio, la gestión de datos, y la conexión con bases de datos.\n",
" - No tiene conocimiento directo de la vista ni del controlador.\n",
"\n",
"2. **Vista (View)**:\n",
" - Es la interfaz que se presenta al usuario.\n",
" - Se encarga de mostrar los datos que provienen del modelo, pero no contiene lógica de negocio.\n",
" - Es completamente independiente del modelo.\n",
"\n",
"3. **Controlador (Controller)**:\n",
" - Actúa como un intermediario entre el modelo y la vista.\n",
" - Recibe las entradas del usuario desde la vista, las procesa, y decide qué debe hacer el modelo.\n",
"\n",
"\n",
"::::{grid}\n",
"\n",
":::{grid-item}\n",
":margin: auto auto 0 0\n",
":columns: 6\n",
"\n",
"\n",
"
\n",
"