Metodologia MVC
Enviado por edwinlinux13 • 3 de Abril de 2014 • 1.344 Palabras (6 Páginas) • 373 Visitas
Estructura de las Aplicaciones Orientadas a Objetos
El patrón Modelo-Vista-Controlador (MVC)
Programación Orientada a Objetos
Facultad de Informática
Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Universidad Complutense Madrid
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 2
El patrón MVC
MVC: Modelo-Vista-Controlador
Es un patrón de arquitectura de las aplicaciones software
Separa la lógica de negocio de la interfaz de usuario
• Facilita la evolución por separado de ambos aspectos
• Incrementa reutilización y flexibilidad
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 3
El patrón MVC
Historia
Descrito por primera vez en 1979 para Smalltalk
• http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
Utilizado en múltiples frameworks
• Java Swing
• Java Enterprise Edition (J2EE)
• XForms (Formato XML estándar del W3C para la especificación
de un modelo de proceso de datos XML e interfaces de usuario
como formularios web)
• GTK+ (escrito en C, toolkit creado por Gnome para construir
aplicaciones gráficas, inicialmente para el sistema X Window)
• ASP.NET MVC Framework (Microsoft)
• Google Web Toolkit (GWT, para crear aplicaciones Ajax con Java)
• Apache Struts (framework para aplicaciones web J2EE)
• Ruby on Rails (framework para aplicaciones web con Ruby)
• Etc., etc., etc.
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 4
El patrón MVC
Modelo-Vista-Controlador
Un modelo
Varias vistas
Varios controladores
Las vistas y los controladores suelen estar muy relacionados
• Los controladores tratan los eventos que se producen en la
interfaz gráfica (vista)
Esta separación de aspectos de una aplicación da mucha
flexibilidad al desarrollador
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 5
El patrón MVC
Flujo de control
1. El usuario realiza una acción en la interfaz
2. El controlador trata el evento de entrada
Previamente se ha registrado
3. El controlador notifica al modelo la acción del usuario, lo que
puede implicar un cambio del estado del modelo (si no es
una mera consulta)
4. Se genera una nueva vista. La vista toma los datos del
modelo
El modelo no tiene conocimiento directo de la vista
5. La interfaz de usuario espera otra interacción del usuario,
que comenzará otro nuevo ciclo
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 6
MVC en aplicaciones web
Vista:
la página HTML
Controlador:
código que obtiene datos dinámicamente y genera el
contenido HTML
Modelo:
la información almacenada en una base de datos o en XML
junto con las reglas de negocio que transforman esa
información (teniendo en cuenta las acciones de los usuarios)
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 7
MVC en Java Swing
Modelo:
El modelo lo realiza el desarrollador
Vista:
Conjunto de objetos de clases que heredan de
java.awt.Component
Controlador:
El controlador es el thread de tratamiento de eventos, que
captura y propaga los eventos a la vista y al modelo
Clases de tratamiento de los eventos (a veces como clases
anónimas) que implementan interfaces de tipo EventListener
(ActionListener, MouseListener, WindowListener, etc.)
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 8
Ejemplo: Calculadora de euros a pesetas
Una clase sencilla que da operaciones para calcular la
conversión entre euros y pesetas
En el constructor se indica el cambio
Métodos
• Calcular pesetas de una cantidad en euros
• Calcular euros de una cantidad en pesetas
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 9
Calculadora Euros-Pesetas
Modelo
Vista
Control
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 10
El modelo (1/2)
public class ConversorEuros {
private double cambio;
public ConversorEuros ( double valorCambio ) {
// valor en la moneda de 1 euro
cambio = valorCambio;
}
public double eurosAmoneda (double cantidad) {
return cantidad * cambio;
}
public double monedaAeuros (double cantidad) {
return cantidad / cambio;
}
}
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 11
El modelo (2/2)
public class ConversorEurosPesetas extends ConversorEuros
{ // Adaptador de clase
public ConversorEurosPesetas () {
super(166.386D);
}
public double eurosApesetas(double cantidad) {
return eurosAmoneda(cantidad);
}
public double pesetasAeuros(double cantidad) {
return monedaAeuros(cantidad);
}
}
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 12
El modelo (3/2)
public class ConversorEurosPesetas
{ // Adaptador de objetos
private ConversorEuros conversor;
public ConversorEurosPesetas () {
Conversor = new ConversorEuros(166.386D);
}
public double eurosApesetas(double cantidad) {
return conversor.eurosAmoneda(cantidad);
}
public double pesetasAeuros(double cantidad) {
return conversor.monedaAeuros(cantidad);
}
}
Juan Pavón Mestras
Facultad de Informática UCM, 2008-09 Programación Orientada a Objetos 13
La Vista (1/4)
Definimos una interfaz con las operaciones que el control
puede necesitar para manipularla
public interface InterfazVista {
void setControlador(ControlConversor c);
...