Modelo Vista Controlador

19
Modelo Vista Controlador Í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

description

Resumen de ¿que es model view controller?

Transcript of Modelo Vista Controlador

Page 1: Modelo Vista Controlador

Modelo Vista Controlador

Índice

ÍNDICE 1

INTRODUCCIÓN 2MODELO 3VISTA 4CONTROLADOR 5VENTAJAS DE UTILIZAR MVC 6MVC PARA APLICACIONES DESKTOP 7MVC PARA APLICACIONES WEB 10CONCLUSIONES 15BIBLIOGRAFÍA 16

1

Page 2: Modelo Vista Controlador

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.

“Los patrones de arquitectura expresan esquemas fundamentales de la estructura organizacional de los sistemas de software. Estos proporcionan un conjunto de subsistemas predefinidos, especifica sus responsabilidades, e incluyen las normas y directrices para la organización y la relaciones entre ellas” [3]

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.

Los datos se mantienen en un back-end store o en un sistema remoto. Muestra una capa de presentación para el usuario final. Presenta una capa lógica que decide cuales pantallas son presentadas al usuario, ¿qué

sucede cuando ocurre un error?, y exactamente cómo y cuando el sistema es actualizado.

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.

¿Como el MVC resuelve esto?

En MVC soluciona este problema separando el código en tres aéreas distintas:

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

Page 3: Modelo Vista Controlador

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:

Se le considera el núcleo de la aplicación. Lleva a cabo las tareas de la aplicación Si se presentan cambios significativos en este, se deben actualizar todos los componentes

de la aplicación necesarios.

3

Page 4: Modelo Vista Controlador

Modelo Vista Controlador

Vista

La vista se encarga de desplegarle la información al usuario de la aplicación por medio de una interfaz grafica, y obtener los datos del modelo. Es la única parte de la aplicación que interactúa con el usuario.

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

Page 5: Modelo Vista Controlador

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

Page 6: Modelo Vista Controlador

Modelo Vista Controlador

Ventajas de utilizar MVC

Claridad en el diseño: facilita en entendimientos del modelo, facilita la implementación y mantenimiento de la aplicación.

Modularidad: Esta modularidad en el diseño permite a los componentes de la aplicaciones sean flexibles, permitiendo agregar o quitar estos sin afectar a gran medida la aplicación. El desarrollo de los distintos componentes se puede realizar en paralelo, una vez que el interfaz entre los componentes este claramente definida.

Vistas Múltiples: permite mostrar el estado en que se encuentra el modelo de diferentes maneras como por ejemplo los juegos. Permitiendo tener una vista para mostrar el estado del modelo y otra vista que recoge los datos.

Facilidad de crecimientos: esto se da cuando existe versionamientos de la aplicación en donde cada componente se va desarrollando, así mismo se puede presentar cuando se necesitan dos tipos de usuarios para la aplicación: usuario o administrador, en donde existe una variación para cada uno, ya que utilizan el mismo modelo, sin embargo cambia la vista y el controlador.

Distribuible: se puede distribuir cualquier aplicación MVC, en aplicaciones cliente y servidor. En donde físicamente la parte de la vista se ubica en un cliente, mientras que la parte del controlador y el modelo se encuentra ubicado en otra locación, accediendo este por medio de una red.

6

Page 7: Modelo Vista Controlador

Modelo Vista Controlador

MVC para aplicaciones Desktop

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.

Se debe distribuir el controlador y a la vista en la capa de presentación y al modelo en un servidor de contenido.

El Modelo lo constituyen los datos y las operaciones de la aplicación a implementar

La Vista despliega la información del modelo en formato correspondiente en este caso una interfaz grafica

El Controlador responde a los eventos de la interfaz y comunica las acciones al modelo.

Ejemplo:

Vista de administrador

7

Page 8: Modelo Vista Controlador

Modelo Vista Controlador

Vista de usuario

Controlador

8

Page 9: Modelo Vista Controlador

Modelo Vista Controlador

Modelo

9

Page 10: Modelo Vista Controlador

Modelo Vista Controlador

MVC para aplicaciones Web

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

Page 11: Modelo Vista Controlador

Modelo Vista Controlador

Hojas de estilo: separar la estructura de un documento de su presentación siento esta un sitio web y permite un control centralizado de la presentación de un sitio web completo con lo que se agiliza de forma considerable la actualización del mismo.

Uso del patrón Decorator: es un patrón de diseño estructural que nos permite añadir comportamientos nuevos, o adicionales, a un objeto en tiempo de ejecución, dependiendo de la situación.

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:

Trabajo del Contralor:o Analizar las peticiones del usuario.o Validar las peticiones de usuario asegurando que estas se ajusta a los requisitos de

aplicación.o Determinar lo que el usuario está tratando de hacer basados en: URL, parámetros

de la petición o elementos de algún formulario.o Obtención de datos del modelo.o Seleccionar la siguiente vista que usuario debe ver.o Permite mantener la navegación en la aplicación.

Tecnologías del Contralor: frameworks que pueden utilizarse para proporcionar la capa de control en la aplicación.

11

Page 12: Modelo Vista Controlador

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.

Código Ineficiente de la aplicación:

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

Page 13: Modelo Vista Controlador

Modelo Vista Controlador

La parte del controlador, en index.php

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.

La parte de la vista, en vista.php13

Page 14: Modelo Vista Controlador

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.

Separando la manipulación de los datos, la parte del modelo, en modelo.php

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

Page 15: Modelo Vista Controlador

Modelo Vista Controlador

Conclusiones

¿Por qué utilizar MVC?

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

Page 16: Modelo Vista Controlador

Modelo Vista Controlador

Bibliografía

[1] Reenskaug, Trygve. THING-MODEL-VIEW-EDITOR an Example from a planning system, 12 MAY 1979.

[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