De todo un poco sobre mi :-)

Modelo Vista Controlador


Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página.

  • Modelo: Esta es la representación específica del dominio de la información sobre la cual funciona la aplicación. El modelo es otra forma de llamar a la capa de dominio. La lógica de dominio añade significado a los datos; por ejemplo, calculando si hoy es el cumpleaños del usuario o los totales, impuestos o portes en un carrito de la compra.
  • Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente un elemento de interfaz de usuario.
  • Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.
  • Muchas aplicaciones utilizan un mecanismo de almacenamiento persistente (como puede ser una base de datos) para almacenar los datos. MVC no menciona específicamente esta capa de acceso a datos.

Es común pensar que una aplicación tiene tres capas principales: presentación (IU), dominio, y acceso a datos. En MVC, la capa de presentación está partida en controlador y vista. La principal separación es entre presentación y dominio; la separación entre V/C es menos clara.

Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente:

  1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón, enlace)
  2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos (handler) o callback.
  3. El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las acciones y simplifica su extensión.
  4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, el patrón de observador puede ser utilizado para proveer cierta indirección entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun así el modelo en sí mismo sigue sin saber nada de la vista. El controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista.
  5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

Información de Wikipedia.

Anuncios

20 comentarios

  1. Muy bien 😉 ve que lindo copy&paste de Wikipedia 😉 JAJAJA aver, ahora contanos vos que entendiste 😉

    21 julio 2006 en 1:56 pm

  2. Edgarin

    Va.. mira pues en resumen este es un patron que vos lo que haces es por ejemplo crear 3 carpetas verdad en una por ejemplo que se llame A esta va a ser el Modelo en la B va a ser la Vista y C controlador, va.. entonces por ejemplo una pagina dinamica como hi5 esta pagina tiene bastante programación y bastante diseño entonces por ejemplo los diseñadores graficos tocan los html que se encuentran en la carpeta B y los programadores en el Modelo y el controlador.

    En el modelo lo que hay son archivos que hacen una acción pero en la carpeta de controlador estan los archivos que contienen la programación para que se realize esta acción..

    No se si me di a entender jajaja-….

    22 julio 2006 en 1:42 am

  3. Edgarin

    Ahh y esque mano.. wikipedia lo maximo

    22 julio 2006 en 1:43 am

  4. yo

    hola

    4 diciembre 2006 en 12:45 pm

  5. JHIDALGO

    =MENTE, COPY & PASTE, NADA QUE VER COMPADRITO !!!!!!!!!!!!!!!!

    13 diciembre 2006 en 3:00 am

  6. entonceS?

    13 diciembre 2006 en 3:48 am

  7. Satanas

    Oye edgarin, cual es la ciencia de hacer el copy&paste de la wiki? Si cuando buscas en google primero sale la wiki y después tu página :S

    Además creo que esa explicación tuya lo que intenta es aclarar en que carpetas ubicar los archivos de la aplicación pero en ningún momento explicas la función de lo que es el modelo MVC.

    Fíjate, yo no tampoco es que sé mucho de programación pero podría intentar aporta un pequeño comentario para complementar lo que leí en la Wikipedia.

    La idea principal del modelo MVC es poder dar cierta independencia en el proceso de creación de un software. Por ejemplo como empresa, te da la ventaja que a la hora de desarrollar no tengas que contratar a una sola persona que sea programador/diseñador gráfico/administrador de bases de datos (ejecutivo de ventas y personal de limpieza :p ), pues generalmente esas personas cobran mucho más dinero por su trabajo ya que representan personal altamente capacitado y además si por alguna u otra razón este empleado debe retirarse (o lo retiran) de la empresa el proyecto quedará “suspendido” hasta tanto no consigan un reemplazo con las misma destrezas y habilidades para continuar con el proyecto.

    Entonces el MVC te permite separar la estructura y contratar a 1 programador, 1 diseñador, 1 admin de bd y pare de contar. Pensarás: ¡pero se supone que eso aumenta los costos de desarrollo!; Pues sí, en cierta forma lo hace, pero fíjate que ahora tienes a 3 personas trabajando “simultáneamente” sobre el mismo proyecto y eso se traduce en menor tiempo de desarrollo y como en producción el tiempo es inversamente proporcional al dinero, al decir menos tiempo hablamos de MÁS DINERO! Además tiene otra ventaja y es que si por alguna razón uno de los empleados se retira es mucho más fácil conseguir a un especialista en esa área que a uno que domine todos los campos en los que se desenvuelve el proyecto. Eso es a nivel corporativo.

    A nivel de programación (ya dejando de lado el cochino dinero), el MVC te da la facilidad de programar “por partes”. Esto es, separar el código de forma que las 3 capas sean independientes una de la otra.

    Como dice el Wiki que pegaste arriba:
    -El modelo es el que se encarga de la parte “ruda”, lo que es el procesamiento de los datos, manejo de información, bases de datos, archivos, etc.

    -La vista no es más que la simple y vulgar IU (Interfaz de Usuario), o sea las ventanas, las páginas web, los cuadros de diálogos, etc, que permiten al usuario interactuar con la aplicación y presentar los datos que se obtienen o se leen del modelo. Se encarga también de disparar los eventos que le indicaran al controlador que se ha realizado una acción.

    -El controlador es el encargado de “dirigir” (por decirlo de cierta forma) las respuestas que se deben generar a cada acción del usuario. El controlador es el intermediario entre la IU y el modelo. Además manejará el modelo a su antojo y conveniencia para procesar las solicitudes que han sido pedidas desde la vista

    Bueno más o menos es mi apreciación muy personal sobre lo que es el modelo MVC. Espero que haya sido de utilidad y haya aclarado un poco el asunto

    Saludos desde el Infierno

    7 enero 2007 en 10:15 pm

  8. Relampago

    Este Edgarin es un genio!!

    Entre la Wikipedia y el Príncipe de las tinieblas le hacen el blog, y el se cuelga las medallas!!!

    Anda, cúrratelo y haz un curso para que aprendamos de tu arte.

    Pero no lo copies de por ahí. Ja ja ja

    6 febrero 2007 en 9:48 am

  9. Quien se ha colgado las medallas, aprende a leer, hasta abajo dice Información de Wikipedia.

    Simplemente lo copie y lo puse aca porque se me da la gana!!!!.

    Cualquiera puede hacer lo que quiera y cuando quieras te enseño mi arte 😉 jajaja

    6 febrero 2007 en 8:24 pm

  10. Aldo

    El satanas explico bien el MVC.
    Solo como “add-on” el MVC como dice wikipedia es un patron de arquitectura de software, lo que significa que despues del desarrollo de varias aplicaciones llegaron a la conclusion de que se repetian algunos aspectos.
    En lo que es arquitectura del sistema usando n-capas se puede implementar el MVC en: Capa de presentacion => (VC – “View-Controller”), Capa de Logica del Negocio y Capa de Datos (M – “Model”).
    Otra cosa es que usando UML se representa el Model con estereotipo “entity” el View con estereotipo “boundary” y el Controller con estereotipo “Control”.
    El MVC ayuda a que el desarrollo sea modularizado en areas especializadas y por ende extensible.

    6 febrero 2007 en 8:31 pm

  11. gila

    el MVC equivale a la arquitectura ANSI-SPARC en base de datos?

    2 marzo 2007 en 9:24 pm

  12. Galia

    Hola:
    Entiendo perfectamente a lo que se refieren cuando hablan de MVC. Ahora bien, tengo que realizar un taller sobre PHP y estas tres capas.
    Alguien podría decirme algo sobre controladores de eventos en la Capa de Negocio o Lógica??

    17 octubre 2007 en 9:38 pm

  13. Buenas:
    EL patrón MCV no se dispone de una separación en tres capas, en relaidad serían dos capas.
    La idea de este patrón es separar la vista de la logica de nuestra aplicación.

    25 octubre 2007 en 2:25 pm

  14. @Gustavo ARG: así es :).

    25 octubre 2007 en 7:00 pm

  15. Para aldo:
    No estoy de acuerdo en tu definición:
    “..El MVC ayuda a que el desarrollo sea modularizado en areas especializadas y por ende extensible…”

    Los patrones nos conducen a implementar buenas experiencias, ya que cada uno posee: una pregunta y una respuesta.La pregunta sería el problema y la respuesta la solución a dicho problema.

    Aca no se trata de modularizar, es más que eso ,la implementación de patrones nos lleva a implementar modelos ya probados que conducen a un buen diseño, acuerdense que hay varios tipos de patrones: creación, estructurales y de comportamiento y tambien algo muy importante es que todos los patrones conllevan el mismo propósito

    ALTA COHESION y BAJO ACOPLAMIENTO…

    26 octubre 2007 en 2:16 pm

  16. Si quieren seguir el tema sobre patrones de diseño los espero aca:
    http://www.freelancephp.es.tl
    dejen sus comentarios o cualquier pregunta!!!

    31 octubre 2007 en 12:40 pm

  17. anonimo

    una pregunta en java usando el eclipse como puedo instanciar la clase que se encuentra en otro package llamado Controlador instanmciarlo hacia la de package Vista que se encuntra el diseño de mi aplicacion ? quero llamar a un metodo pero no c bien como se instancia si la clase se encuentra en la misma carpeta si puedo hacerlo pero en distinta no :S .. porfa m ayudan ya que soy nuevo en esto .. hace un mes q me dejaron el trabajo sin enseñarme nada 😛 ya lo termine pero hacerlo con el patron MVC … ¬¬

    9 enero 2008 en 5:38 pm

  18. anonimo

    jeje ya lo solucione :S con esto

    import Controlador.*;

    9 enero 2008 en 5:58 pm

  19. anonimo

    ahora quiero hacer reportes solo mi programa los simula ¬¬ .. e visto q se usa iReport y JasperReport haber si m mandan unos ejemplos a mi correo thevague.tc@gmail.com gracias !! de antemano .. saludos

    9 enero 2008 en 5:59 pm

  20. Pues creo que deberias hacer primero un intro en lo que es un patron, decir que existen diferentes clases de patrones, y todo ese choro, el que hagas copy and paste ps no tiene nada que ver, pero seria muy buen que enriquescas un poco mas el contenido… suerte y chido por ti (Y) hay nos twitteamos despues 😛

    Salu2.

    17 noviembre 2008 en 6:15 pm

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s