Post on 07-Jan-2016
description
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 1/10
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 2/10
• Vista: %ste presenta el modelo en un "ormato adecuado para interactuar,usualmente la inter"a$ de usuario.
• Controlador: %ste responde a eventos, usualmente acciones del usuario einvoca cambios en el modelo y probablemente en la vista.
&uc>os sistemas in"orm)ticos utili$an un Sistema de -estión de ase de /atos paragestionar los datos: en MVC corresponde al modelo. a unión entre capa de
presentación y capa de negocio conocido en el paradigma de la @rogramación por capasrepresentaría la integración entre Vista y su correspondiente Controlador de eventos yacceso a datos, &' no pretende discriminar entre capa de negocio de capa de
presentación pero si pretende separar la capa !isual gr"#ica de su correspondiente programación $ acceso a datos algo que mejora el desarrollo y mantenimiento de laista y el Controlador en paralelo ya que ambos cumplen ciclos de vida muy distintosentre si.
Aunque se pueden encontrar di"erentes implementaciones de MVC, el "lujo que sigue el
control generalmente es el siguiente:
2. %l usuario interactúa con la inter"a$ de usuario de alguna "orma (por ejemplo, elusuario pulsa un botón, enlace, etc.!
3. %l controlador recibe (por parte de los objetos de la inter"a$Bvista! la noti"icaciónde la acción solicitada por el usuario. %l controlador gestiona el evento quellega, "recuentemente a travCs de un gestor de eventos (>andler! o callbac6.
4. %l controlador accede al modelo, actuali$)ndolo, posiblemente modi"ic)ndolo de"orma adecuada a la acción solicitada por el usuario (por ejemplo, el controladoractuali$a el carro de la compra del usuario!. os controladores complejos est)n amenudo estructurados usando un patrón de comando que encapsula las accionesy simpli"ica su e<tensión.
7. %l controlador delega a los objetos de la vista la tarea de desplegar la inter"a$ deusuario. a vista obtiene sus datos del modelo para generar la inter"a$ apropiada
para el usuario donde se re"leja los cambios en el modelo (por ejemplo, produceun listado del contenido del carro de la compra!. %l modelo no debe tenerconocimiento directo sobre la vista. Sin embargo, el patrón de observador puedeser utili$ado para proveer cierta indirección entre el modelo y la vista,
permitiendo al modelo noti"icar a los interesados de cualquier cambio. Un objetovista puede registrarse con el modelo y esperar a los cambios, pero aun así elmodelo en sí mismo sigue sin saber nada de la vista. %l controlador no pasa
objetos de dominio (el modelo! a la vista aunque puede dar la orden a la vista para que se actualice. %ota: &n algunas implementaciones la !ista no tiene
acceso directo al modelo' deando ue el controlador en!*e los datos del modelo
a la !ista+ D. a inter"a$ de usuario espera nuevas interacciones del usuario, comen$ando el
ciclo nuevamente.
Frameworks MVC [editar]
Len!a"e Licencia #ombre
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 3/10
8uby &E+ 8uby on 8ails
Fava GF3ee Apac>e Struts
Fava GF3ee
Apac>e ee>ive
Fava GF3ee
Apac>e Spring
Fava GF3ee
Apac>e +apestry
Fava GF3ee
Apac>e Aurora
Fava GF3ee
Apac>e FavaServer5aces
@erl -@ atalyst
@erl -@ -E::Application
@erl -@ -antry 5rame#or6
@erl -@ Fi"ty
@erl -@ &aypole
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 4/10
@erl -@ penEnteract3
@erl omercial @ageHit
@erl -@ yclone 4
@erl % Solstice
@erl -@ -E::uilder
@*@ -@ Sel" 5rame#or6
@*@ -@ +lalo6es
@*@ -@ Agavi
@*@ S/ Iend 5rame#or6
@*@ &E+ a6e@*@
@*@ -NUG-@ Humbia
@*@ &E+ Sym"ony
@*@ &E+ Jodo
@*@ -NUG-@ odeEgniter
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 5/10
@*@ tra Ho>ana
@*@ &@ 2.2 @*@7%ore
@*@ S/ @8A/
@yt>on I@ Iope4
@yt>on 'arias +urbogears
@yt>on -@ Keb3py
@yt>on S/ /jango
.N%+ astle @roject &ono8ail
.N%+ Apac>e Spring .N%+
.N%+ Apac>e &averic6 .N%+
.N%+ &SB@ AS@.N%+ &'
.N%+&icroso"t @atterns L@ractices
User Enter"ace @rocess (UE@! Applicationloc6
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 6/10
AS4 Adobe pen Source airngorm
$e%erencias [editar]
2. M +rygveG&'O.3. M *o# to use &odelB'ie#Bontroller (&'!
btenido de P>ttp:GGes.#i6ipedia.orgG#i6iG&odeloQ'istaQontrolador Pategorías: @atrones de dise?o R Arquitectura de so"t#are
Vistas
• Artículo • /iscusión • &ditar • *istorial
Herramientas personales
• @robar eta • $eistrarse'&ntrar
!scar
Ir
Buscar
#aeación
• @ortada • @ortal de la comunidad • Actualidad
• ambios recientes • @)gina aleatoria • Ayuda • /onaciones
*mprimir'e+portar
• rear un libro • /escargar como @/5 • 'ersión para imprimir
Herramientas
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 7/10
• o que enla$a aquí • ambios en enla$adas • Subir arc>ivo • @)ginas especiales • %nlace permanente • itar este artículo
&n otros idiomas
• TVWXYZ[ • atal\ • ]es6y • /eutsc> • %nglis> • %speranto • ^_` • Suomi • 5ranais • fh • &agyar • Etaliano • 日本語 • 한국어 • atvieu • Nederlands • Nors6 (bo6ml! • @ols6i • @ortuguks • 8omn • YYZ[ • Svens6a • தமழ • ไทย • +r6e • ZXWYZW • +ing 'iwt • 中文
• %sta p)gina "ue modi"icada por última ve$ el x4:D9, 3x oct 3xx9.• %l te<to
Nuevo
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 8/10
Patrón "Modelo-Vista-Controlador"
Descripción
Para el diseño de aplicaciones con sofisticados interfaces se utiliza el patrón de diseño Modelo-Vista-Controlador. La lógica de un interfaz de usuario cambia con más frecuencia ue losalmacenes de datos ! la lógica de negocio. "i realizamos un diseño ofuscado# es decir# unpastic$e ue mezcle los componentes de interfaz ! de negocio# entonces la consecuencia seráue# cuando necesitemos cambiar el interfaz# tendremos ue modificar traba%osamente loscomponentes de negocio. Ma!or traba%o ! más riesgo de error.
"e trata de realizar un diseño ue desacople la &ista del modelo# con la finalidad de me%orar lareusabilidad. 'e esta forma las modificaciones en las &istas impactan en menor medida en lalógica de negocio o de datos.
(lementos del patrón)
• Modelo) datos ! reglas de negocio
• Vista) muestra la información del modelo al usuario
• Controlador) gestiona las entradas del usuario
*n modelo puede tener di&ersas &istas# cada una con su correspondiente controlador. *ne%emplo clásico es el de la información de una base de datos# ue se puede presentar dedi&ersas formas) diagrama de tarta# de barras# tabular# etc. Veamos cada componente)
+. (l modelo es el responsable de)o ,cceder a la capa de almacenamiento de datos. Lo ideal es ue el modelo sea
independiente del sistema de almacenamiento.o 'efine las reglas de negocio la funcionalidad del sistema. *n e%emplo de
regla puede ser) /"i la mercanc0a pedida no está en el almac1n# consultar eltiempo de entrega estándar del pro&eedor/.
o Lle&a un registro de las &istas ! controladores del sistema.
o "i estamos ante un modelo acti&o# notificará a las &istas los cambios ue en los
datos pueda producir un agente e2terno por e%emplo# un fic$ero bat$ ueactualiza los datos# un temporizador ue desencadena una inserción# etc.
3. (l controlador es responsable de)o 4ecibe los e&entos de entrada un clic# un cambio en un campo de te2to# etc..
o Contiene reglas de gestión de e&entos# del tipo /"I (&ento 5# entonces ,cción6/. (stas acciones pueden suponer peticiones al modelo o a las &istas. *na de
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 9/10
estas peticiones a las &istas puede ser una llamada al m1todo /,ctualizar/.*na petición al modelo puede ser/7btener8tiempo8de8entrega nue&a8orden8de8&enta /.
9. Las vistas son responsables de)o 4ecibir datos del modelo ! los muestra al usuario.
o :ienen un registro de su controlador asociado normalmente porue además lo
instancia.o Pueden dar el ser&icio de /,ctualización/# para ue sea in&ocado por el
controlador o por el modelo cuando es un modelo acti&o ue informa de loscambios en los datos producidos por otros agentes.
*n e%emplo de MVC con un modelo pasi&o auel ue no notifica cambios en los datos es lana&egación ;eb# ue responde a las entradas del usuario# pero no detecta los cambios endatos del ser&idor.
(l diagrama de secuencia)
Pasos)
+. (l usuario introduce el e&ento.3. (l Controlador recibe el e&ento ! lo traduce en una petición al Modelo aunue tambi1n
puede llamar directamente a la &ista.9. (l modelo si es necesario llama a la &ista para su actualización.<. Para cumplir con la actualización la Vista puede solicitar datos al Modelo.=. (l Controlador recibe el control.
Bien# pero esto >cómo se implementa? (2iste una peueña dificultad) la ma!or parte de las
$erramientas de desarrollo incorporan en las clases de la &ista gran parte o todo elprocesamiento de e&entos. Con lo ue el controlador ueda semioculto dentro de la &ista. ,pesar de ello# podemos acercarnos bastante al patrón. (n el siguiente e%emplo en @a&a# elob%eto &ista es un ,pplet ,6:. (l controlador controlador.%a&a puede gestionar el clic en unbotón# de tal forma ue recoge datos por medio del Modelo model.cargar8te2to.. ! losmanda a la Vista el applet para su actualización &ista.mostrar8te2to )
/****************************************************************
Responde al click en botón "abrir"
La respuesta al evento es hacer que se abra en la vista
7/17/2019 Modelo Vista Controlador
http://slidepdf.com/reader/full/modelo-vista-controlador-568e2560786f8 10/10
el archivo correspondiente a la referencia seleccionada en elcombo box
****************************************************************/
void b_abrir_actionPerformed(ction!vent e #
$$$
%trin& texto_archivo 'model$car&ar_texto( indice_ref // )btener texto de archivo
/*** %i la car&a de archivo es ok lo muestro$ %i no
aviso de error ****/
if (texto_archivo +' null #
vista$mostrar_texto(texto_archivo //,ostrar texto
vista$mostrar_aviso("-ar&a de " . path . "completada$"
else
vista$mostrar_aviso("!rror en la car&a de " .path
Vol&er al 0ndice