Ir al contenido principal

Introducción al Patrón de diseño MVC en Java



El patrón de diseño Modelo Vista Controlador es un modelo de desarrollo de software que permite separar 3 elementos básicos:

  1. Los datos (Modelo) es la representación de la información con la que trabaja el sistema.
  2. La interfaz gráfica (Vista) es la interfaz gráfica que vera el usuario y en la que interactúa con todos los componentes que este contenga.
  3. La lógica de negocio (Controlador) Es el encargado de responder a los eventos que sucedan dentro de la Vista, y realiza peticiones al modelo.






Patrón de diseño Modelo – Vista – Controlador

1.- Crear un nuevo programa con el nombre (su nombre)_mvc_uno en NetBeans, posteriormente crear 4 Paquetes: controller, model, mvc_uno, view.






2.- Dentro del paquete model, crear una nueva clase de nombre modelo.java, en esta clase se darán lo alta los datos globales de la aplicación, en este caso únicamente se tendrá un valor privado de tipo entero de nombre “valor” con un valor inicial de 10, además se agregan los métodos get y set para modificar y regresar el valor de esta variable. Además se agregan los métodos incremento y decremento para realizar estas acciones sobre la variable miembro.

package model;

/**
 * @author Salvador Hernández Mendoza
 */
public class modelo {
    private int valor=10;//Variable miembro

    public int getValor() {
        return valor;//Regresa el valor de la variable "valor"
    }

    public void setValor(int valor) {
        this.valor = valor;//Modifica el valor de la variable "valor"
    }
   
    public void incremento(){
        this.valor=this.valor+1;//Incrementa y regresa el valor
    }
   
    public void decremento(){
        this.valor=this.valor-1;//Decrementa y regresa el valor
    }
}





3.- Dentro del paquete view se agrega un JFrame de nombre vista.java, en esta clase se hará el diseño de la interfaz grafica de la aplicación, pero no se insertara ningún código de comportamiento. En este caso se agregan 3 componentes un JLabel(jl_valor) que mostrara el valor de la variable miembro “valor”, y dos JButton (jb_incremento y jb_decremento) que harán referencia a los métodos declarados anteriormente.




4.- Para poder realizar la conexión entre los componentes visuales y el código es necesario hacer la JLabel y los JButton públicos, esto se realiza dando clic con el botón derecho sobre los componentes, y posteriormente hacer clic en properties.


5.- Una vez en la ventana de propiedades hacer clic en la pestaña Code, y en la opción de Variable Modifiers declararla como public. Esta acción permitirá hacer modificable el código de los componentes visuales.





6.- Dentro del paquete controller, se crea una nueva clase llamada controlador.java, en esta clase se realizara la “vinculación” entre el modelo y la vista, y se crearan los métodos que estarán escuchando los eventos de los botones creados en la vista.


package controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import model.modelo;
import view.vista;

/**
 *
 * @author Salvador Hernández Mendoza
 */
public class controlador implements ActionListener {

    private final vista objVista;
    private final modelo objModelo;

    public controlador(vista objVista, modelo objModelo) {
        this.objVista = objVista;
        this.objModelo = objModelo;

        this.objVista.jb_incremento.addActionListener(this);
        this.objVista.jb_decremento.addActionListener(this);

    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == this.objVista.jb_incremento) {
            metodoIncremento();
        } else if (e.getSource() == this.objVista.jb_decremento) {
            metodoDecremento();
        }
    }

    public void iniciar_vista() {
        objVista.setTitle("MVC UNO");
        objVista.setLocationRelativeTo(null);
        objVista.jl_valor.setText("" + objModelo.getValor());
    }

    private void metodoIncremento() {
        objModelo.incremento();
        objVista.jl_valor.setText("" + objModelo.getValor());
    }

    private void metodoDecremento() {
        objModelo.decremento();
        objVista.jl_valor.setText("" + objModelo.getValor());
    }
}



7.- Por último se crea la clase Main.java dentro del paquete mvc_uno, es en esta clase donde se realiza la vinculación entre el modelo, la vista y el controlador, para que al ejecutar esta clase se muestre la aplicación. 




package mvc_uno;

import controller.controlador;
import model.modelo;
import view.vista;

public class Main {
    public static void main(String[] args) {
        modelo objModelo = new modelo();//se crea un objeto de tipo modelo
        vista objVista = new vista(); //se crea un objeto de tipo vista
        //se crea un objeto de tipo controlador teniendo como parametros los
        //objetos vista y modelo creados previamente
        controlador controlador = new controlador( objVista , objModelo );
        controlador.iniciar_vista();//inicializa la interfaz grafica
        objVista.setVisible(true);//hace visible la interfaz grafica
    }
}




8.- Al ejecutar la clase Main, se hace visible la interfaz gráfica y al hacer clic en los botones, se realiza el incremento o decremento y se muestra el resultado en el label jl_valor.


Comentarios

Entradas más populares de este blog

Creación de Librerías en Java

Creación de Librerías en Java   Las librerías son un conjunto de clases con funciones especificas que ayudan a desarrollar aplicaciones más complejas de una forma sencilla, por ejemplo si se requiere realizar cálculos matemáticos y emplear el funciones como el Seno o Coseno, simplemente se importa la librería Math y se utilizan estos métodos, en lugar de desarrollarlos. Java cuenta con una extensa lista de librerías disponibles dentro del JDK o desarrolladas por terceros, pero también existe la posibilidad de desarrollar librerías propias para reutilizar de forma más eficiente el código, por ejemplo si se trabaja de forma cotidiana con conexión a base de datos, se pueden desarrollar métodos genéricos que realicen la conexión, que validen las consultas, etc. de forma que su uso reduzca el tiempo de desarrollo e incremente la productividad. Para este tutorial se van a crear dos proyectos en NetBeans, uno sera la librería y el otro proyecto hará uso de esta.

Elegir la clase a ejecutar en NetBeans, MVC

Elegir la clase a ejecutar en NetBeans Para que java pueda ejecutar una aplicación esta debe tener un método conocido como punto de entrada, este método tiene la sintaxis: void static void main(String [] sax){ //código } En ocasiones en una aplicación tiene varios puntos de entrada, que pueden servir para probar diferentes partes de la aplicación sin tener que recorrer o pasar por varias clases, para esto se puede seleccionar directamente en las propiedades del proyecto que clase será la principal.

Librerías JOptionPane para generar ventanas de entrada y salida de datos

Para poder introducir datos leídos desde el teclado existen varias formas, una de ellas hace uso de la librería javax.swing.JOptionPane que entre otras opciones permite mostrar ventanas para introducir datos, y ventanas para mostrar valores. Con el uso de esta librería se crean pequeñas interfaces definidas por el sistema, pero ya se hace uso de las librerías graficas swing, que se verán más adelante.