Orígenes.
Una de los aportes de Xerox PARC a la programación fue la interfaz altamente interactiva y multiventanas con que contaba el Smalltalk-80. Dicha interfaz fue tomada posteriormente por Apple Computers en sus ordenadores Lisa y Macintosh. El concepto central detrás de la interfaz del Smalltalk-80 era el paradigma de Model-View-Controller (MVC). Es un paradigma elegante y simple pero algo diferente a la forma tradicional de hacer programas. Se conoce que fue descrito por primera vez en 1979 por Trygve Reenskaug, aunque él mismo considera que le han dado más crédito del que merece, al decir que él no es el inventor de Smalltalk, sino uno de los primeros entusiastas y usuarios de esta revolucionaria innovación. Hizo la primera implementación de MVC mientras estaba en Xerox PARC desde el verano de 1978 al verano de 1979.
En su primera nota de implementación se especificaban cuatro términos: Modelo, Vista, Controlador y Editor, éste último es un componente efímero que la vista crea a demanda como una interfaz entre la Vista y los dispositivos de entrada como el mouse o el teclado. Jim Althoff y otros implementaron una versión de MVC para la biblioteca de clases del Smalltalk-80. El término Controlador empleado es algo diferente del original. Un aspecto importante del MVC original era que el Controlador fuera responsable de crear y coordinar sus Vistas subordinadas. En posteriores implementaciones, una Vista acepta y manipula entrada del usuario referente a sí misma; el Controlador acepta y manipula entrada referente al conjunto Controlador/Vista como un solo ensamblado, llamado Tool (Herramienta).
El propósito esencial de MVC es establecer una brecha entre el modelo mental humano y el modelo digital que existe en la computadora. La solución ideal es que el usuario tenga la ilusión de está viendo y manipulando la información del dominio directamente, la estructura es útil si el usuario necesita ver la misma información simultáneamente en diferentes contextos y/o desde diferentes puntos de vista. Fue concebido como una solución general al problema de controlar grandes y complejos conjuntos de datos. La parte más difícil fue dar con buenos nombres para diferenciar los componentes de la arquitectura. El primero fue Model-View-Editor. Después de grandes discusiones se determinó que los términos serían Model-View-Controller.
Conceptos Básicos.
Se separan explícitamente la interfaz de usuario, el modelado del mundo exterior y la retroalimentación visual. Cada parte es manipulada por tres tipos de objetos diferentes, cada uno es responsable de su tarea específica. La Vista se encarga de la salida gráfica ó textual hacia la porción de pantalla que le corresponde a la aplicación. El controlador intercepta las entradas del usuario a través del mouse o del teclado modificando el modelo o la vista según convenga. El modelo administra los datos del dominio de la aplicación, responde a solicitudes de información acerca de su estado (usualmente desde la vista) y responde a instrucciones para cambiar de estado (usualmente desde el controlador).
Para usar efectivamente el paradigma MVC hay que comprender la división de labores dentro de la tríada MVC. También hay que entender cómo las tres partes de la tríada se comunican una con la otra y con otras vistas y controladores. En Smalltalk-80 se contaba con los objetos abstractos: View, Controller, Model y Object, el comportamiento original de MVC puede ser modificado y extendido tanto como sea necesario.
Continuará…
Fuentes consultadas:
http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html
http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html