Ejemplo Modelo Vista Controlador

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 52

CoDejaVu: Ejemplo Modelo Vista Controlador

Inicio Acerca De... ¿Que es CoDejaVu? Indice de Contenido VideoTutoriales Java SE y Otros VideoTutoriales Android VideoTutoriales Java Web

lunes, 17 de junio de 2013 Buscar este blog

Ejemplo Modelo Vista Controlador


En la entrada sobre patrones de Diseño se habla sobre Buscar

el patrón MVC, en esta oportunidad vamos explicar un ejemplo


practico donde se aplica este modelo mostrando la forma de
independizar los componentes de nuestro sistema, además lo 
combinaremos con los patrones DAO y VO para facilitar el Contacto
manejo de la información.
Cristian Henao.

Por cuestiones de tamaño no vamos a hacer la aplicación paso a paso, pero si se Ver todo mi perfil

explicará la lógica de la misma, al final se presenta una opción de descarga


del código fuente donde veremos la aplicación en funcionamiento. Suscribete!!! Quieres seguir
este blog? Participa en el sitio
El problema.

Se solicita desarrollar un sistema de administración de usuarios con un CRUD


(Create, Read, Update, Delete) básico  nos advierten que la aplicación es un
prototipo inicial el cual esta propenso a cambios, pues aún no se tienen definidas
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

las ventanas con las que se va a trabajar ni la información requerida, por le


momento se trabajará con una BD MySql, pero posiblemente se tenga que
migrar a otro sistema gestor....

La solución.

Historial CoDejaVu
Se aplica el MVC permitiendo independizar la lógica y la parte visual del sistema
usando para eso un controlador que administra los procesos sirviendo como ► 
2020
(1)
puente entre estos. ► 
2019
(3)
► 
2018
(11)
para la BD se usa MySql, reutilizando la BD creada en el ejemplo de conexión
con Java, el Scritp es el siguiente. ► 
2017
(15)
► 
2016
(4)
1 CREATE DATABASE /*!32312 IF NOT EXISTS*/`codejavu` /*!40100 DEFAULT
► 
2015
(4)
2 CHARACTER SET latin1 */;
3   ► 
2014
(17)
4 USE `codejavu`;
▼ 
2013
(59)
5  
6 /*Table structure for table `persona` */ ► 
diciembre
(2)
7   ► 
noviembre
(2)
8 DROP TABLE IF EXISTS `persona`;
9   ► 
octubre
(4)
1 CREATE TABLE `persona` ( ► 
septiembre
(4)
0   `id` int(10) NOT NULL,
1   `nombre` varchar(30) default NULL, ► 
agosto
(4)
1   `edad` int(3) default NULL, ► 
julio
(3)
1   `profesion` varchar(30) default NULL,
2   `telefono` decimal(10,0) default NULL, ▼ 
junio
(8)
1   PRIMARY KEY  (`id`) Ejemplo Patron Delegate
3 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1   Ejemplo Patrón Observer
4 /*Data for the table `persona` */ Ejemplo Modelo Vista
1 Controlador
5
1 Que son los Patrones de
6 Diseño ?
1 Premio Liebster Award
7
1 Ejemplo Conectando Java
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

8 con MySql
Manejo de Excepciones en
De esta forma se crea la Base de Datos a la que se va a apuntar, la cual contiene Java
solo una tabla Persona con la que se realizan todas las operaciones CRUD. Ejemplo de Polimorfismo En
Java
La agrupación de clases de nuestro sistema es:
► 
mayo
(18)
► 
abril
(14)

Categorias

Abstract
(2)
Abstract Factory
(2)
Adapter
(2)
Apache Ant
(3)
continuous integration
(6)
control de versiones
(3)
Eclipse
(15)
Excepciones
(1)
google code
(2)
Herencia
(4)
Integración

continua
(6)
Interface
(3)
java
(26)
Java Swing
(27)
jboss
(5)
jboss seam
(3)
Jboss Tools
(2)
JDialog
(3)
JDK
Como vemos tenemos la parte visual compuesta por las clases
VentanaPrincipal, VentanaRegistro, VentanaBuscar, la lógica de negocio se (4)
Jenkins
(7)
JSF
(16)
MVC
(3)
MySql
(2)
Observer
(2)
establece en el modelo el cual se compone por la clase Logica y Conexión y
Patrones de Diseño
(8)
aplicamos los patrones DAO y VO por medio de las clases PersonaDao y
PerGem space
(1)
Plugin
(4)
PersonaVo y por ultimo el controlador se define en la clase Coordinador,
Polimorfismo
(3)
Programación
encargada de establecer todas las relaciones del sistema, la clase Principal
Orientada a Objetos
(8)
prepara las instancias iniciales del sistema y posteriormente lo ejecuta.
Properties
(1)
repositorio
(3)
seam
gen
(1)
Singleton
(2)
svn
(5)
Veamos como funciona el Patrón: 

Lo Mas Visto
El Modelo.
Ejemplo Modelo
Como se mencionó, en el modelo tenemos la lógica de negocio, serán todas las Vista Controlador
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

clases vinculadas con el CRUD a nivel interno, que en ultimas es en lo que gira En la entrada sobre
nuestro sistema. patrones de Diseño
se habla sobre
el patrón  MVC , en esta
Clase Logica. oportunidad vamos explicar
un ejemplo practico donde se
Esta clase permite realizar las operaciones asociadas a apl...
la lógica de negocio como tal, desde ella realizamos las
Conceptos Básicos de
validaciones y llamados a las operaciones CRUD del sistema. Programación
Orientada a Objetos
En caso de que se requieran procesos adicionales asociados a En esta entrada
la lógica de negocio, aquí será donde se creen los métodos para veremos algunos conceptos
de la programación orientada
dichos procesos, por ejemplo el método validarRegistro a Objetos
determina si los datos son correctos y permite registrar la (POO)..................................
persona en el Dao. ............. Muc...

Ejemplo
JFileChooser
1 public void validarRegistro(PersonaVo miPersona) {
2 PersonaDao miPersonaDao; Nuevamente
3 /*Valida que solo se ingresen id de 3 digitos*/ regreso con un
4    if (miPersona.getIdPersona() > 99) { ejemplo práctico
5  miPersonaDao = new PersonaDao(); sobre uno de los componentes
6  miPersonaDao.registrarPersona(miPersona);      Java Swing .............. el día
7  }else { de hoy les traigo el
8    JOptionPane.showMessageDialog(null,"El documento de la persona JFileChooser ...
9 debe" +
1  " ser mas de 3 Ejemplo
0 digitos","Advertencia",JOptionPane.WARNING_MESSAGE);   JOptionPane
1               }  Nuevamente
1  } después de otra
semana muy
pesada sin poder darle vuelta
al Blog, regreso para finalizar
la secuencia de entradas
Clase Conexión. sobre Java Swi...

En esta clase tenemos la cadena de conexión con la que trabajará Ejemplo de

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

nuestra aplicación, en ella se define la base de datos, el usuario, Polimorfismo En


Java
password y driver de conexión, si por ejemplo en un futuro se nos
En esta entrada
pide conectarnos a una base de datos diferente o establecer un vamos a trabajar
sistema gestor distinto (pero con la misma estructura de tablas y un ejemplo rápido y simple
campos), tan solo modificaremos esta clase y dicho cambio sera aplicando el concepto de
Polimorfismo , en el post
transparente para el resto del sistema. anterior vimos algunas
(Tener en cuenta que los datos de login y password corresponden consi...
a los que yo dejé por defecto al instalar MySql, es decir login root y sin
contraseña) Como crear
Interfaces Graficas
en Eclipse con
1 public Conexion() {
WindowBuilder
2       try{
3          //obtenemos el driver de para mysql Después de mucho
4          Class.forName("com.mysql.jdbc.Driver"); meditarlo, voy a explicarles
5          //obtenemos la conexión cómo crear aplicaciones con
6          conn = DriverManager.getConnection(url,login,password); interfaz gráfica desde Eclipse ,
7   similar a como se hace en ...
8          if (conn!=null){
9             System.out.println("Conección a base de datos "+bd+" ¿Eclipse o
1 OK"); Netbeans?
0          } Hola, en esta
1       } oportunidad quiero
1       catch(SQLException e){ hacer un break en
1          System.out.println(e); las entradas sobre Java
2       }catch(ClassNotFoundException e){ Swing.......................... ¿Y
1          System.out.println(e); Porqué?........... porque a...
3       }catch(Exception e){
1          System.out.println(e); Ejemplo Eventos
4       } del Teclado en Java
1    } En la entrada
5 anterior tocamos el
1 tema de los
6 eventos del Mouse, en esta
1 ocasión continuaremos
7 trabajando con Eventos pero
1 ahora del Tecla...
8
1 Sobreescritura y
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

9 SobreCarga de
Métodos en Java (
Overriding y
Overloading )
Clase PersonaVo. Después de un tiempo sin
publicar debido a problemas
técnicos (Casi muere mi PC)
Al utilizar este tipo de clases, aplicamos el patrón Value regreso con 2 conceptos de
Object o VO (Anteriormente conocidas como DTO Data POO que me han pedido que
Transfer Object) en el que representamos las entidades abor...
(Tablas) de la base de datos, la tabla persona tiene los
Comparando
campos id, nombre, edad, profesión  teléfono  entonces Fechas En Java
nuestra clase Vo tendrá estos mismos atributos y de esta En esta entrada
manera podremos transportar un objeto persona con todos veremos uno de los
estos valores por medio de los métodos set y get de cada procesos obligados
cuando se trabaja en este
atributo. campo del desarrollo de
Software, sin importar el
Este patrón nos facilita enormemente el transporte de la lenguaje q...
información, evitando que se envíen gran cantidad
de parámetros a un método cuando queremos hacer un
CoDejaVu!!!
registro o actualización, también en caso de que se modifique la tabla de la BD,
nuestra clase deberá ser modificada así como los métodos que obtienen la CoDejaVu no es mas que la idea de
información, mas no los métodos que la transportan. aportar un poco de conocimiento y
colaboración a los que lo puedan
necesitar, y retribuir un poco de lo que he
1 /** podido aprender... no espero que muchos
2  * @return the idPersona sigan mis Entradas, o dejen comentarios,
3  */ solo espero que esto pueda ser de utilidad
4 public Integer getIdPersona() {
para alguien... y si le sirve a alguien mas
5     return idPersona;
6 } porque no compartirlo?
7 /**
8  * @param idPersona the idPersona to set
9  */
1 public void setIdPersona(Integer idPersona) { Enlaces
0     this.idPersona = idPersona;
1 } Paperblog

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

1 Hace 5 semanas
1
2

Clase PersonaDao.

Cuando utilizamos estas clases, aplicamos el patrón Data


Access Object o DAO, básicamente este patrón consiste en
centralizar los procesos de acceso a la base de datos evitando
inconsistencias y posibles problemáticas cuando esto se realiza a
lo largo de la aplicación.
Con este patrón independizamos la lógica de negocio de
la lógica de acceso a datos obteniendo mayor organización y flexibilidad en el
sistema.

1 public void eliminarPersona(String codigo)


2 {
3 Conexion conex= new Conexion();
4 try {
5  Statement estatuto = conex.getConnection().createStatement();
6  estatuto.executeUpdate("DELETE FROM persona WHERE
7 id='"+codigo+"'");
8         JOptionPane.showMessageDialog(null, " Se ha Eliminado" +
9  " Correctamente","Información",JOptionPane.INFORMATION_MESSAGE);
1  estatuto.close();
0  conex.desconectar();
1    
1  } catch (SQLException e) {
1         System.out.println(e.getMessage());
2  JOptionPane.showMessageDialog(null, "No se Elimino");
1      }
3 }
1
4
1
5
1
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
6

La Vista.

Aquí se define la parte visual del sistema, en la vista estableceremos todas las
ventanas o interfaces gráficas de usuario, mediante las cuales representamos
todo el modelo permitiendo la interacción entre la aplicación y el cliente.

Clase VentanaPrincipal.

Esta clase representa la ventana inicial de la aplicación, posee un área de texto


con una pequeña descripción y 2 botones que darán inicio a los eventos
principales del sistema.

se comunica con el modelo mediante la clase coordinador y desde esta se cargan


las otras ventanas de la aplicación.

Clase VentanaRegistro.

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Permite el ingreso de información a la BD, en ella se evidencian todos los


campos de la tabla Persona y presenta un medio gráfico para las clases
PersonaVo y PersonaDao, al ejecutar el evento de registro se establece
comunicación entre el coordinador y la clase Lógica donde se encuentran todas
las validaciones y casos para el ingreso de información.

Clase VentanaBuscar.

Esta clase permite realizar las operaciones de Consulta, Actualización y


eliminación de la tabla Persona, igual que la anterior representa la parte visual
del modelo y se ejecutan los eventos para la lógica de los procesos anteriores, la
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
forma de obtener los datos y como se le envían parámetros de consulta a la BD.

El Controlador.

Esta parte del patrón es la que define la lógica de administración del sistema,


establece la conexión entre la vista y el modelo.

Clase Principal.

Esta clase contiene el método main que ejecuta la aplicación,


el método hace un llamado al método iniciar el cual crea las
instancias de las clases ventanas y la clase Logica 
estableciendo las relaciones con la clase Coordinador.

A cada instancia de las clases se les envía una instancia de la


clase Coordinador, y a la instancia de Coordinador se
le envía cada instancia de las clases, esto por medio de
los métodos set y get estableciendo las relaciones necesarias y por ultimo se usa
la instancia de la clase VentanaPrincipal para cargarla en pantalla.

1 private void iniciar() {


2 /**Se instancian las clases*/
3  miVentanaPrincipal=new VentanaPrincipal();
4  miVentanaRegistro=new VentanaRegistro();
5  miVentanaBuscar= new VentanaBuscar();
6  miLogica=new Logica();
7  miCoordinador= new Coordinador();
8  
9 /**Se establecen las relaciones entre clases*/
1  miVentanaPrincipal.setCoordinador(miCoordinador);
0  miVentanaRegistro.setCoordinador(miCoordinador);
1  miVentanaBuscar.setCoordinador(miCoordinador);
1  miLogica.setCoordinador(miCoordinador);
1   

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
2 /**Se establecen relaciones con la clase coordinador*/
1  miCoordinador.setMiVentanaPrincipal(miVentanaPrincipal);
3  miCoordinador.setMiVentanaRegistro(miVentanaRegistro);
1  miCoordinador.setMiVentanaBuscar(miVentanaBuscar);
4  miCoordinador.setMiLogica(miLogica);
1     
5  miVentanaPrincipal.setVisible(true);
1 }
6
1
7
1
8
1
9
2
0
2
1
2
2

Clase Coordinador.

Esta clase contiene toda la lógica de relaciones en el


aplicativo, es el puente entre el modelo y las vistas.

Puede contener instancias locales tanto de clases de la vista


como de clases del modelo, estas instancias tienen
sus respectivos métodos set y get permitiendo el flujo de
llamados del sistema.

Cuando se desea registrar una persona desde la clase


VentanaRegistro se hace un llamado
al método registrarPersona() de la clase Coordinador,
posteriormente esta clase llama
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

al método ValidarRegistro() de la clase Logica y esta a su


vez realiza las validaciones correspondientes para
determinar si se llama o no al método RegistrarPersona() de la clase
PersonaDao.

1 public Logica getMiLogica() {


2   return miLogica;
3 }
4  
5 public void setMiLogica(Logica miLogica) {
6   this.miLogica = miLogica;
7 }
8    
9 public void mostrarVentanaRegistro() {
1   miVentanaRegistro.setVisible(true);
0 }
1  
1 public void mostrarVentanaConsulta() {
1   miVentanaBuscar.setVisible(true);
2 }
1  
3 public void registrarPersona(PersonaVo miPersona) {
1   miLogica.validarRegistro(miPersona);
4 }

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
1
5
1
6
1
7
1
8
1
9

La Aplicación.
El Sistema esta desarrollado como un proyecto
Eclipse, En la siguiente imagen vemos que se
crearon tres paquetes principales y de esta forma se
tiene independiente la parte de la vista, el modelo y
el controlador, el paquete modelo posee los
paquetes conexión  dao y vo ya que aunque
pertenecen al modelo y la lógica de negocio debe
establecerse también su independencia con
respecto a las operaciones, es decir, las clases Vo
por ejemplo no poseen métodos de operaciones
asociadas a la lógica de negocio, tan solo deben
representar las tablas de la BD, entonces en el
paquete vo se agruparán todas las clases
equivalente a entidades.

El proyecto tiene los directorios db y conector, estos


directorios se crearon solamente para agregar el script de creación de la BD y el
mysql connector, este ultimo debe ser agregado al build path para que el
sistema pueda funcionar (sobre el proyecto, clic derecho/configure Build
path... ).

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Conclusiones.
Como vimos tenemos un proyecto funcional que realiza las
operaciones básicas del CRUD, y donde todas sus partes se encuentran
separadas por  funcionalidades, separando la parte visual de la lógica de negocio
y estableciendo relaciones entre ellas............ en si se desarrolló como ejemplo
practico, existen validaciones muy básicas y procesos simples pero pensado en
modo de ejemplo sin mayor complejidad, también se utilizan algunos conceptos
vistos en entradas anteriores como es el caso del manejo de excepciones,
patrones entre otros...

Descarga.

En el link de descarga se encuentra el archivo .rar con la aplicación, solo


es cuestión de descomprimir y abrir con Eclipse pero si usas NetBeans te
interesará esta entrada con un vídeo paso a paso de como abrirlo en
el............ (recuerden que es gratis.....nada cuesta opinar, compartir o
agradecer :))

Y Listo, como se mencionó es un ejemplo simple, sin mucha lógica para aplicar,
pero la intención es dar a conocer un poquito mas claro como se puede aplicar el
MVC, espero que este ejemplo sea de utilidad..... ;)  

También te podría Interesar. 


Que son los Patrones de Diseño ?
Ejemplo Conectando Java con MySql
Manejo de Excepciones en Java
Conceptos Básicos de Programación Orientada a Objetos.
¿ String Vrs StringBuffer Vrs StringBuilder ?
Comparando Fechas En Java
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Integración Continua, Primeros Pasos Con Jenkins


Leer Archivo Properties en Java
Tutorial Proyecto Web Con Eclipse

¿Hay algo que quieras anexar o comentar sobre esta entrada?  no dudes
en hacerlo.....y si te gustó, te invito a compartir y Suscribirte ingresando
al botón "Participar en este sitio" para darte cuenta de mas entradas
como esta ;)

Publicado por
Cristian Henao.

Etiquetas:
DAO,
MVC,
Patrones de Diseño,
VO

147 comentarios:

Eborio Linárez 18 de junio de 2013, 19:20


Muy bueno tu artículo, voy a compartirlo
Responder

Respuestas

Cristian Henao. 20 de junio de 2013, 18:45


Me alegra que te gustara (Y)

Responder

Don Manuel 14 de julio de 2013, 11:30


Muy bien explicados estos temas, muchas gracias por compartir material de tan
buena calidad.
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Responder

Respuestas

Cristian Henao. 15 de julio de 2013, 11:24


Es con mucho gusto, me alegra que te sirvan ;)

Responder

Anónimo 27 de julio de 2013, 10:02


Hola me sirvió mucho, excelente!
Responder

Respuestas

Cristian Henao. 29 de julio de 2013, 18:04


Me alegra, gracias por hacermelo saber ;)

Responder

jsbsan 1 de agosto de 2013, 8:23


Muchas gracias por el ejemplo, me ha aclarado mucho el tema.
Tengo una pregunta: si tuviésemos varias tablas en la base de datos (por ejemplo:
empresas, facturas, albaranes,etc) ¿tendríamos que hacer una clase controlador para
cada tabla, o solo se implementa todo en una única clase controlador?
¿y con la clase lógica, habría varias también (logicaEmpresa, LogicaPersonas,
LogicaFacturas,...(incluso puede ver condiciones que tengan relacionadas varias
tablas (LogicaEmpresaProveedor)), o se mete todo en una única clase lógica?
¿como sería la forma según el modelo-vista-controlador? ¿depende de cada caso?
Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Cristian Henao. 1 de agosto de 2013, 9:14


Hola Julio, te respondo:
Si tienes varias tablas, lo ideal es utilizar los patrones VO y DAO donde cada tabla
representa un VO (Con los Atributos correspondientes a los campos) y un DAO
(Correspondiente a las operaciones que se pueden hacer sobre la tabla por lo regular
un CRUD) por ejemplo EmpresaVo, EmpresaDao, FacturaVo, FacturaDao... el
Controlador no giraría en torno a las tablas sino mas como a la organización del
sistema, por lo tanto seria independiente y podrías hacer uno solo, aunque
dependiendo del tamaño de la aplicación de puedes apoyar en los controladores que
desees, por ejemplo yo en un proyecto utilicé un controlador principal para que
manejara todas las clases de la lógica y otro controlador que manejaba todos los
llamados a interfaces graficas....

Con respecto a la lógica, funciona de forma similar, la lógica solo establece las reglas
de negocio y como el sistema las va a atacar, tu puedes hacer cuantas clases de
lógica sean necesarias, pero ten en cuenta que cuando son procesos relacionados con
la BD lo ideal es usar los DAO, en la lógica se establecería los llamados a los métodos
que vas a utilizar y en los DAO la implementación.

En ultimas el patrón es muy flexible, pero lo importante es saber aplicarlo, para que
la lógica no se confunda con el controlador y el modelo....

Un poquito Larga pero espero que te sirva ;)


Responder

jsbsan 1 de agosto de 2013, 10:59


Ok, muchas gracias por la explicación, ahora lo entiendo un poco mejor.
Gracias!!!
Responder

Respuestas

Cristian Henao. 7 de agosto de 2013, 8:48

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Con Gusto ;)

Responder

jsbsan 6 de agosto de 2013, 10:01


En mi blog, he hecho un ejemplo igual que en el tuyo pero realizado en el lenguaje de
programación Gambas3 (programación visual en gnu/linux), donde he intentado
aplicar todo lo que nos has explicado sobre el MVC:
http://jsbsan.blogspot.com.es/2013/08/modelo-vista-controlador-mvc-ejemplos.html
Gracias!!
Responder

Respuestas

Cristian Henao. 7 de agosto de 2013, 8:49


Este comentario ha sido eliminado por el autor.

Cristian Henao. 7 de agosto de 2013, 8:50


Julio No me esperaba esto la verdad, muchas gracias, es gratificante saber
que mi ejemplo te pudo servir ;)

Responder

Unknown 22 de agosto de 2013, 9:30


Ante todo, GRACIAS x el ejemplo, me ha quitado muchas dudas.

Sin embargo al ser estudiante, se me han creado otras tantas referentes al diagrama
de clases y al proyecto de ejemplo (que he estudiado), si tienes unas lineas para
contestar?, te lo agradecería.

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

X ejemplo tengo duda en la "VentaRegistro", creas directamente la "PersonaVO", ¿no


sería necesario pasar los datos (no objeto) a "Coordinador" y de ahí a "Logica" para
que sea esta última la que instancie "PersonaVO" dado que es la que en el diagrama
de clases tiene la relación?.

Otra duda, x ejemplo en el diagrama también dibujas que es "Logica" la que tiene
relación con "Conexion", sin embargo veo que es en "PersonaDAO" donde utilizas las
conexiones ... ¿?

Quiero aprenderlo bien, ¿si me puedes ayudar?, gracias.


Responder

Respuestas

Cristian Henao. 22 de agosto de 2013, 12:54


Hola Valentin, antes de responderte te agradezco por el interés que
demuestras y porque veo que hiciste un muy buen análisis al ejercicio.

Ahora si, te respondo en geral.... la verdad es que para estos ejercicios no


me enfoqué mucho en los diagramas de clases, en otra entrada recuerdo
haber puesto un comentario advirtiendo que el modelo era mas como para
representar la idea, mas no era el diagrama de clases como tal, por ende no
me fijé mucho en las relaciones ni los componentes ajustándome al estándar
UML (Como debería de ser), simplemente quise generalizar mostrando de
forma gráfica las agrupaciones, pero me hiciste caer en cuenta que pude
generar un poquito de ambigüedad al no aclarar eso.

Basado en lo anterior y dejando a un lado el diagrama de clases, con


respecto a PersonaVO, si ves la entrada sobre Patrones de Diseño
(http://codejavu.blogspot.com/2013/06/que-son-los-patrones-de-
diseno.html) el VO nos sirve bastante para el transporte de Datos, si
pasáramos los datos directamente a la clase Coordinador, tendríamos que
enviar n cantidad de parametros y tener uno o varios métodos que reciben la
misma cantidad de datos, si nos toca hacer un control de cambios anexando
otros datos, la modificación se tendría que hacer no solo en cada envió sino

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
en cada método que recibe, por tal razón enviando todo en un objeto hace
mas fácil mantener nuestro código....

Con respecto a PersonaDAO y la relación con Conexion, tienes toda la razón,


no se porque lo asocie ahí, que pena por eso y en cuanto pueda actualizo la
imagen ;).

Responder

Anónimo 24 de septiembre de 2013, 22:51


Amigo muchas gracias, todo explicado perfectamente.
Responder

Respuestas

Cristian Henao. 15 de octubre de 2013, 7:47


Muchas gracias a ti por tu comentario, me alegra que te gustara ;)

Responder

Anónimo 10 de octubre de 2013, 6:52


Espectacular!!
Responder

Respuestas

Cristian Henao. 15 de octubre de 2013, 7:48


Muchas Gracias ;)

Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Anónimo 21 de octubre de 2013, 18:30


Excelente , muy bien explicado ! gracias
Responder

Respuestas

Cristian Henao. 23 de octubre de 2013, 6:45


Con Gusto ;)

Responder

Anónimo 29 de octubre de 2013, 17:13


de mucha ayuda!! gracias.
Responder

Respuestas

Cristian Henao. 4 de noviembre de 2013, 14:07


Con Mucho Gusto, gracias por el comentario ;)

Responder

Unknown 1 de noviembre de 2013, 15:45


De nuevo te felicito, creo que eres el primero en explicar con un ejemplo como
funciona el patrón mvc con bases de datos.
Sigue así :)
Responder

Respuestas

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
Cristian Henao. 4 de noviembre de 2013, 14:08
Pepe muchas gracias por el comentario, esa es la idea, que los post puedan
servir, y como dicen aqui, al que le gusta repite dos veces ;)

Responder

Anónimo 6 de noviembre de 2013, 4:29


JOptionPane.showMessageDialog(null,"El documento de la persona debe" +
" ser mas de 3 digitos","Advertencia",JOptionPane.WARNING_MESSAGE);

Eso que tu pones en el modelo no seria correcto no?, porque en el modelo no puedes
mostrar nada porque no sabes con que vista se va a mostrar, si es linea de
comandos, ventanas, movil u otras ventanas.

Al igual que :

if (conn!=null){
System.out.println("Conección a base de datos "+bd+" OK");
}

Eso estaría mal no? El modelo tiene que lanzar una excepción que la controlaría el
controlador y notificaría a la vista que tiene que mostrar una ventana o un
System.out.println.

Por que si lo quieres hacer independiente lo primero que habría que hacer no seria
depender de una plataforma o vista, en este ejemplo el modelo depende de que tiene
que ser en ventanas por el Joption...
Responder

Respuestas

Cristian Henao. 10 de noviembre de 2013, 9:30


Hola, gracias por tu aporte, y tienes razon, lo ideal es como tu mencionas,

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
sin animos de excusarme esos detalles se me pasaron talvez por los afanes o
por ser detalles pequeños, me alegra que comentaras porque eso me hace
mejorar cada vez mas ;) Un saludo y Gracias por comentar.

Unknown 10 de diciembre de 2015, 21:09


Hola,
Si es un error utilizar el JOptionPane.showMessageDialog dentro de la Clase
Logica, entonces como va implementado..... si en la validacion es nulo como
hago para que aparezca el error con un JOptionPane.showMessageDialog ??
Espero me ayuden con el mismo ejemplo pero corregido .. Gracias de
antemano..

Responder

Daniel 6 de noviembre de 2013, 17:01


Gracias. :D
Responder

Respuestas

Cristian Henao. 10 de noviembre de 2013, 9:30


Con Gusto Daniel ;)

Responder

Anónimo 16 de noviembre de 2013, 5:04


Buena explicación, pero me gustaría si conoces algun manual con ejemplos y esas
cosas sobre la creacion de interfaz en java con la Clase Swing. Para la creacion de
botones, campos de texto y eso. Si conocieras uno bueno y me lo dijeras me
ayudaría mucho. Un coordial saludo.

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
Responder

Respuestas

Cristian Henao. 18 de noviembre de 2013, 18:18


Hola, gracias por comentar, te cuento que llevo una secuencia de java Swing
que te puede servir, te comparto 2 de los ejemplos:
Componentes Simples:
http://codejavu.blogspot.com/2013/09/componentes-atomicos-java-
swing.html

Componentes de Texto:
http://codejavu.blogspot.com/2013/09/componentes-de-texto-java-
swing.html

Responder

Anónimo 18 de noviembre de 2013, 7:31


Gracias por tu ejemplo, es de mucha utilidad, quisiera saber si tienes algun ejemplo
usando siempre el patron MVC pero con conexion a Microsoft Sql Server, De
antemano muchas gracias por tu respuesta.
Responder

Respuestas

Cristian Henao. 18 de noviembre de 2013, 18:21


Hola, solo tengo este ejemplo del MVC con MySql, sin embargo la conexion
es basicamente de la misma forma, solo cambiaria el conector, lamento no
poderte colaborar... un saludo ;)

Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
Caballero 18 de noviembre de 2013, 7:33
Saludos desde Honduras y gracias por tus aportes!
Responder

Respuestas

Cristian Henao. 18 de noviembre de 2013, 18:21


Gracias Caballero, te regreso el Saludo desde Colombia..... Gracias a ti por
comentar ;)

Responder

lorazepamfreak 24 de noviembre de 2013, 1:32


Increíble el post, muy completo y bien explicado :) Aquí dejo un ejemplo orientado a
web en vez de a aplicaciones de escritorio, por si a alguien le interesa...
http://trendfinder.comyr.com/wordpress/?p=713 Saludos!
Responder

Respuestas

Cristian Henao. 7 de enero de 2014, 7:02


Flautista, Gracias por tu aporte un saludo

Responder

Anónimo 27 de diciembre de 2013, 18:34


Hola amigo, buen trabajo.
Me preguntaba si tienes algun ejemplo mas completo.
Mi correo es: [email protected]
Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Respuestas

Cristian Henao. 7 de enero de 2014, 7:02


Tengo q buscar en mis archivos, cualquier cosa te contaré, un saludo ;)

Responder

Anónimo 30 de diciembre de 2013, 11:40


Hola, muy interesante tu ejemplo y muchas gracias por compartir tu conocimiento.

Tengo una pregunta y quisiera saber si me puedes ayudar, Necesito crear un


templeate para aplicaciones de escritorio. Es dicir, Crear un solo frame que tenga
varios componentes Jtbutton, Jlabel, JtextField, etc, etc. Y de esos componentes
hacer uso en los frame que se van a heredar del frame principal.

Quedo atento a tus respuesta.

Gracias
Responder

Respuestas

Cristian Henao. 7 de enero de 2014, 7:05


Hola, podrias trabajar con Paneles para simular el proceso del Template,
ocultando o mostrando lo que necesites usando para eso diferentes clases,
dentro de poco espero subir un ejemplo similar al que pides, talvez te
sirva...un saludo ;)

Anónimo 20 de enero de 2014, 14:34


Cristian, Muchas gracias por tu pronta respuesta, que excelente labor que
haces........ Quedo atento a tus comentarios y soluciones.

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Anónimo 24 de junio de 2014, 9:36


Amigo, estoy esperando el ejemplo que quedastes de subir jejejjejee estoy
super atento.

Responder

Anónimo 15 de enero de 2014, 10:46


Gracias por el articulo muy bueno
Responder

Respuestas

Cristian Henao. 4 de febrero de 2014, 18:30


Con Gusto ;)

Responder

Unknown 31 de enero de 2014, 21:27


Este comentario ha sido eliminado por el autor.
Responder

Anónimo 31 de enero de 2014, 21:31


Excelente este articulo, me despejo de muchas dudas, me podría ayudar con un
ejemplo mas completo para continuar analizando MVC en profundidad.
Correo: [email protected]
Gracias.
Responder

Respuestas
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Cristian Henao. 4 de febrero de 2014, 18:31


Hola Robinson, voy a buscar haber si encuentro uno que tenia, si algo te
comento

Responder

Diego Camacho 4 de febrero de 2014, 17:25


Gracias, excelente ejemplo esta muy didáctico.

:-)
Responder

Respuestas

Cristian Henao. 4 de febrero de 2014, 18:31


Con Gusto!!!

Responder

jajhonrod 7 de febrero de 2014, 8:34


Muy ilustrativo, muchas gracias
Responder

Respuestas

Cristian Henao. 2 de abril de 2014, 6:30


Con gusto, me alegra que te sirviera ;)

Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Anónimo 16 de febrero de 2014, 15:41


Hola, mirando el codigo veo que creas una personaVO en las ventanas.
No estas agregando logica en la vista ????
Responder

Respuestas

Cristian Henao. 2 de abril de 2014, 6:32


Hola, voy a revisar.... aunque muchas veces los VO los podemos usar solo
para crear el objeto a transportar así que en ese caso no sería tan critico, sin
embargo tienes razón, se podría definir un método para realizar ese proceso
en otra clase.... gracias por comentar ;)

Responder

Anónimo 27 de febrero de 2014, 11:11


Excelente articulo me ayudo mucho a entender un el MVC.
Responder

Respuestas

Cristian Henao. 2 de abril de 2014, 6:33


Hola, me alegra que te sirviera, gracias por comentar ;)

Responder

Anónimo 7 de marzo de 2014, 22:16


Muy bueno...
Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Respuestas

Cristian Henao. 2 de abril de 2014, 6:33


Gracias (Y)

Responder

cesar capa blog 8 de marzo de 2014, 8:22


jeje gracias CHENAO (Y)
Responder

Respuestas

Cristian Henao. 2 de abril de 2014, 6:33


Gracias Cesar ;)

Responder

Anónimo 11 de marzo de 2014, 7:54


Para cuando uno del DAO?, creo que es un patrón bastante importante
Responder

Respuestas

Cristian Henao. 2 de abril de 2014, 6:35


Hola, tienes razón, mira en esta entrada sobre la conexión de Java con Mysql
utilizó el patrón http://kcy.me/126nz

Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Anónimo 6 de abril de 2014, 11:44


Realmente didáctico tu tutorial y excelentes los aportes mejorandolo de los que lo
siguen.
RedFinal
Responder

Respuestas

Cristian Henao. 23 de abril de 2014, 19:39


Gracias por comentar ;)

Responder

Unknown 20 de abril de 2014, 17:04


muy bueno amigo
Responder

Respuestas

Cristian Henao. 23 de abril de 2014, 19:39


Gracias Richard ;)

Responder

Anónimo 23 de abril de 2014, 1:36


Hola, muy buen tutorial. No consigo descargar el código desde la pagina que indicas,
le doy al botón de descargar y no hace nada. ¿Que puede pasar?. Gracias
Responder

Respuestas

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Cristian Henao. 23 de abril de 2014, 19:38


Hola, ya lo subí nuevamente, algo paso en la otra plataforma que no
permitia la descarga pero ya esta listo ;) Gracias por avisarme ;)

Responder

Anónimo 23 de abril de 2014, 14:11


Hola Cristian Henao:

No se puedes descargar el archivo...

Sds...
Responder

Respuestas

Cristian Henao. 23 de abril de 2014, 19:37


Hola, ya lo subí nuevamente, algo paso en la otra plataforma que no
permitia la descarga pero ya esta listo ;)

Responder

Unknown 12 de mayo de 2014, 10:06


Genial Bro muy bueno 10 puntos. Ahora ya entiendo bastante mejor lo de mvc. Ahora
solo me queda practicar lo en una aplicación.
Responder

Respuestas

Cristian Henao. 24 de mayo de 2014, 12:33


Hola, si esa es la idea, me alegra que te sirviera ;)
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Responder

Anónimo 17 de mayo de 2014, 7:00


Excelente tu explicación. Gracias por tu aporte a la comunidad :D
Responder

Respuestas

Cristian Henao. 24 de mayo de 2014, 12:33


Hola, con gusto ;)

Responder

Unknown 23 de mayo de 2014, 10:47


Una pregunta como sacas la vista de puros folders uno dentro de otro (model ->
conexion -> Clase) esa vista como árbol . Porque a mi solo me salen las de paquetes.
y no puedo sacar esa vista T_T. Gracias de Antemano
Responder

Respuestas

Cristian Henao. 24 de mayo de 2014, 12:33


Hola en eclipse desde la opción windows/Show View seleccionas la vista que
quieras, si es navigator o explorador de paquetes y listo ;)

Responder

Anónimo 1 de junio de 2014, 15:34

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
Estimado Cristian,
He leido tu post y la verdad que esta muy bueno.
Hay dos cosas que respetando el patron MVC estan mal.
La primera que en VentaRegistro creas un objeto PersonaVo. Las ventanas no tienen
logica.
La segunda dentro la logica no se comunica con la vista, estaria mal la parte de
"JOptionPane.showMessageDialog"
Saludos!
Responder

Respuestas

Cristian Henao. 11 de agosto de 2014, 14:06


Hola, si tienes razón, en un comentario anterior me comentaron el mismo
error, planeo modificarlo solo que no he tenido el tiempo suficiente para
hacerlo, muchas gracias.

Unknown 10 de diciembre de 2015, 20:56


Este comentario ha sido eliminado por el autor.

Unknown 10 de diciembre de 2015, 21:06


Hola,
Si es un error utilizr el JOptionPane.showMessageDialog dentro de la Clase
Logica, entonces como va implementado..si en la validacion es nulo como
hago para que aparezca el error en un JOptionPane.showMessageDialog ??
Espero me ayuden con el mismo ejemplo pero corregido .. Gracias de
antemano..

Cristian Henao. 15 de diciembre de 2015, 9:40


Hola, puedes hacerlo en un if con una comparacion de si es == null por
ejemplo o si es !=null

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Responder

Unknown 1 de junio de 2014, 22:10


Este comentario ha sido eliminado por el autor.
Responder

namesde 24 de junio de 2014, 10:37


Muy buen post! Es justo lo que andaba buscando.
Responder

Respuestas

Cristian Henao. 11 de agosto de 2014, 14:07


Hola namesde, me alegra que te sirviera, gracias por comentar.

Responder

Anónimo 16 de julio de 2014, 20:14


muy buen articulo
Responder

Respuestas

Cristian Henao. 11 de agosto de 2014, 14:07


Gracias ;)

Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
wkats 10 de agosto de 2014, 21:32
Mira que ando programando en C# y aunque no he tenido clases de programación en
mucho tiempo, me sirvió muchísimo leer esto para poder darme una idea del modelo,
lo cual me llevó a escribir las clases necesarias en un proyecto de pruebas y luego
llevarlas a cosas más grandes sin ningún problema. Muchísimas gracias por el
trabajo, muy bien explicado, así como otros que he leído aquí y que también me
llevaron a solucionar mis dudas aunque fueran lenguajes diferentes :D
Responder

Respuestas

Cristian Henao. 11 de agosto de 2014, 14:07


Hola wkats, me alegra leer eso, esto es lo bueno de la programación, los
conceptos pueden ser aplicados a muchos lenguajes, un saludo.

Responder

Anónimo 14 de agosto de 2014, 20:13


Muy buen post me aclaro muchas dudas :D
Responder

Respuestas

Cristian Henao. 7 de enero de 2015, 9:13


Gracias, me alegra que te sirviera

Responder

Anónimo 1 de septiembre de 2014, 5:27


Muy bueno gracias por el aporte!
Responder
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Respuestas

Cristian Henao. 7 de enero de 2015, 9:13


Con gusto!!!

Responder

Unknown 1 de septiembre de 2014, 18:34


Hola,
Primero: Quiero felicitarte y darte las gracias por el foro, el esfuezo y dedicación que
haces, al poner un poquito de tu tiempo para compartir tus conocimientos a los
demas atraves de este portal, esta todo muy bien explicado y ayuda a muchos.

Segundo: Me parece que todavia no hasta tenido tiempo de arreglar el ejemplo,


como mencionaron en los comentarios en algunas vistas se estan creando objetos
dentro de ellas, y segun lo que yo entendi el controlador es el enlace entre la visto y
el modelo, por ende es donde deberia ir toda la codificacion a lo referente de la logica
del negocio, creacion objetos, etc. Corrigeme si me equiboco.

Tercero: Me sugrio una duda, supeniendo que yo tengo tres (3) tablas de una base
de datos cualquiera, que podrian ser a modo de ejemplo: perro, raza, dueño, donde
muchos perro tiene una raza y una raza muchos perros, y supongamos que un perro
pueden tener muchos dueños y un dueño puede tener muchos perros, para lo cual se
necesitaria una tabla detalle perros/dueño, como deberia de ser el VO y sobre todo el
DAO a la hora de mostrar los datos, dado que a la hora de mostrar perro, se debe
mostrar la raza del perro y no la id, y los mismo para el nombre del dueño. ¿Deberia
de hacer una consulta especial en el controlador o empalear otro forma de hacerlo?
normalmente haria una consulta como la siguiente para mostrar todos los perros y
sus razas"select idPerro, nombreP, raza, from Perro, Raza; Tengo tiempo sin
programar y puede que alla cometido algun error en la consulta, en cuanto para
mostrar todos los perro que tiene un dueño puede que la haria en dos consultas
separadas, no pongo algun ejemplo pero que no me llega nada a la mente en este
momento, y me parece irrelevante, en cuanto al codigo, se tendria PerroVo,

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
PerroDao, RazaVo, RazaDao, ¿cual seria la forma obtima para unir ambas tablas y
donde deberia de hacerse?.

Espero haberme dado a entender bien, en caso contrario me lo dices y trato de


formular mejor mi duda.

------------ ----------- ------------ -----------------


|Perro | |Raza | |Dueño | |perroDueño|
------------ ----------- ------------ ------------------
|idPerro | |idRaza | |idDueño | |idPerro |
|nombreP| |raza | |nombreD| |idDueño |
|idRaza | ------------ ------------- -----------------
|idDueño |
-------------
Responder

Anónimo 27 de noviembre de 2014, 14:30


Hey hermano tu blog es uno de los mejores que he visto, no pares de redactar
articulos muy buenos!
Responder

Anónimo 29 de enero de 2015, 9:00


Muy bueno Felicidades uno de los mejores blogs, muy bien explicado me sirvió
bastante.
Responder

The Oliztik 8 de junio de 2015, 7:44


Hola, gracias por la explicación, me parecen excelentes porque me amplían mucho el
panorama pero a su vez también me confundo un poco.

He estado viendo este tutorial donde explican sobre el patrón de arquitectura de

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
software MVC: https://www.youtube.com/watch?v=IywnWQTqSh0 y también hacen
un ejemplo para hacer un CRUD:
https://www.youtube.com/watch?v=AUcibt-cf4E y estoy tratando de sacar una
conclusión entre lo que tú explicas en tu blog y lo que explican en el videotutorial.

Ando recién buscando, investigando y practicando sobre el patrón MVC en Java y


pude hacer un pequeño programita aplicando lo que he aprendido recientemente pero
ahora que leí tu blog tengo algunas dudas porque he visto que tú incorporas algunas
clases adicionales que yo no sabía que también se usaban. Entre las conclusiones que
había llegado al investigar sobre el MVC están que yo tenía pensado que si en una
base de datos teníamos 10 tablas, entonces en nuestro componente modelo
necesitábamos crear 20 clases: 10 clases DAO y 10 clases VO. Creo que hasta allí
concuerda con lo que mencionas en tu blog. Luego, tenía entendido que por cada
vista (JFrame, JDialog, JInternalFrame, etc) tenía que crear un controlador. Por
ejemplo, si tuviera 15 vistas, entonces para cada vista necesitaría declarar 15
controladores, uno para manejar cada vista.

En tu blog he visto que utilizas una clase Lógica y otra clase llamada Coordinador y
eso me confunde un poco porque creo que es la primera vez que oigo acerca de
dichas clases.

Por ejemplo, en una aplicación que cuenta con una base de datos que contiene solo
una tabla llamada "alumnos", yo utilizo dentro dentro de mi componente "modelo"
dos clases por dicha tabla:

Componente MODELO:
-Alumno.java (// Esta sería el AlumnoVO.java)
http://ideone.com/IEKnEc

-AlumnoDAO.java
http://ideone.com/IutpBS

También una clase que realice la conexión con la base de datos


- Conexión.java
http://ideone.com/pBRNsJ

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

A parte, para el componente vista, solo utilizo una JFrame en donde se va a poder
registrar y borrar un Alumno

Componente VISTA:
- JFAlumno.java
http://ideone.com/SckbUj

Y como intermediario entre dicha vista y los datos, utilizo una clase Controlador:
Componente CONTROLADOR:
- ControladorAlumno
http://ideone.com/ObTwx6

De esa forma pensé que se implementaba el patrón MVC pero en tu blog como te
dije, veo que incluyes las clases "Lógica" y "Coordinador" y creo que eso me confunde
un poco. Si es que tuvieras el tiempo de revisar mi código te estaría muy agradecido
porque no estoy seguro si mi manera de usar el MVC está bien o tal vez estoy
haciendo cualquier otra cosa menos MVC. Gracias :)
Responder

Respuestas

The Oliztik 8 de junio de 2015, 7:49


VistA: http://oi61.tinypic.com/2i7kztx.jpg

Unknown 18 de agosto de 2015, 10:19


Oye amigo tienes algun avance de la clase logica y coordinador. Te lo
agradeceria

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Unknown 10 de diciembre de 2015, 20:52


Este comentario ha sido eliminado por el autor.

Unknown 10 de diciembre de 2015, 21:07


Tengo la misma duda The Oliztik en la clase lógica.
Pudiste comprender como va implementado en el MVC la clase lógica espero
me ayudes con un ejemplo ..??
El resto concuerdo contigo en que se crea un controlador por cada vista..

Cristian Henao. 15 de diciembre de 2015, 9:37


Hola, Gracias por comentar, les cuento que basicamente lo que se debe
tener muy presente es el concepto del MVC, asumo que ya lo saben pero es
identificar que debe ir en que categoria por asi decirlo, en el Modelo debe
estar toda la logica, en la Vista todo lo que tenga que ver con interfaz grafica
(en ocasiones por el afan se me van JOption en el Modelo, aunque es algo
que no afecta tanto deberia gestionarse desde las vista) y el controlador
esas clases encargadas de relacionar las anteriores.... en cuanto a la clase
logica si ven la imagen la estoy gestionando como parte del modelo, ya que
en mi logica de programacion quise crear dicha clase para validar cosas
antes de hacer el llamado a los DAO, se llama logica pero puede llamarse
como quiera, simplemente es una clase que me ayuda en mi negocio (la
logica del sistema), segun la teoria no deberiamos hacer logica de negocio
en los dao y los vo por eso yo hago eso desde otra clase, para asi hacer el
llamado a los dao que se encargaran de gestionar mi BD.

Supongamos que vamos a hacer una calculadora, en las vistas van las
interfaces donde se encuentran los campos para ingresar los numeros, en el
modelo va la clase logica que para mi seria donde hago las operaciones
matematicas y cuando tengo los resultados los envio al DAO para el registro
a la BD y la clase coordinador que se encarga de recibir los datos para
pasarselos a la logica y luego posteriormente enviarselos a las interfaces
graficas....

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

les comparto esta secuencia de videos donde aplico el MVC, tal vez aclare un
poco mas.
https://www.youtube.com/playlist?
list=PLAg6Lv5Bbjjc91pwodQr8oXYPAjasIZ_M

Responder

Unknown 30 de junio de 2015, 12:59


Hola quiero felicitarte por este gran aporte. Gracias por compartir tu conocimiento.
Responder

Respuestas

Cristian Henao. 14 de agosto de 2017, 9:02


Muchas Gracias Roberto

Responder

Unknown 18 de agosto de 2015, 10:15


Muy bueno pero como se comportaria si fueran dos tablas relacionadas. Por poner un
ejemplo persona y ventas
Responder

Respuestas

Cristian Henao. 14 de agosto de 2017, 9:03


Podrias usar una vista que se encargue de gestionar esa info y la vista tener
su DAO y en dicho dao mezclar lo necesario de las 2 tablas.

Responder

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Anónimo 26 de octubre de 2015, 13:14


Como lo puedo ejecutar en visual studio 2012?
Responder

Unknown 21 de noviembre de 2015, 9:49


Esta muy bien explicado pero porf avor podría realizar este mismo modelo pero ahora
con servlets y jsp
Responder

Anónimo 3 de diciembre de 2015, 18:18


Me salvaste la vida gracias !!! :D
Responder

Respuestas

Cristian Henao. 14 de agosto de 2017, 9:03


Con gusto

Responder

Unknown 13 de abril de 2016, 11:19


gracias me a servido de mucho
Responder

Unknown 14 de abril de 2016, 22:11


Muy buena explicacion. Gracias me ha servido tu ayuda

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
Responder

Respuestas

Cristian Henao. 14 de agosto de 2017, 9:04


Con gusto

Responder

Anónimo 2 de mayo de 2016, 7:32


Alguien podria pasarme el codigo, no me funciona el link de mega, gracias!!!
Responder

hero's 14 de julio de 2016, 14:58


Que buena explicación, tengo unas dudas sobre estos temas.
1. Los VO o DTO hacen un mapeo de cada tabla en la BD con sus respectivos campos
según entiendo, en las tablas que contiene campos autoincrementales (generados
automáticamente por la BD) como iría el metodo de la clase VO. Se omite en el
método y se crea un constructor sin este campo ?
2. Los DAO tienen el ¿que Hacer? Y los VO el ¿como lo hacen ? Cierto ?. Esto quiere
decir que todas las consultas adicionales sobre la BD deben ir aquí?. Como puedo
manejar consultas extras como para llenar tablas o combobox sin romper las reglas
del patrón
Si manejo view para mostrar al usuario final en la aplicación debo manejarlas aquí?. ¿
esto no rompería la idea del patrón ??
3. La clase coordinador hace el papel del FACADE ?.
Una vez más gracias por las explicaciones
Responder

AR7 15 de julio de 2016, 7:39


Muy bueno el aporte!!
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Ing. Cristian estoy intentando hacer el mismo ejemplo pero en la interfaz estoy
utilizando el dise;ador grafico de NetBeans y no se como utilizar la clase controlador,
se me complica mucho, quisiera si es posible me diera una guia de como puedo
hacerlo. gracias
Responder

Unknown 18 de agosto de 2016, 8:38


Muy buen aporte¿, excelente (y)
Responder

Unknown 24 de agosto de 2016, 23:24


Gracias Cristian por tu tutoriql, muy bien detallado.
Saludos
Thierry
Responder

Unknown 1 de octubre de 2016, 16:56


Mil gracias! Es el mejor artículo que he conseguido sobre el tema :)
Responder

Unknown 6 de octubre de 2016, 7:17


Muy buen contenido y no se diga la explicación en tus vídeos, gracias por compartir
tu conocimento Cristian
Responder

Anónimo 10 de octubre de 2016, 8:40

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
Muchas gracias.

Estaba buscando un ejemplo bien explicado del MVC y el tuyo ha sido el mejor. Muy
claro y mejor estructurado.
Responder

Unknown 12 de noviembre de 2016, 7:01


Estoy aprendiendo a programar con Java. Tus explicaciones son excelentes y me
estan sirviendo de mucha ayuda.
Muchas gracias.
Responder

Unknown 23 de enero de 2017, 16:12


Muchas gracias! Excelente artículo.
Saludos!
Responder

Unknown 18 de marzo de 2017, 15:09


como seria con mas de un controlador?
gracias
Responder

Unknown 7 de mayo de 2017, 19:44


Muchísimas gracias por este blog, tu dedicación y tu profesionalismo. Llevo tiempo
tratando de comprender este patrón de diseño y hasta ahora no podía terminar de
identificar cuales eran las clase que debían intervenir en cada una de las partes del
esquema.
Solo me resta una última consulta. Estoy haciendo un programa sencillo, que tiene
por objeto más que nada el poder aplicar este patrón para poder integrarlo a mi

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
saber.
Resulta que la GUI tiene varios botones y varios eventos de pérdidas de foco. Seria
aconsejable que hiciera una clase por cada tipo de evento que deseo administrar con
el controlador, o me conviene implementar todas las interfaces de evento en una
misma clase controladora?
Responder

Respuestas

Cristian Henao. 14 de agosto de 2017, 9:06


Hola, depende de lo que vas a hacer, podrias usar diferentes controladores o
uno solo, pero mas que todo depende de que tan grande es tu aplicación.

Responder

HECTOR_FRANCO 28 de junio de 2017, 8:46


Que buen ejemplo amigo, tengo una pregunta que no tiene que ver con el tema pero
eso sobre una imagen que pusiste con todas las clases y paquetes del proyecto, y es
¿Como haces para que se vea un paquete dentro de otro paquete en Eclipse, ya que
yo al tratar de crear un paquete dentro de otro queda asi modelo.dao por ejemplo?
Responder

Respuestas

Cristian Henao. 7 de julio de 2017, 12:42


Hola, mira las vistas en eclipse, ahí seleccionas navigator...

Responder

Jhorman Gonzales Inga 29 de julio de 2017, 18:44


Muy buena hermano , es agradable el trabajo que haces no dejes de hacerlo

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
Responder

Respuestas

Cristian Henao. 14 de agosto de 2017, 9:04


Muchas Gracias!!!

Responder

adrian 13 de agosto de 2017, 22:46


Es 2017 y aun sirve demasiado este contenido, gente como tu debería haber mas en
internet. Gracias, idolo!
Responder

Respuestas

Cristian Henao. 14 de agosto de 2017, 9:04


Muchas Gracias!!!

Responder

David May 12 de octubre de 2017, 23:00


Muy bueno, entendible y práctico, me servirá de mucho con mis prácticas de
desarrollo de aplicaciones en la escuela. Muchas gracias, compartiré el artículo con el
resto de mis compañeros.
Saludos!
Responder

Anónimo 16 de octubre de 2017, 11:11


muchas gracias profesor excelente explicacion Dios lo bendiga por sus aportes son
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
muy pocos los que explican claro y directo.
Responder

Unknown 7 de diciembre de 2017, 18:39


Muchas gracias por la excelente explicación, tengo una duda especifica: ¿cual es la
utilidad de los set y get entre las clases vistas y el coordinador? ¿porque es necesario
pasar esas instancias por parametro si ya se cuenta con una en la misma clase? por
ejemplo la clase coordinador ya cuenta con una instancia de VentanaPrincipal y luego
en el metodo es seteada con otra instancia de VentanaPrincipal, espero haber sido
claro sobre mi consulta, nuevamente gracias por el aporte
Responder

Nelson 14 de julio de 2018, 20:05


Brillante mi amigo Te felicito por las explicaciones y por el deseo que otros aprendan.
Responder

Unknown 17 de julio de 2018, 9:30


Gracias por esa buena explicacion y el ejemplo que compartes, me a ayudado a
entender un poco más sobre el tema de MVC.
Me gustaria hacerte una pregunta:
Como harías para llamar no un Jframe sino un JDialog (dentro de un HFrame padre)
o un JInternalFrame (dentro de un contenedor) desde el evento del botón, y que este
a su vez se comunique con el coordinador y todas las clases?
Es que e intentado hacerlo como lo explicas y no funciona. Agradezco de antemano tu
ayuda. Muchas Gracias.
Responder

Unknown 5 de septiembre de 2018, 8:52


Gracias por tan buena explicacion de este tema!

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
Responder

Wigon 14 de septiembre de 2018, 8:40


Muchas dudas
Responder

Anónimo 23 de octubre de 2018, 10:10


se rifo xD
Responder

Anónimo 23 de octubre de 2018, 10:11


Tengo dudas, demasiadas dudas
Responder

Anónimo 7 de enero de 2019, 8:59


Buen aporte, aclara algunas dudas que tenía. Saludos
Responder

Viviana 31 de enero de 2019, 13:29


Buen aporte, me aclaró varias dudas!!!
Responder

Unknown 28 de junio de 2019, 13:43


me encanto, muchas gracias...
estare pendiente de tus publicaciones
Responder
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador

Sirius 29 de agosto de 2019, 8:07


Gracias muy util para entender el modelo
Responder

Miguel 31 de agosto de 2019, 0:41


Lo primero muchas gracias por el aporte. Planteo lo siguiente a ver que te parece,
tenía dudas sobre como tratar la conexión a la base de datos. Veo que abres y cierras
conexión cada vez vas a realizar alguna operación del CRUD. ¿no sería mejor abrir
una conexión al ejecutar el programa por primera vez y cerrar la conexión al salir del
programa?¿crees que ganamos en rendimiento?
Muchas gracias de nuevo y un saludo.
Responder

Joss 29 de noviembre de 2019, 17:32


Gracias por compartir ya que las explicaciones que das a los temas son muy
comprensibles y practicas.
Saldos
Responder

Si quieres gestionar tus comentarios, tienes que escribirlos con tu cuenta de Google. Si los añades de manera
anónima, no podrás modificarlos ni eliminarlos.
Más información

Comentar como:

Publicar
Vista previa

Eres libre de realizar cualquier comentario, desde que pueda ayudar con gusto lo atenderé,
http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]
CoDejaVu: Ejemplo Modelo Vista Controlador
y si es un critica, bienvenida sea!!!

Enlaces a esta entrada


Crear un enlace

Entrada más reciente Página principal Entrada antigua

Suscribirse a:
Enviar comentarios (Atom)

Cristian David Henao H. Tema Sencillo. Imágenes del tema: hdoddema. Con la tecnología de Blogger.

http://codejavu.blogspot.com/2013/06/ejemplo-modelo-vista-controlador.html[09/04/2020 10:05:19]

También podría gustarte