Desarrollo de Aplicaciones Java
Arquitectura MVC
Interaccin entre el Modelo, la Vista y el Controlador.
Autor del Presente Tutorial
Ingeniero de Sistemas
Ignacio R. Aular R.
SCJP 310-055
Esquema
Uso de libreras para crear elementos
grficos. Distribucin de la aplicacin en
tres capas.
Objetivo
Mostrar el uso del patrn MVC en el
desarrollo de aplicaciones de
escritorio implementando las
libreras swing de Java.
Situacin Presente
Carencia de material instruccional con
contenidos
bre- que permita al joven novicio
ves
y precisos
aprender con una curva mnima de esfuerzo,
para poder ofrecer Soluciones de Software de
Calidad, en cumplimiento con los lineamientos
xigidos por el PNFI, de acuerdo al perfil que
debe poseer el egresado como Ingeniero en
Informtica.
Estudiantes principiantes en Java requieren
asesora
constante
para comprender y aplicar el patrn
MVC.
Alternativas Posibles
Conocer las convenciones
de
internacionales
Java emanadas por Oracle
(Ingles).
Investigar,
conocer y
deaplicar
escrituralas
de programas
normasen
Java.
Recomendaciones
La primera alternativa es muy
recomendada.
Conocer la importancia
de
seguir las
ciones para
convenescritura de cdigo en
cualquier len- guaje de programacin, de
marcado o de comu- nicacin con base de
datos.
En el prximotutorial
veremos
con
la base
interaccin
de datos bajo el patrn MVC, no
se lo pueden perder.
Ejemplo Swing de Java y MVC
Interfz Grfica de Usuario (GUI)
Descripcin General
La Vista recibe datos por parte del
Reacciona ante la ocurrencia de un
usuario.
evento. Hace el llamado al
Controlador.
El Controlador escucha el
evento. Transfiere la solicitud
Controlador
al Modelo. y
ste
leinforma
El Modelo Vista
procesa
datos y que los muestre
para
retorna la informacin al
como resultado al usuario.
la
Arquitectura MVC Bsica
VISTA
Solamente
Componentes
Grficos
CONTROLADOR
Conecta la Vista
y al Modelo
MODELO
Base de Datos
Lgica
Idea Global
Introduccin:
La arquitectura MVC se usa para separar el la
Vista del
Modelo que interactan entre s
mediante un comunicador comn entre ambos
llamado Controlador.
Tutorial:
Nuestra aplicacin se llamar: "Sumar dos
nmeros", la misma ser usada para mostrar la
arquitectura MVC y es por tanto que se dividir
este programa en cuatro partes.
Clases de la Aplicacin
Modelo: ClaseModelo.
Vista: ClaseVista.
Controlador: ClaseControlador.
Inicializadora: ClasePrincipal.
La Vista Parte 1
Importar Libreras:
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import
javax.swing.JTextField;
La Vista Parte 2
Definicin de clase:
public class ClaseVista extends
JFrame
{
La Vista Parte 3
Declaracin de objetos:
Container bloqueContenedor = null;
JTextField cajaDeTextoNumero1 =
null; JTextField cajaDeTextoNumero2
=
null;
JTextField
cajaDeTextoResultado = null;
JLabel etiquetaNumero1 =
null;
JLabel
etiquetaNumero2 = null;
JLabel etiquetaResultado =
null;
La Vista Parte 4
Definicin del constructor:
public ClaseVista()
{
La Vista Parte 5
Definiendo el contenedor:
bloqueContenedor =
getContentPane();
setTitle("Calculadora MVC");
setLayout(new FlowLayout());
setSize(220,200);
La Vista Parte 6
Definiendo cada componente:
etiquetaNumero1 = new JLabel("Numero
01: "); cajaDeTextoNumero1 = new
JTextField("", 10);
etiquetaNumero2 = new JLabel("Numero
02: "); cajaDeTextoNumero2 = new
JTextField("", 10);
etiquetaResultado = new
JLabel("Resultado: ");
cajaDeTextoResultado = new JTextField("",
La Vista Parte 7
Agregamos cada conponente al contenedor:
bloqueContenedor.add(etiquetaNumero1)
;
bloqueContenedor.add(cajaDeTextoNumer
o1);
bloqueContenedor.add(etiquetaNumero2)
;
bloqueContenedor.add(cajaDeTextoNumer
o2);
bloqueContenedor.add(etiquetaResultado);
La Vista Parte 9
Hacemos que el contenedor sea visible:
setVisible(true);
}
}
El Controlador Parte 1
Importamos Libreras:
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
El Controlador Parte 2
Definimos la clase:
public class ClaseControlador implements
ActionListener
El Controlador Parte 3
Declaramos dos objetos nuevos:
ClaseModelo objModelo =
null; ClaseVista objVista =
null;
El Controlador Parte 4
Definimos el constructor:
public ClaseControlador(ClaseVista objVista, ClaseModelo
objModelo)
{
this.objModelo = objModelo;
this.objVista = objVista;
actionListener(this); // Escuchador para el
botn
El Controlador Parte 5
Sobreescribir un mtodo:
@Override
public void actionPerformed(ActionEvent objEvento)
{
try
{
El Controlador Parte 6
Tomamos los datos de entrada:
// Capturamos los nmeros desde la vista
String numero1 =
this.objVista.cajaDeTextoNumero1.getText(); String
numero2 = this.objVista.cajaDeTextoNumero2.getText();
El Controlador Parte 7
Llamamos al mtodo para sumar:
int resultado = objModelo.sumarDosEnteros(numero1,
numero2);
El Controlador Parte 8
Mostramos los datos en la salida:
// Mostramos el resultado en la vista (GUI)
objVista.cajaDeTextoResultado.setText( "" +
resultado );
}
El Controlador Parte 9
S ocurre un error lo mostramos:
catch(Exception objExcepcion)
{
objExcepcion.printStackTrace();
}
}
El Controlador Parte 10
Proporcionamos un escuchador:
public void actionListener(ActionListener escuchador)
{
objVista.botonSumar.addActionListener(escuchador)
;
}
}
El Modelo Parte 1
Definimos la clase:
public class
ClaseModelo
{
El Modelo Parte 2
Definimos el mtodo para sumar:
// Implementa la lgica del objetivo principal del programa
public int sumarDosEnteros(String n1, String
n2)
{
El Modelo Parte 3
Declaramos, convertimos e inicializamos:
int
numero1
Integer.parseInt(n1);
=
int
numero2 = Integer.parseInt(n2);
int resultado = numero1 +
numero2;
El Modelo Parte 4
Retornamos el resultado al llamador:
return (resultado);
}
}
La Clase Principal Parte 1
Definimos la clase:
public class
ClasePrincipal
{
La Clase Principal Parte 2
Definimos el metodo principal:
public static void main(String args[])
{
La Clase Principal Parte 3
Creamos los objetos necarios:
ClaseModelo modelo = new
ClaseModelo(); ClaseVista vista = new
ClaseVista();
La Clase Principal Parte 4
Instanciamos al constructor de la clase:
new ClaseControlador(vista, modelo);
}
}
La Clase Principal Parte 5
Pasamos los objetos al controlador:
new ClaseControlador(vista, modelo);
}
}
Ejecucin de la Aplicacin
Parte 1
Compilar Java desde la terminal:
usuario@localhost:~$ javac
ClasePrincipal.java
Ejecutar Java desde la terminal:
usuario@localhost:~$ java
ClasePrincipal
Ejecucin de la Aplicacin
Parte 2
Ejecucin de la Aplicacin
Parte 3
Calculadora MVC: