Professional Documents
Culture Documents
Índice
ÍNDICE 1
INTRODUCCIÓN 2
MODELO 3
VISTA 4
CONTROLADOR 5
VENTAJAS DE UTILIZAR MVC 6
MVC PARA APLICACIONES DESKTOP 7
MVC PARA APLICACIONES WEB 10
CONCLUSIONES 15
BIBLIOGRAFÍA 16
1
Modelo Vista Controlador
Introducción
En ingeniería de software los patrones de diseño son una herramienta fundamental que nos
permite una solución general y reutilizable a problemas comunes en el diseño de software. Los
patrones de diseño son una plantilla o descripción que nos permite resolver un problema de
muchas maneras diferentes.
En un nivel superior existen los patrones de arquitectura que presentan un mayor alcance, ya que
en estos describe un patrón general de todo un sistema.
Entre los patrones de arquitectura, existe uno denominado Modelo Vista Controlador (MVC) en
cual vamos a estudiar más a fondo.
“El MVC fue desarrollado originalmente en 1970 en la Xerox Palo Alto Research Center (PARC). Fue
construido originalmente para el manejo de la GUI (graphical user interface)” [2].
El problema de diseño que el MVC resuelve, se puede simplificar en tres funciones principales
comunes en muchas aplicaciones.
Es posible combinar todos estos procesos en un modulo simple y tener el sistema trabajando sin
problemas, sin embargo, existe un problema a la hora de dar mantenimiento al código del sistema
ya que al no existir separación, se torna difícil de realizarlo.
Modelo: que presenta los componentes para el mantenimiento de los datos, contiene la
lógica del negocio.
Vista: que contiene la presentación al usuario.
Controlador: que contiene la lógica que decide que acciones deben ser tomadas para cada
una de las partes del sistema.
Estos tres componentes son los pilares principales del patrón en sí.
2
Modelo Vista Controlador
Modelo
Un modelo se puede ver como una representación abstracta de cómo los datos son procesados
por el sistema. “Los modelos están representados, como un conjunto de datos y métodos
necesarios para procesar estos datos por medio del encapsulamiento de estos datos y
funcionalidades” [3]. Deber ser independiente de la entrada o salida de datos.
Un modelo puede ser dividido en varios sub-modelos pero todos estos sub-modelos deben ser
totalmente compatibles con el principal.
Características:
3
Modelo Vista Controlador
Vista
Un modelo puede tener más de una vista asociada, cada vista es capaz de mostrar una o más
representaciones del modelo en la pantalla. En esta se muestran cuales operaciones son las que
puede realizar el usuario dentro de la aplicación.
Gracias es esta característica de múltiples vistas se pueden existir por ejemplo en una aplicación
una vista para el cliente, una vista del operador, o tener una vista general del administrador del
sistema.
Cada vista tiene asociado un controlador que recibe la entrada de los datos, la cual debe pasar al
modelo para obtener un resultado. Cada vez que el modelo devuelve algún resultado a la vista,
esta se debe actualizar para desplegar la nueva información en la pantalla.
4
Modelo Vista Controlador
Las vistas no necesariamente se limitan a un sistema dentro de una organización sino que también
pueden ser vistas desde un modelo más amplio donde interactúan con otros sistemas.
Controlador
Los controladores son asociados a las vistas en una relación uno a uno, existen tantos
controladores como vistas en una aplicación.
El contralor toma la entrada proveniente de la vista como un evento, este despacha estos eventos
dependiendo de la funcionalidad que presente el modelo, traduciendo estos para ser
interpretados tanto para la vista como el modelo, esto se realiza por cada evento notable que se
obtenga.
“El comportamiento del controlador es definido por los diferentes estados del modelo, este registra
cualquier cambio que se presente, disparando un proceso para que se actualice la información” [3].
5
Modelo Vista Controlador
6
Modelo Vista Controlador
Figura1 [2]
Como lo muestra la figura 1 este es un típico ejemplo del diagrama del MVC para una aplicación
Desktop, en este se muestra la independencia que existente entre cada uno de los componentes
que integran el patrón.
La Vista despliega la información del modelo en formato correspondiente en este caso una
interfaz grafica
Ejemplo:
Vista de administrador
7
Modelo Vista Controlador
Vista de usuario
Controlador
8
Modelo Vista Controlador
Modelo
9
Modelo Vista Controlador
Figura 2 [4]
Como lo muestra la figura 2 este es ejemplo del diagrama del MVC para una aplicación web, en
este se muestra la independencia que existente entre cada uno de los componentes que integran
el patrón, así mismo nos muestra los otros componentes que interactúan con el modelo como lo
es el clientes web y internet, que es a través de este último es que se puede utilizar la aplicación.
El modelo representa la información con la que trabaja la aplicación, es decir, su lógica de negocio.
Se encarga de la abstracción de la lógica relacionada con los datos, haciendo que la vista y las
acciones sean independientes, por ejemplo, el tipo de gestor de bases de datos utilizado por la
aplicación.
La vista transforma el modelo en una página web que permite al usuario interactuar con ella. En la
vista se detallan otros elementos que pueden estar presentes en esta como:
Los elementos que debe tener la vista: Business logic widgets (botones que realizan
determinada acción), Navigation widgets que permiten la navegación dentro del sitio, Skin
(el color estándar del sitio o presentaciones diferentes de este).
View Technologies.
Plantillas.
10
Modelo Vista Controlador
El controlador se encarga de procesar las interacciones del usuario y realiza los cambios
apropiados en el modelo o en la vista. Detalle del controlador:
11
Modelo Vista Controlador
Ejemplo [4]: Se va a transformar una aplicación simple realizada con PHP en una aplicación que
sigue la arquitectura MVC.
El script anterior es fácil de escribir y rápido de ejecutar, pero muy difícil de mantener y actualizar.
Los principales problemas del código anterior son:
No existe protección frente a errores (¿qué ocurre si falla la conexión con la base de
datos?).
El código HTML y el código PHP están mezclados en el mismo archivo e incluso en algunas
partes están entrelazados.
El código solo funciona si la base de datos es MySQL.
Separando el código
El código va a ser dividido en dos partes. En primer lugar, el código PHP puro con toda la lógica de
negocio se incluye en el script del controlador, como se muestra a continuación.
12
Modelo Vista Controlador
Código:
El controlador es mucho más fácil de leer. Su única tarea es la de obtener los datos del modelo y
pasárselos a la vista y viceversa. En las aplicaciones más complejas, el controlador se encarga
además de procesar las peticiones, las sesiones de los usuarios, la autenticación, etc. El uso de
nombres apropiados para las funciones del modelo hace que sea innecesario añadir comentarios al
código del controlador.
Por último se modifica el controlador para que únicamente obtenga los datos
Código:
Ahora el controlador es mucho más fácil de leer. Su única tarea es la de obtener los datos del
modelo y pasárselos a la vista.
13
Modelo Vista Controlador
Código:
Una buena regla general para determinar si la parte de la vista está suficientemente limpia de
código es que debería contener una cantidad mínima de código, la suficiente como para que un
diseñador HTML sin conocimientos pueda entenderla.
Código:
El script del modelo solamente se encarga del acceso a los datos y puede ser reorganizado a tal
efecto. Todos los parámetros que no dependen de la capa de datos se deben obtener a través del
controlador y por tanto, no se puede acceder a ellos directamente desde el modelo. Las funciones
del modelo se pueden reutilizar fácilmente en otros controladores.
14
Modelo Vista Controlador
Conclusiones
La lógica de la interfaz de usuario tiende a cambiar con mayor frecuencia que la lógica de
negocio, especialmente en aplicaciones basadas en Web. Si el código de la presentación y
la lógica de negocios se combinan en un solo objeto, y se tiene que modificar alguno de
estos objetos que contienen la lógica del negocio cada vez que cambia la interfaz de
usuario se vuelve muy caro.
La independencia en cada una de las capas no permite una mejor matenibilidad del código
de nuestra aplicación.
La aplicación muestra los mismos datos de diferentes maneras. Permite tener múltiples
vistas de los mismos datos se muestran al mismo tiempo. Si el usuario cambia los datos en
una vista, el sistema debe actualizar todas las vistas de los datos de forma automática.
Una clara separación de la interfaz de usuario y lógica de negocio minimiza el riesgo de
introducir errores en la lógica de negocio.
El MVC permite la reutilización de cada una de sus partes.
Nos facilita la estandarización.
El MVC debería de ser el patrón básico a implementarse en cada aplicación que se
desarrolla, tomándolo como una buena práctica de programación.
15
Modelo Vista Controlador
Bibliografía
[2] Model-View-Controller (MVC) Design Pattern Computer Science and Engineering The Ohio
State University.
[3] Buschmann, Frank. Meunier, Regine. Rohnert, Hans. Sommerlad, Peter. Stal, Michael. Pattern-
Oriented Software Architecture Volume 1: A System of Patterns. Octubre de 1996.
[4] Triana Morín, Arley. Implementación del Patrón clásico de diseño web Modelo-Vista-
Controlador (MVC) en PHP. Julio de 2009
16