Professional Documents
Culture Documents
lunes,17dejuniode2013 Buscaresteblog
Elproblema. Blog:
http://codejavu.blogspot.com/
Se solicita desarrollar un sistema de administracin de usuarios con un CRUD Facebook:
(Create, Read, Update, Delete) bsico nos advierten que la aplicacin es un https://www.facebook.com/
prototipoinicialelcualestapropensoacambios,puesannosetienendefinidaslas codejavu
ventanasconlasquesevaatrabajarnilainformacinrequerida,porlemomento Google+:
se trabajar con una BD MySql, pero posiblemente se tenga que migrar a otro https://plus.google.com/+
CodejavuBlogspotColombia/
sistemagestor....
youtube:http://goo.gl/IiPNSy
Twitter:@chenaooo
Lasolucin. Linkedin:
http://www.linkedin.com/pub/
Se aplica el MVC permitiendo independizar la lgica y la parte visual del sistema cristiandavidhenaohoyos/69/
usandoparaesouncontroladorqueadministralosprocesossirviendocomopuente b90/84a
entreestos. Vertodomiperfil
paralaBDseusaMySql,reutilizandolaBDcreadaenelejemplodeconexincon
Java,elScritpeselsiguiente.
1 CREATEDATABASE/*!32312IFNOTEXISTS*/`codejavu`/*!40100DEFAULTCHARACTER
2
3 USE`codejavu`;
4
5 /*Tablestructurefortable`persona`*/
6
7 DROPTABLEIFEXISTS`persona`;
8
9 CREATETABLE`persona`(
10 `id`int(10)NOTNULL,
11 `nombre`varchar(30)defaultNULL,
12 `edad`int(3)defaultNULL,
13 `profesion`varchar(30)defaultNULL,
14 `telefono`decimal(10,0)defaultNULL,
15 PRIMARYKEY(`id`)
16 )ENGINE=InnoDBDEFAULTCHARSET=latin1; Suscribete!!!Quieresseguir
17 esteblog?Participaenelsitio
18 /*Dataforthetable`persona`*/
Laagrupacindeclasesdenuestrosistemaes:
http://codejavu.blogspot.com/2013/06/ejemplomodelovistacontrolador.html 1/22
21/4/2017 CoDejaVu:EjemploModeloVistaControlador
Seguidores(176)Siguiente
Seguir
124
Sehaproducidounerroreneste
gadget.
Como vemos tenemos la parte visual compuesta por las clases VentanaPrincipal,
VentanaRegistro,VentanaBuscar,lalgicadenegocioseestableceenelmodelo
elcualsecomponeporlaclaseLogicayConexinyaplicamoslospatronesDAOy ContactosG+
VOpormediodelasclasesPersonaDaoyPersonaVoy por ultimo el controlador CristianHenao
sedefineenlaclaseCoordinador,encargadadeestablecertodaslasrelacionesdel
Aadiracrculos
sistema, la clase Principal prepara las instancias iniciales del sistema y
posteriormenteloejecuta.
VeamoscomofuncionaelPatrn:
ElModelo.
ClaseLogica.
HistorialCoDejaVu
Estaclasepermiterealizarlasoperacionesasociadasalalgicade
negociocomotal,desdeellarealizamoslasvalidacionesyllamados 2017(4)
alasoperacionesCRUDdelsistema. 2016(4)
2015(4)
En caso de que se requieran procesos adicionales asociados a
la lgica de negocio, aqu ser donde se creen los mtodos para 2014(17)
ClaseConexin. PremioLiebsterAward
EjemploConectandoJava
En esta clase tenemos la cadena de conexin con la que trabajar conMySql
nuestra aplicacin, en ella se define la base de datos, el usuario, ManejodeExcepcionesen
password y driver de conexin, si por ejemplo en un futuro se nos Java
pide conectarnos a una base de datos diferente o establecer un EjemplodePolimorfismoEn
sistema gestor distinto (pero con la misma estructura de tablas y Java
campos), tan solo modificaremos esta clase y dicho cambio sera
transparenteparaelrestodelsistema. mayo(18)
(Tener en cuenta que los datos de login y password corresponden a abril(14)
losqueyodejpordefectoalinstalarMySql,esdecirloginrootysincontrasea)
1 publicConexion(){ Categorias
2 try{
http://codejavu.blogspot.com/2013/06/ejemplomodelovistacontrolador.html 2/22
21/4/2017 CoDejaVu:EjemploModeloVistaControlador
2 try{ Abstract (2) Abstract Factory
3 //obtenemoseldriverdeparamysql Adapter (2) Apache Ant
4 Class.forName("com.mysql.jdbc.Driver"); continuousintegration(6) control
5 //obtenemoslaconexin
6 conn=DriverManager.getConnection(url,login,password); de versiones (3) Eclipse (14)
7 Excepciones (1) google code
8 if(conn!=null){ Herencia (4) Integracin
9 System.out.println("Coneccinabasededatos"+bd+"OK"); continua (6) Interface (3) java
10 }
11 } (17) Java Swing (26)
12 catch(SQLExceptione){ jboss (4) jboss seam (3) Jboss
13 System.out.println(e); Tools (2) JDialog (3) JDK
14 }catch(ClassNotFoundExceptione){ Jenkins(7) JSF(3)MVC(3) MySql
15 System.out.println(e);
(2) Observer (2) Patrones de
16 }catch(Exceptione){
17 System.out.println(e); Diseo (8) PerGem space
18 } Plugin (3) Polimorfismo
19 } Programacin Orientada a
Objetos(7)Properties(1) repositorio
(3) seam gen (1) Singleton (2) svn
(5)
ClasePersonaVo.
LoMasVisto
Eclipseo
1 /** Netbeans?
2 *@returntheidPersona Hola,enesta
3 */ oportunidadquiero
4 publicIntegergetIdPersona(){ hacerunbreaken
5 returnidPersona; lasentradassobreJava
6 } Swing..........................Y
7 /** Porqu?...........porquea...
8 *@paramidPersonatheidPersonatoset
9 */ Ejemplo
10 publicvoidsetIdPersona(IntegeridPersona){ JFileChooser
11 this.idPersona=idPersona; Nuevamente
12 } regresoconun
ejemploprctico
sobreunodeloscomponentes
ClasePersonaDao. JavaSwing..............eldade
hoylestraigoelJFileChooser
...
Cuando utilizamos estas clases, aplicamos el patrn Data Access
ObjectoDAO,bsicamenteestepatrnconsisteencentralizarlos Ejemplode
procesos de acceso a la base de datos evitando inconsistencias y PolimorfismoEn
Java
posibles problemticas cuando esto se realiza a lo largo de la
Enestaentrada
aplicacin. vamosatrabajar
Conestepatrnindependizamoslalgicadenegociodelalgicade unejemplorpidoysimple
accesoadatosobteniendomayororganizacinyflexibilidadenelsistema. aplicandoelconceptode
Polimorfismo,enelpost
anteriorvimosalgunasconsi...
1 publicvoideliminarPersona(Stringcodigo)
2 { Comocrear
3 Conexionconex=newConexion(); InterfacesGraficas
4 try{ enEclipsecon
5 Statementestatuto=conex.getConnection().createStatement(); WindowBuilder
6 estatuto.executeUpdate("DELETEFROMpersonaWHEREid='"+codigo+"'"); Despusdemucho
7 JOptionPane.showMessageDialog(null,"SehaEliminado"+ meditarlo,voyaexplicarles
8 "Correctamente","Informacin",JOptionPane.INFORMATION_MESSAGE); cmocrearaplicacionescon
9 estatuto.close(); interfazgrficadesdeEclipse,
10 conex.desconectar(); similaracomosehaceen...
11
12 }catch(SQLExceptione){
http://codejavu.blogspot.com/2013/06/ejemplomodelovistacontrolador.html 3/22
21/4/2017 CoDejaVu:EjemploModeloVistaControlador
12 }catch(SQLExceptione){
13 System.out.println(e.getMessage()); Ejemplo
14 JOptionPane.showMessageDialog(null,"NoseElimino"); ConectandoJava
15 } conMySql
16 } Enestaentrada
vamosatocaruno
delospuntosfundamentales
eneldesarrollodesoftware,
novamosaentrarendetalles
LaVista. dequeesunaB...
Ejemplo
Aqu se define la parte visual del sistema, en la vista estableceremos todas las
JOptionPane
ventanasointerfacesgrficasdeusuario,mediantelascualesrepresentamostodoel Nuevamente
modelopermitiendolainteraccinentrelaaplicacinyelcliente. despusdeotra
semanamuy
ClaseVentanaPrincipal. pesadasinpoderdarlevuelta
alBlog,regresoparafinalizar
lasecuenciadeentradassobre
JavaSwi...
Comparando
FechasEnJava
Enestaentrada
veremosunodelos
procesosobligados
cuandosetrabajaeneste
campodeldesarrollode
Software,sinimportarel
lenguajeq...
EjemploEventos
delTecladoenJava
Enlaentrada
Estaclaserepresentalaventanainicialdelaaplicacin,poseeunreadetextocon
anteriortocamosel
una pequea descripcin y 2 botones que darn inicio a los eventos principales del temadelos
sistema. eventosdelMouse,enesta
ocasincontinuaremos
trabajandoconEventospero
secomunicaconelmodelomediantelaclasecoordinadorydesdeestasecarganlas ahoradelTecla...
otrasventanasdelaaplicacin.
ClaseVentanaRegistro. CoDejaVu!!!
PermiteelingresodeinformacinalaBD,enellaseevidenciantodosloscamposde Enlaces
la tabla Persona y presenta un medio grfico para las clases PersonaVo y
PersonaDao, al ejecutar el evento de registro se establece comunicacin entre el Paperblog
coordinador y la clase Lgica donde se encuentran todas las validaciones y casos Hace5das
paraelingresodeinformacin.
ClaseVentanaBuscar.
http://codejavu.blogspot.com/2013/06/ejemplomodelovistacontrolador.html 4/22
21/4/2017 CoDejaVu:EjemploModeloVistaControlador
ElControlador.
Esta parte del patrn es la que define la lgica de administracin del sistema,
establecelaconexinentrelavistayelmodelo.
ClasePrincipal.
1 privatevoidiniciar(){
2 /**Seinstancianlasclases*/
3 miVentanaPrincipal=newVentanaPrincipal();
4 miVentanaRegistro=newVentanaRegistro();
5 miVentanaBuscar=newVentanaBuscar();
6 miLogica=newLogica();
7 miCoordinador=newCoordinador();
8
9 /**Seestablecenlasrelacionesentreclases*/
10 miVentanaPrincipal.setCoordinador(miCoordinador);
11 miVentanaRegistro.setCoordinador(miCoordinador);
12 miVentanaBuscar.setCoordinador(miCoordinador);
13 miLogica.setCoordinador(miCoordinador);
14
15 /**Seestablecenrelacionesconlaclasecoordinador*/
16 miCoordinador.setMiVentanaPrincipal(miVentanaPrincipal);
17 miCoordinador.setMiVentanaRegistro(miVentanaRegistro);
18 miCoordinador.setMiVentanaBuscar(miVentanaBuscar);
19 miCoordinador.setMiLogica(miLogica);
20
21 miVentanaPrincipal.setVisible(true);
22 }
ClaseCoordinador.
Estaclasecontienetodalalgicaderelacionesenelaplicativo,
eselpuenteentreelmodeloylasvistas.
1 publicLogicagetMiLogica(){
2 returnmiLogica;
3 }
4
5 publicvoidsetMiLogica(LogicamiLogica){
6 this.miLogica=miLogica;
7 }
8
9 publicvoidmostrarVentanaRegistro(){
http://codejavu.blogspot.com/2013/06/ejemplomodelovistacontrolador.html 5/22
21/4/2017 CoDejaVu:EjemploModeloVistaControlador
9 publicvoidmostrarVentanaRegistro(){
10 miVentanaRegistro.setVisible(true);
11 }
12
13 publicvoidmostrarVentanaConsulta(){
14 miVentanaBuscar.setVisible(true);
15 }
16
17 publicvoidregistrarPersona(PersonaVomiPersona){
18 miLogica.validarRegistro(miPersona);
19 }
LaAplicacin.
ElSistemaestadesarrolladocomounproyectoEclipse,
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 conexin dao y vo ya que aunque
pertenecen al modelo y la lgica de negocio debe
establecersetambinsuindependenciaconrespectoa
lasoperaciones,esdecir,lasclasesVoporejemplono
poseen mtodos de operaciones asociadas a
la lgica de negocio, tan solo deben representar las
tablas de la BD, entonces en el paquete vo se
agruparntodaslasclasesequivalenteaentidades.
Conclusiones.
Comovimostenemosunproyectofuncionalquerealizalasoperacionesbsicasdel
CRUD, y donde todas sus partes se encuentran separadas por funcionalidades,
separando la parte visual de la lgica de negocio y estableciendo relaciones entre
ellas............ en si se desarroll como ejemplo practico, existen validaciones
muy bsicas y procesos simples pero pensado en modo de ejemplo sin mayor
complejidad, tambin se utilizan algunos conceptos vistos en entradas anteriores
comoeselcasodelmanejodeexcepciones,patronesentreotros...
Descarga.
YListo,comosemencionesunejemplosimple,sinmuchalgicaparaaplicar,pero
la intencin es dar a conocer un poquito mas claro como se puede aplicar el MVC,
esperoqueesteejemploseadeutilidad.....)
TambintepodraInteresar.
QuesonlosPatronesdeDiseo?
EjemploConectandoJavaconMySql
ManejodeExcepcionesenJava
ConceptosBsicosdeProgramacinOrientadaaObjetos.
StringVrsStringBufferVrsStringBuilder?
ComparandoFechasEnJava
IntegracinContinua,PrimerosPasosConJenkins
LeerArchivoPropertiesenJava
TutorialProyectoWebConEclipse
http://codejavu.blogspot.com/2013/06/ejemplomodelovistacontrolador.html 6/22