lenguaje de programaciÓn ii - …imagenes.uniremington.edu.co/moodle/módulos de aprendizaje... ·...
TRANSCRIPT
2 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
ElmódulodeestudiodelaasignaturaLenguajedeprogramaciónIIespropiedaddelaCorporaciónUniversitariaRemington.Lasimágenesfuerontomadasdediferentesfuentesqueserelacionanenlosderechosdeautorylascitasenlabibliografía.Elcontenidodelmóduloestáprotegidoporlasleyesdederechosdeautorquerigenalpaís.
Estematerialtienefineseducativosynopuedeusarseconpropósitoseconómicosocomerciales.
AUTOR
CesarAugustoJaramilloHenaoIngenierodeSistemasCesar.jaramillo@uniremington.edu.coNota:elautorcertificó(demaneraverbaloescrita)Nohaber incurridoenfraudecientífico,plagiooviciosdeautoría;encasocontrarioeximiódetodaresponsabilidadalaCorporaciónUniversitariaRemington,ysedeclarócomoelúnicoresponsable.RESPONSABLES
JorgeMauricioSepúlvedaCastañoDecanodelaFacultaddeCienciasBásicaseIngenieríajsepulveda@uniremington.edu.coEduardoAlfredoCastilloBuilesVicerrectormodalidaddistanciayvirtualecastillo@uniremington.edu.coFranciscoJavierÁlvarezGómezCoordinadorCUR-Virtualfalvarez@uniremington.edu.coGRUPODEAPOYO
PersonaldelaUnidadCUR-VirtualEDICIÓNYMONTAJEPrimeraversión.Febrerode2011.Segundaversión.Marzode2012Terceraversión.noviembrede2015
DerechosReservados
EstaobraespublicadabajolalicenciaCreativeCommons.
Reconocimiento-NoComercial-CompartirIgual2.5Colombia.
3 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
TABLA DE CONTENIDO Pág.
1 MAPADELAASIGNATURA..............................................................................................................................5
2 UNIDAD1PATRONESDEDISENO....................................................................................................................6
2.1.1 RELACIÓNDECONCEPTOS..............................................................................................................6
2.2 TEMA1SINGLETON.................................................................................................................................7
2.3 TEMA2DAO............................................................................................................................................9
3 TEMA3FACADE............................................................................................................................................10
3.1.1 EJERICICIODEAPRENDIZAJE..........................................................................................................11
3.1.2 TALLERDEENTRENAMIENTO........................................................................................................12
4 UNIDAD2PERSISTENCIAENBASESDEDATOS.............................................................................................13
4.1 RELACIÓNDECONCEPTOS....................................................................................................................13
4.2 TEMA1APLICACIÓNCRUD...................................................................................................................14
4.3 TEMA2POOLDECONEXIONES.............................................................................................................60
4.4 TEMA3REPORTES.................................................................................................................................62
4.5 TEMA4DOCUMENTACIÓN...................................................................................................................81
4.5.1 EJERCICIODEAPRENDIZAJE...........................................................................................................89
4.5.2 TALLERDEENTRENAMIENTO........................................................................................................90
5 UNIDAD3HILOS............................................................................................................................................91
5.1 RELACIÓNDECONCEPTOS....................................................................................................................91
5.2 TEMA1DEFINICIÓNYOBJETIVOS.........................................................................................................92
5.3 TEMA2COMPONENTES........................................................................................................................92
5.4 TEMA3IMPLEMENTACIÓNDELAINTERFAZRUNNABLE......................................................................93
4 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
5.5 TEMA4CICLODEVIDA..........................................................................................................................95
5.6 TEMA5PRIORIDADES...........................................................................................................................96
5.7 TEMA6SINCRONIZACIÓN.....................................................................................................................98
5.7.1 EJERICICIODEAPRENDIZAJE..........................................................................................................99
5.7.2 TALLERDEENTRENAMIENTO......................................................................................................100
6 PISTASDEAPRENDIZAJE..............................................................................................................................101
7 GLOSARIO....................................................................................................................................................102
8 BIBLIOGRAFÍA..............................................................................................................................................103
6 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
2 UNIDAD 1 PATRONES DE DISENO
2.1.1 RELACIÓN DE CONCEPTOS
Escribaladefinicióndetodoslosconceptosplateadosenelmapaconceptual
Múltiplesaccesos:elsingletoncontralalasconexionesolosaccesos
Múltiplesmétodos:existenmúltiplesmétodosportablaenlaclaseDAO
Centraliza:elfacadecentralizaydistribuyelosrecursossolicitados
Administrarecursos:elfacadeadministratodoslosprocesosqueproveaelDAO
Coordinatareas:Distribuyelainformaciónsegúnlasolicitud
7 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
OBJETIVOGENERAL
Introduciralalumnoenelmanejodebuenasprácticas,aplicandopatronesdediseñocomosingleton, facade,DAO,pooldeconexiones,entreotros.
OBJETIVOSESPECÍFICOS
Identificarlosdiferentesmétodosdeprogramación,losmásútilesylosmásescalables.
identificar las metodologías de trabajo que se encuentran en el mercado para realizar proyecto con
mejoresprácticas.
2.2 TEMA 1 SINGLETON Singletonoinstanciaúnicaesunpatróndediseñoquerestringalacreacióndeobjetospertinentes,conestosebuscagarantizarqueunaclasesolotengaunainstanciayproporcionarunpuntodeaccesoglobalconella.
Conelpatrónsingletonseimplementacreandoenunaclaseunmétodoquetieneunainstanciaalobjetosiestenoexistetodavía,paraevitarvolverainstanciarlaseregulaconelconstructor.
Dentrodeesteprocesoencontramosalgunascaracterísticascomo
9 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
2.3 TEMA 2 DAO DAOoelDataAccessObject(ObjetodeAccesoaDatos),losDAOsonlosproveedoresdelosaccesosalaBDdeseránnecesariosdurantelaejecucióndelaaplicación,cadaDAOrepresentaunatablaconlosprocesosespecíficosdetrabajo,estoquieredecirquenotieneformatodepresentaciónanteelusuario,soloserádeprocesamientoytendrá tareas concretas como insertar, consultar,modificar, verificar, etc. Y serán invocados o usados por elformulariooprocesoquelorequieraycumplaslascondicionesmínimasdetrabajo.
• Ejemplo
AutoriaPropia
Losmetodossemanejariantodosdeestamanerayseraninvocadosporelformulario,procesooporunafachadaquesirvacomointermediario.
10 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
3 TEMA 3 FACADE FacadeoFachada,esunaclasemuysimplequeseencargadeadministrarlosrecursosdelproyecto,conestetipodearquitecturasedistribuyelainformaciónsinnecesidaddeingresardirectamentealaformaoformulario,todoslos procesos se solicitan mediante la fachada y este distribuirá o solicitará la información en el DAOcorrespondiente.
EnelsiguienteejemploseencuentraqueenunformularioTipoDocumentoseestéconsultandolafachadaconelmétodoconsultarEmpleado
AutoriaPropia
En el siguiente proceso se encuentra que el formulario empleado también consultar la fachada consultarEmpleado,ambosprocesosllamanalmismométododelamismafachada,enestecasoseestánaprovechandolosrecursos,quedentrodeunarchivoquecoordinalosllamadosseinvoqueparadistintastareaselmismométodoyconunresultadoidéntico.
11 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
3.1.1 EJERICICIO DE APRENDIZAJE
Nombredeltallerdeaprendizaje:Patrones Datosdelautordeltaller:CesarAugustoJaramilloHenao
Escribaoplanteeelcaso,problemaopregunta:
Quebeneficiostienetrabajarconunpatróndediseño.
Solucióndeltaller:
Lospatroneshacenpartede lasbuenasprácticasdeprogramación, si seaplicande lamaneracorrecta losdesarrollosseránmejoradministradosyconunosrecursosadecuados
12 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
3.1.2 TALLER DE ENTRENAMIENTO
Nombredeltaller:bancario Modalidaddetrabajo:individual
Actividadprevia:
RepaselosconceptosdeltemapatronesdediseñoylosdelenguajeI
Describalaactividad:
CreeunsistemabancarioquepermitacalcularlatasadeinterésdeunpréstamoenNcantidaddeaños,apliquepatronesdediseño.
13 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
4 UNIDAD 2 PERSISTENCIA EN BASES DE DATOS
4.1 RELACIÓN DE CONCEPTOS
BD:Estructuraquepermiteelalmacenamientodeinformacióndeformaorganizadayrelacionada
CRUD:AcrónimodeCreate,Read,UpdateyDelete(Insertar,Consultar,ModificaryEliminar)
Paquete:espaciocreadoparaorganizarlainformacióny/oconjuntodeclasesdelsistema
Modelo:paqueteocapadondeseadministranlosdatos(claseprincipal)
Vista:todolorelacionadoconlastareasqueveelusuario
Control:paquetequerepresentalalógicadelnegocio
14 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Conexión: archivoo clasequeestable las característicasquepermiten la comunicaciónentreuna formayunespaciodealmacenamiento
PooldeConexión:herramientadeconexiónconmúltiplesposibilidades,nolimitalosarchivosnidependedelacompilacióndelproyecto
MySQL:AdministradordeBD
XML:Lenguajemuycomúnconetiquetas“personalizadas”quepermiten lacomunicaciónoadministracióndedatos
Jasper:aplicativoquepermitelacreacióndereportespersonalizados
Etiquetas:conjuntodeelementospreestablecidoparalacreacióndeladocumentacióndeunaplicativo
Compilación:creacióndeladocumentaciónenunproyectoconformatoHTML,idealparaelseguimientopasoapasodeloscomponenteslógicosdeunaplicativo
OBJETIVOGENERAL
Crearhabilidadesdealmacenamientode la informaciónenrepositoriosadicionalesa losvistosensemestresprevios,permitiendounpanoramadeopcionesdegranutilidadydegranexpansión.
OBJETIVOSESPECÍFICOS
Desarrollar adecuadamente los procesos del CRUD mediante Bases de Datos, con todos losrequerimientosnecesarios.
Complementareldesarrollodeunaplicativotípicoconherramientascomoinformesparaelusuariofinalydocumentaciónparaeldesarrollador.
4.2 TEMA 1 APLICACIÓN CRUD Durantemuchotiemposehanrealizadoaplicacionessimplesconmanejodelainformaciónenlamemoria(RAM),elcualesunaspectofundamentalparael iniciode lasprimerasaplicacionespermitiendohacerpruebas,perotododemaneratemporal.Dentrodelaevolucióndeestetemaseencontraráelmanejodearchivos,opciónmuyútilcuandosedeseaalmacenarlainformacióndeformapermanente,esteprocesotomaelnombredeCRUDporsussiglaseninglés(Create,Read,UpdateandDelete)Crear,Obtener,ActualizaryBorrar,peroparaestenivelsetomaráelcaminodelasBasesdeDatos(BD),quefuncionadeunaformasimilaralosarchivosaunquemuchomásestructurado.
Nuestraherramientade trabajopara lasBDesMySQL,aunqueexisteunagranvariedaddeherramientasquerealizantareassimilares,MySQLesunaherramientamuysencillademanejar,congranalcance,estautilidadsepodrándescargardesdeelsitio.
15 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Despuésdeladescargaeinstalaciónysuposterioringresoencontramosunaconsolacomolasiguiente.
AutoriaPropia
Esteeselambiente típicode trabajo,podrían igualmenteutilizar laherramientaphpmyadminoherramientascomunes como mysql-workbench o mysql query Browser entre muchas otras, y nos permitirán realizar lasoperacionesesencialesdesdeunambientegráfico.
Loprimeroque se crearaparaestepropósitoesunBD y sus respectivas tablas, generandounMER (ModeloEntidadRelación)comoelsiguiente.
16 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoríaPropia
ConesteMERpodremostrabajarestaprimeraunidadrelacionadaconelCRUD,paratalefectoaplicaremosunconceptoadicionadelBDcomosonlosprocedimientosalmacenados,estaherramientanosharáelprocesounpocomássimplificadoenlacodificaciónautilizar,losprocedimientosquesevanautilizarsonlistar,consultar,modificar,eliminareinsertar
PROYECTO
UtilizandoelIDE(AmbientedeDesarrolloIntegrado)desupreferencia,seaesteEclipse,NetBeans,JDevelopertentremuchosotros,esteproyectoparticularmentesedesarrollarámedianteEclipseSE,estesepodrádescargardelsitiowww.eclipse.org.
17 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
CREACIÓNDELPROYECTOFACTURACIÓN
Luego de ingresar al IDE, con el botón emergente en el área izquierda de la pantalla (Package Explorer), seseleccionanew/JavaProject
AutoríaPropia
18 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
NombredelProyectoFacturación
AutoriaPropia
Se dejan las opciones de configuración por defecto y se selecciona el botón Finish y se obtiene el siguienteresultado
AutoriaPropia
19 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
ConelbotónemergentesobreelnombredelproyectoseseleccionaNew/Package
AutoriaPropia
LuegoelbotónFinishparaterminarlacreacióndelpaquete,esteprocesoserealizaparacadapaqueteespecifico.
Elresultadoeselsiguiente
20 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
CONECTORDELABD
ParaestablecerunproyectoconBDrequerimosdeunarchivo(librería)externoquepodemosdescargardelsitio,estearchivotieneporextensión.jarysunombreesmysql-connector-java-5.1.36(cambialaultimapartesegúnla versión), este archivo se puede descargar compreso o de instalación, después de haberlo realizado,descomprima dicho archivo y copie el archivo mysql-connector-java-5.1.36-bin.jar en su proyecto para untrasportemassimplificado(notienequesersiempreestaruta),creeenelproyectounacarpetaconelnombreconectorolibreríayunacarpetaconelnombredeBDparamayorcontroldeloselementos:
AutoriaPropia
Regresealproyecto,paralavinculacióndeestearchivo.jarconelproyectodefacturaciónseaplicalosiguiente
Botónemergentesobreelproyecto
21 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoríaPropia
EnlaventanaresultanteseleccioneelbotónAddExternalJARs…ybusqueelarchivomysql-connector-java-5.1.36-bin.jardentrodelacarpetacreadarecientemente
23 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
SeleccioneelbotónOK,conesteprocesoelsistemayatieneelconectorvinculado.
ARCHIVODECONEXIÓNABD
UnodelosprocesosfundamentalesdentrodelmanejodeunCRUDconBDeselarchivooprocesodeconexión,estenosestableceunvínculodirectoentrelaBDyelproyecto,elprocesoinicialiracambiandoconelpasodeltiempo, seráunprocesomuyelemental, básico y conmuchas limitantes, peroes funcional, amedidaque seavanceeneltemasetrabajaraenlasolucióndeestosposiblesproblemasmedianteelPooldeConexiones.
CREACIÓNDEUNARCHIVOJAVAPARACONEXIÓN
UbicadosenelpaqueteUtilidadesymedianteelbotónemergente,seleccionaNew/Class
AutoriaPropia
24 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Esteprimerarchivonoesdefinitivo,servirácomopruebadetrabajoyverificacióndefuncionamiento
Elarchivoinicialparapruebasseconformaríacomoelcasoanterior,setieneunaclasetípicaConexión,existeunaclaseConnection,estaclasecontienelosestándaresylasformasapropiadasparaestablecerunaconexiónalaBD, un DriverManager, contiene el protocolo que especifica el servidor local, se conforma por los siguientesparámetros
jdbc:conectividaddeBDdeJava
mysql://localhost:especificaelservidorlocalsobreelquesevaarealizarlaoperacióndelaBD
Facturación:representalaBDdetrabajo
root: usuariopordefectodemysql,estepuedesercambiadoocreado
admin:contraseñadelsistemadeBDdeMySQL,puedesercambiadaocreada
Con este proceso terminado, se procede a la construcción de la primera interfaz gráfica, que contendrá lasopcionesnecesariaspararepresentarlatabladeclientesegúnelMER,esteprocesosecrearadentrodelpaquetevistaytendráelnombreFrmCliente,setrabajaraconunJFrame.
25 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Este formulario inicialde trabajodeberáestarcompletamentevalidadoensuscajasde textopermitiendoelcontrolde losdatos, ceduladebede serunvalornumérico,demáximo10 cifras,nodeberáestar vacío,decumplirseestascondicionesypresionar lateclaenter llevaráel focoalcampodenombre,cadacampodebecumplir condiciones similares según los requerimientos que se establezcan al inicio del aplicativo, el ultimocampollevaráelfocoalbotóndeGuardar.
CAMBIOSENLOSBOTONESDECOMANDO
Losbotonesdecomandoestándefinidoscomovariablesyparaelpropósitodemayoralcanceserequierequeesténcomocampos,elcambiodeestealcanceesmuysimple,soloseleccionamos losbotones,conelmenúemergenteseleccionaRename.
27 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
CREACIÓNDEMÉTODOSFUNCIONALES
Existeunsinnúmerodeopcionesparaelbuenfuncionamientodelosprocesos,unodeelloseslaconstruccióndelosmétodosquepermitanlaadecuadaadministracióndelastareas,dentrodeellostendremosunmétodoquelimpie las cajasde texto,dehabilite/deshabilite losbotonesde comando,etc., enel Sourceo códigodeesteformulario,ubicadosalfinaldelarchivosecrearanlossiguientes.
MÉTODOLIMPIAR
Diseñadoparalascajasdetexto
AutoriaPropia
MÉTODODESHABILITAR
Bloquealascajasdetextoaliniciodelaplicativo
AutoriaPropia
MÉTODOSDEACTIVARYDESACTIVAR
Controlalosbotonessegúnlaoperaciónqueseesterealizando
29 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Asíseveráelproyectoconestoscambios
AutoriaPropia
CREACIÓNDEVARIABLESADICIONALES
AutoriaPropia
30 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Enel iniciodelarchivo,seencontrarán lasdefinicionesde lascajasdetexto,botonesydemáselementosquecomprendanelformulariodetrabajo,alfinalsedeclararan2variablescomplementarias,swseráunabanderadeencendidoyapagado,medianteestasedeterminarasiexisteonounelementoconsultado, lavariableopcseutilizara como clasificación según la operación a realizar, sea esta una inserción, consulta, modificación oeliminación.
ASIGNACIÓNDELOSBOTONESDECOMANDO
Lasiguienteasignacióndecódigoacadabotónpermitiráelbuendesempeñodelasoperaciones,pararealizarestatareabastaconpresionardobleclicsobreelbotónmencionado.
BOTÓNNUEVO
AutoriaPropia
BOTÓNCANCELAR
AutoriaPropia
BOTÓNGUARDAR
AutoriaPropia
31 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
BOTÓNCONSULTAR
AutoriaPropia
BOTÓNMODIFICAR
AutoriaPropia
BOTÓNELIMINAR
AutoriaPropia
BOTÓNSALIR
AutoriaPropia
32 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Lavariableopcesdevitalimportanciaporqueconellasedeterminarlafunciónarealizar,1pararegistrosnuevos,2paraconsultarinformación,3paramodificary4paralaeliminación,estaeliminaciónserealizarádemaneralógicamasnofísica,lógicaindicaqueelregistropermaneceráenlatablacliente,peronoserávisibleaelusuario,permitiráelcontroldehistóricosdelaBD.
CREACIÓNDELACLASEPRINCIPAL(BEANS)
Laclaseprincipaldelformularioinicialesmuysimpleperodegranimportancia,sedefinenlasvariables(campos)atrabajarysegeneraranlosgettersysetters,estosseránloscontenedoresdelainformaciónendistintasetapas,losdatosseránenviadosy/otomadosdeellos,evitandoasíaccederaunaclasedeformulariooaotroprocesoquepuedavulnerar laseguridaddelaplicativo,paraestecasosecreaunaclaseenelpaquetemodelo,conelnombreCliente,quedandodelasiguientemanera
AutoriaPropia
33 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Posterioraesteprocesosegeneranlosgettersysetters,paraesteprocesoseelijeelbotónemergentesobrecualquieradeloscamposcreados
AutoriaPropia
Seseleccionanloscamposconlosquesetrabajara,noesobligatorioseleccionarlostodos,sololosquetenganabienserutilizadosoactualizadospermanentemente.
34 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
YluegoelbotónOK
package modelo;
public class Cliente {
35 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
private String cedula;
private String nombre;
private String direccion;
private String telefono;
private String email;
public String getCedula() {
return cedula;
}
public void setCedula(String cedula) {
this.cedula = cedula;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getTelefono() {
return telefono;
36 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Quedandodeestemodo,lossets(setters)actualizaranlainformación,losget(getters)laretornaranaquienlasolicite.
CreacióndelpatróndediseñoDAO(DataAccessObject),lospatronesdediseño,unpatróndediseñosugiereunasoluciónaunproblema,conunformatogeneralmenteaceptadocomounestándar,enélseubicaránlalógicadelnegocio,losmétodosdelproceso.
PROCEDIMIENTOSALMACENADOS
LosprocedimientossonherramientasdelasBDquepermitenrealizartareasdeformamásflexible,sinexponertantoelcódigoyconlaseguridadquepuedabrindarlaBD,permitelasinstruccionesmáscomunesdelSQLcomosonlasinserciones,consultas,modificacionesyeliminaciones,acontinuaciónlos5procedimientosautilizarenesteprimerformulario.
VERIFICACIÓN
Seutilizaparacomprobarqueelregistroseencuentreonodentrodelatabla
37 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
INSERCIÓN
AutoriaPropia
CONSULTA
AutoriaPropia
MODIFICACIÓN
AutoriaPropia
ELIMINACIÓN
Laeliminaciónnoseaplicaconlasentenciadeletecomoestradicional,sinoconupdate,seestáaplicandounaeliminaciónlógica,quepermiteconservarlosdatosparaconsultashistóricas.
AutoriaPropia
38 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
ExisteunarchivoadicionalenestemodelollamadoClienteDAO(DataAccessObject),elmodelo(patróndediseño)DAO brinda la posibilidad de almacenar toda la lógica del negocio, para este caso particular losmétodos deinsertar,consultar,modificar,eliminaryverificar,estearchivoseubicaenelpaquetecontrol.
Seubicaránenelmismoordendelosprocedimientosalmacenadosparamayorclaridad.
AutoriaPropia
en laparte inicialde laclaseseencuentraunavariable rta iniciadaencero (0),estavariableseráunaswqueretornarasiexisteonounvalorconsultado,laclaseConnectionpermitelaasignaciónaunavariablecnndedelmétodogetConnectiondelaclaseConexión,porultimoseinstancia laclaseClientequecontienelosgettersysetters.
VERIFICAR
EstemétodoverificarcontienelasentenciaPreparedStatement,estainstrucciónpermitetenerunasentenciaSQLde fácil lectura, al final de la sentenciapodríamos colocaruna instrucción tradicional o comoeneste casoelllamadoaunprocedimientoalmacenado,elsignodeinterrogación(?)indicaelparámetroconelquevatrabajar,enlasiguientelínease“traduce”esesignoaquevalorcorresponde.
EnlaterceralíneaseencuentraResultSet,estainstrucciónpermiteelalmacenamientodeunaconsultaSQLenmemoria.
EnlamismalíneaseencuentralainstrucciónexecuteQuery,acáseesteejecutandolainstrucciónSQLselectconlosparámetrosquesehayanespecificado,otrainstrucciónmuycomúnesexecuteUpdatequeaplicaraparalasdemássentencias.
39 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Lasentenciarta=rs.next()?1:0;nospermitirádeterminarsielregistroconsultadoexiste(1)onoenlatabla(0),yalfinalretornaraesteresultadoalformulariodondeseprecederáconlassiguientestareas.
LareferenciaregistroCliente.setStringdeterminaeltipodecampoqueestallegando(carácter),sifuerauntipoenteroserepresentaríaconsetInt,contiene2parámetros,elprimeroeslaposiciónoelordendelosparámetrosyelsegundoelvalororeferencia.
Autoriapropia
INSERTAR
Lainserciónnoretornaningúnvalor,perorecibelareferenciadelaclaseclientedondesepodránactualizaryenviarlosvaloressolicitados.
En la instrucción setString se encuentran los dos parámetros mencionados anteriormente, el orden de losparámetrosyencliente.getCedulaCliente(),estaopcióngetCedulaCliente()estátomandoelvalordelaclaseCliente.
AlfinaldeltryapareceelexecuteUpdatequeprocedeaejecutarlasentenciaSQL.
40 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoríaPropia
CONSULTAR
SeaplicalainstrucciónsetCedulaCliente,estainstrucciónactualizalainformaciónenlaclaseCliente.
rs.next(),sielsistemaingresaenestainstrucciónindicaqueexistendatosparaserconsultados.
AutoríaPropia
42 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
EnelpaqueteutilidadseubicaráestearchivoFacade
AutoriaPropia
ElfacadeseubicaránprocesosmuycortosasociadosallamadosdelosmétodosdelDAO
AutoriaPropia
43 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Acáseencuentranlos5procesossegúnlos5métodoscreadosenelDAO,tienenlamismaestructurayseinvocaentodosloscasoselDAO,todaslassolicitudesprovienendelformulariodetrabajo.
ParafinalizaresteprocedodeCRUDquedapendientelainvocacióndelastareasdesdeelformulariodetrabajo,paraestecasoFrmCliente,presionandoelbotónemergentesobrelacedula(Claveprimaria).
AutoriaPropia
Sedesplegaráelcódigodevalidacióndeestecampo(todaslascajasdetextodebendecumplirconunestándardevalidaciónmínima.
AutoriaPropia
44 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Enestecódigoseestévalidandoqueelcamponoestevacíoyquecumplaunalongitudmínimade6cifrasyunamáximade10,enelelsequequedaabiertoiralacodificaciónoperacional
AutoriaPropia
Lavariableswrecibeunvalor(0o1)quedeterminarsiexisteonounregistro,esteprocesoserealizamedianteel archivo facade en elmétodo verificar Cliente, este proceso a su vez invoca elmétodo verificar de la claseClienteDAOquerealizaelrecorridodentrodelBDyarrojaunarespuesta.
Enelswitchseevalúaqueoperaciónseaplicara(1nuevo,2consultar,3modificary4eliminar),dentrodeelseevalúa sw, para este ejemplo si el resultado es uno (1) indica que la cedula ya existe y no se podrá ingresarnuevamentesiescero(0)indicaqueelregistronoexisteysepodráingresarunnuevoregistro,esporestoquesellevaelfocoalacajadetextodenombre.
AutoriaPropia
45 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
AutoriaPropia
BOTÓNGUARDAR
Elbotónguardaryateniaunacodificaciónprevia,estacodificaciónseráampliadaconelfinderealizarelpasodelosdatosamodificaryainsertar.
46 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
EnelFrmCliente,alfinaldelacodificaciónfaltalacreacióndelmétodomostrar,estemétodorecibelainformaciónconsultadaylallevaalascajasdetexto.
AutoriaPropia
Esteeselprocesofinal,elaplicativoesta100%terminadoysepodríaponeraprueba.
CREACIÓNDEUNMENÚ
Después de tener el primer CRUD completo de una tabla se presentan nuevas necesidades, dentro de ellasencontramosunade¿quéhacemoscuandotengamosvariosCRUDsynecesitemosllamarlodeformadinámica?,larespuestaaestosepuederesolverdevariasmaneras,peroexisteunaquenosbrindaJava,losmenús!.
Enelpaquetevistasecrearáunnuevoformulario(JFrame)conelnombredeMenuPrincipal
47 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
SeagregaunLayoutcomoenelcasodelprimerformulariocreado,paraestecasosetomaunAbsoluteLayout,enlapaletadecontrolesseencuentraunapestañallamadaMenú
AutoriaPropia
48 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Deestasopcionesserequierentresdeellas, JMenuBar(creaunabarrademenúen lapartesuperior), JMenu(especifica cadaopciónprincipal delMenúhorizontal), JMenuItem (especifica cadaunade las opciones a serinvocadas).
CREACIÓNDEUNAJMENUBAR
AutoriaPropia
SeleccionandoelcontrolJMenuBaryubicandoelcursorlevementearribaeliniciodelaBarraMenúapareceráestecontenedorquedandoasí:
AutoriaPropia
Sobreestecontenedorsecolocaránlasopcionesdelmenúprincipal,estaserealizaráconlaopciónJMenu.
49 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Sepodránagregartodoslosqueseconsiderennecesariosyelespaciopermita
Porúltimo,seprocedeacrearcadaunodelosítemsquecontendrácadatítuloPrincipal(JMenuItem)
AutoriaPropia
Lalínearojaesfundamentalcomoguíadelaubicacióndelmenú,cuandoapareceverticalindicaqueesunocomoenelJMenu,cuandoparecehorizontalindicaqueesdesplegable,enestecasodebajodeMaestros,paraestecasosecrearan2,unodeClienteyotrodeSalir.
50 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
PROGRAMACIÓNDELBOTÓNSALIR
ConelbotónemergentesobrelaopciónSalir,seleccionelasopcionescorrespondientes.
AutoriaPropia
51 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Dentrodelaopciónquesegeneraseagregalainstrucción
AutoriaPropia
Estainstrucciónpermitiráelcerradodelproyecto
Paralainvocacióndecadaopcióndelmenúseaplicaránlosmismospasosconelbotónemergente,paraestecasosobrelaopcióndecliente.
AutoriaPropia
Esteseaplicaráparatodosloscasosqueconformenelmenúysetendríaunprocesocentralizadoparaelllamadoylaadministracióndeloscomponentesdelproyecto.
COMBOBOX
LoscomboBoxhacenpartedeungrannúmerodecontrolesdisponiblesenlaplataformadeJava,nospermitecolocardatospredeterminadosohacerunlistadodeopcionesqueprovienendeunatabla
COMOCREARYLLENARUNCOMBOBOX
Aprovechandolatabladefacturaquetieneunareferenciahacialatablaclienteveamoselproceso
DISEÑOINICIAL
52 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Enesteejemplosemuestranlos3primeroscamposdelatabla,7botones,doscajasdetextoyunComboBox,paraesteúltimoseutilizaráelnombrecboClienteyseaplicarácomouncontroltipocampo,paraestoseleccioneelcomboconelmenúemergente,rename…yluegoaplicacambiosdespuésdeseleccionarlaletraF.
CreacióndeunmétododellenadodelComboBox
AutoriaPropia
Enestemétodoseaplicantodoslosconceptosvistospreviamente,paraelllenadodelcomboaplicadentrodelciclomientrasdondeseencuentracboCliente.addItemyelcampoconelquesedeseallenarestecombo.
Paralainvocacióndelmétodoseubicaalfinaldelconstructordelaclasedelformularioyquedaríaasí:
53 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
LosComboBoxestáncompuestosporel valoramostrar,enestecaso losnombresde los clientes, cuandoserequierealmacenarelidentificadordecadaclienteenlatablareferencialseaplicaráotrométododelasiguienteforma.
AutoriaPropia
Enelbotóndeguardarseaplicaríaestevalor.
54 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
LavariableposicionRegistroesunindexdelaubicacióndelnombredelclienteseleccionado,segúnestosebuscaenelmétododecboCliente,a lavariablecedulase leasignaráelvalorque identificaesenombreysepodráguardar
JTABLE
UncontroladicionalparaesteproyectosonlosJTable,soncontrolesquenosmostraranlosdatosquedeseamossegúnunaconsultaounlistadogeneraldedatos,conestopodríamosrealizarmúltiplesoperaciones,dentrodeellaseliminar,facilitarlamodificaciónentreotras.
Paraesteejemplosecrearáunnuevoformularioenelquesepuedanvisualizarlosvaloresingresadosenunatabla,tengapresentequeestosepuedehacerenunformulariocomoeldefacturaparaadicionarlosdetallesdeesta,oeneldeclienteparalistartodoslosquesetenganenunmomentodado.
CreeunformulariollamadoFrmClienteTotales,agregandoelLayoututilizadoanteriormente(AbsoluteLayout)
Agregueuncontrol(componente)JScrollPanequeestáubicadoenlapestañaContainers,queocupeelanchodelformularioymásomenosunos5centímetrosdelalto
AutoriaPropia
55 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
LuegoseleccioneelJTable,ubíqueloencimadelcontrolagregadorecientemente
AutoriaPropia
56 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
SeleccioneelcontrolJTableyenlaventanadepropiedadeselijalaopciónmodel
AutoriaPropia
EnlapartesuperiorderechaseleccióninsertparaagregarlostítulosdelascolumnasquellevaraelJTabla
AutoriaPropia
ParaestecasoseagregaránCedula,Nombre,DirecciónyTeléfonoyluegoseleccioneelbotónOK
57 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
DespuésdetenereldiseñodelformularioconelJTable,procedaacolocarleelnombredelcontrol,paraestoseubicaenlaspropiedadesyenlaprimaraopciónvariable,coloquetblCliente,esteprocesotraeunnuevotema,sellamaArrayList,tambiénconocidocomounarreglodinámico,manejaunascaracterísticassimilaresalosarreglostradicionales,peroconalgunasventajasenelmanejo,enlos“índices”,laadiciónyeliminacióndeinformación.
ElprimerpasoesubicarseenelarchivoDAOdeclienteyprocederacrearunnuevométodo.
AutoriaPropia
58 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Estemétodo inicia conArrayList <Cliente>,esto indicaque retornaraunarreglodinámico,elnombredeestemétodoeslistarClientesynotieneparámetrosdeentrada,enlasegundalíneaseencuentranuevamenteArrayList<Cliente>clientes,esteclienteseslareferenciaoelelementoqueseencargaderecolectartodoslosregistrosdelatablaquecumplanlacondicióndeestaractivos,lasdemáslíneasyasonconocidashastalapenúltimalíneadetryenlaqueaparecelareferenciaclientesnuevamenteacompañadadelmétodoadd,esacádondellevamosunregistroaelarrayList,porultimoretornamosclientes,tenganpresentequeacásoloseestállenadounarreglodinámicoconlainformación,todavíanosemuestraenpantalla.
Comosegundopasoseubicaráenelarchivofacadeofachadayserealizaráelllamadoelmétodoanteriormentecreado.
AutoriaPropia
SeindicanuevamentequeseretornaraunArrayList
Ycomotercerpasosecrearáunmétodoparamostrarlainformaciónenpantalla,esteserealizaenelformulario,enlaparteinferiordelcódigoantesdelaúltimallave.
AutoriaPropia
59 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
EnestemétodoencontramosnuevamentelareferenciaaunArrayListconlaaplicacióndelelementodeclientes,luegoapareceelllamadodelafachada
EnlaterceralíneaseencuentraladefinicióndelJTabladondesedepositaránlosdatos,secreaotrareferenciadelatblClientellamadomodelo.
Enelcicloparaserealizaunrecorridodetodoslosdatosamostrar,parasaberlatotalidaddelosdatossetieneelmétodosize,adicionaldentrodelciclosetrabajaconlaclaseVectoryseprocedea“pintar”lainformaciónenelJTable,elresultadoeselsiguiente.
AutoriaPropia
60 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
4.3 TEMA 2 POOL DE CONEXIONES UnpooldeconexionesesunconjuntolimitadodeconexionesaunaBD,unpoolpermitecentralizarycontrolarelaccesoquesetengaporpartedelsistema,conestopodemosconcluirquelacantidaddeconexionesabiertaseslimitada teniendo en cuenta que estas consumen muchos recursos, memoria y tiempo de procesador, esteprocesoademafavorecelaescalabilidaddelaaplicación.
DentrodelasventajasquesepuedenobservarenunPooldeConexionesademásdelasyadescritasestáelpoderacceder o cambiar algunos parámetros sin necesidadde volver a compilar el aplicativo, cuando creamos unaconexióntradicionalcomolavistaenlaprimeraunidadestatienelosvalores“quemados”,estoquieredecirqueelconector,usuario,contraseñaylabasededatosestánpredeterminados,sisucedealgúncambiodespuésdecompilaryempaquetarelaplicativohabráquevolverarealizarelproceso,paraevitarestosdatos“quedamos”seprocedeacrearunarchivojdbc.propertiesenlaraízdelsrcconlasiguienteestructura.
AutoriaPropia
61 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
PosterioraestearchivosecrearáunaclasellamadaConexion.javaconlasiguienteestructura.
AutoriaPropia
Obsérveseque la clase recibeunosparámetrosqueestánubicadosenel archivoproperties luegodeabrir elarchivojdbc,seleeránlosdatos,enestecasorutacontieneeljdbcylaBasedeDatos,elusuario,lacontraseñayelcontrolador,estoharáquesepuedamanipulardeunaformamássimpletodoelsistema.
Posterioralaúltimaclaseseagregaráelsiguientefragmentodecódigocomplementario
62 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
4.4 TEMA 3 REPORTES Lacreacióndereportesenunaplicativoseconvierteenunanecesidadfundamental,eslaposibilidaddeexpresarlosresultadosdeunasentenciaSQLenpapeloenundocumentoelectrónico,medianteunarchivopdf,xlsx,html,docxentreotrasextensiones.
63 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Paralageneracióndereportesseutilizarálaherramientajasper-studio,esunIDEmuysimpledemanejarydegranalcance.
ElJasperStudiotieneunaspectomuysimilaraleclipse,observémoslo
AutoriaPropia
CONFIGURACIÓN
ParalaconfiguracióndelJasperserequiereespecificarelmotordebasesdedatosqueseestautilizandoenelproyectodeEclipse,paraestoseseleccionaelsiguienteicono(CreateDataAdapter)
AutoriaPropia
64 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
SeseleccionaDatabaseJDBCConnectionyseeligeelbotónNext
65 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Enestaventanavanlasprincipalesopcionesdeconfiguración
Name:especificaunnombredeconexiónparacadaproyectoocadamotordebasededatos
JDBCUrl:solosecambiadespuésdelapalabralocalhost/dondeseubicaelnombredelabasededatosdetrabajo
Username:nombredeusuariodeMySQL
Password:contraseñadeMySQL
LuegoseseleccionanenlaparteinferiorlapestanaDriverClasspath
66 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
MediantelebotónAddseagregaeldriveroconectorqueseestautilizandoparacomunicaraelproyectodejavaconMySQL
Cuandoestoestáestablecido,sepruebamedianteelbotónTest
67 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Ysiescorrectoelprocesodeberávisualizarseelmensajedesatisfactorio,Ok,yFinish.
CREACIÓNDEUNREPORTEENBLANCO
AutoriaPropia
68 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Seencuentranmuchostiposdereportes,algunosdeellospreconfigurados,conformatosestablecidos,paraestecasoseutilizaráunoenblancotamañocarta
AutoriaPropia
SeestableceráunoconelnombredelistadoClientes
69 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Seencuentraconlaextensiónjrxml,alserunarchivoxmlsepodráeditarmanualmenteomedianteasistente.
ESTABLECERSENTENCIASQL
AutoriaPropia
MedianteeliconoDatasetandQueryEditordialogsecrearálainstrucciónSQLdetrabajo,inicialmenteparaunasentenciageneral.
70 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Enlaesquinasuperiorizquierdaseseleccionaelnombredelaconexiónestablecidaparaesteproyecto(Conexion),eneldialogoprincipal seescribe la sentenciaSQLsinpuntoycoma (;)al finalparaprobarlayestablecerlaseseleccionaelbotónReadFields, alpulsarloaparecerán los camposeneldialogode laparte inferior,OKparaterminar
ÁREADETRABAJODELREPORTE
71 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Eneláreadetrabajoseencuentranvariosítemsenungristenue,cadaunadeellasparauntemapuntual
Title títuloprincipalocabeceradelaempresa
PageHeader títulossecundarios
ColumnHeader títulosdeloscamposocamposparainformaciónmaestra
Detail1 detallado de la información, esta área representa un ciclo con la información de lasentenciaSQL
ColumnFooter informacióndepiedepagina
PageFooter PiedePagina
Enelladoderechoseencuentranloscontrolesconsusrespectivaspropiedades
72 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Yenelladoizquierdootroscomponentescomocamposyparámetros
DiseñoBásicodeunReporte
SeleccioneelelementoStaticText(label)delladoderechodeloscomponentes(Elements)yubíqueloeneláreatenuedeTitle
73 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Editeelcontrolycoloqueeltituloomensajedeseadoparaesteinforme,sepuedencambiartiposdefuentes,tamañoyalineación
AutoriaPropia
Elrestodeldiseñodependeexclusivamentedelasnecesidadesvisualesycreativasquesedeseenaplicar,paraestecasoseprosigueconlaubicacióndeloscampos.
AlladoizquierdoseencuentraunaherramientallamadaFields,aldesplegarestaopciónaparecenloscaposdelasentenciaSQLysepodránarrastraraláreadeDetal
AutoriaPropia
74 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Disminuyalosespaciosdelasáreasparaunamejordistribucióndelosdatos
AutoriaPropia
Guardeloscambiosycompileelarchivo(CompileReport)
AutoriaPropia
75 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Esteeselmensajedecompilaciónylarutadeubicación
VISUALIZACIÓNDELREPORTE(PREVIEW)
AutoriaPropia
ElijalapestanaPreview
AutoriaPropia
EsteeselinformegeneradoporelJasper,eneláreamarcadaenlapartesuperiordespliegueyelijaelformatodelarchivo
76 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
PARAESTEEJEMPLOSEUTILIZARÁPDF
Recompileelproyectoparaquetomelosúltimoscambiosyelreporteestálistoparaservinculadoalproyecto
Elarchivocreadoesdeextensiónjasper,elotroarchivoqueelsistemagenerajrxmlesunarchivoeditable.
CREACIÓNDEUNREPORTECONPARÁMETROS
LacreacióndeunreporteconparámetrossolocambiaenlasentenciaSQL,todoslosprocesosdediseñosonlosmismosdelreporteanterior.
CREACIÓNDEUNPARÁMETRO
AutoriaPropia
77 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
EnlapartebajadelaventanaDataSetandQueryeditordialogseencuentraunapestañaParameters,elijaelbotónaddyescribaelnombredelparámetro
AutoriaPropia
VINCULACIÓNDEUNPARÁMETROALASENTENCIASQL
AutoriaPropia
Lasentenciasecomplementaconelparámetro,paraesteseutilizanlossímbolos$P{parámetro}
DespuésdeaplicarelbotónReadFieldsmostraraloscamposenlaparteinferioryestalistoelprocesoparaeldiseño.
78 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
DATOCONSULTADO
AutoriaPropia
AntesdevincularlosreportesalproyectodeFacturaciónsedebetenerpresentaunrequerimientoimportante,adicionarlaslibreríasqueacompañenesteproceso,laslibreríasoarchivos.jarqueserequierenson
79 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
PuedecrearunacarpetadentrodelproyectodondelosalmaceneyluegosevinculanmediantelaopciónBuildPath
Creeunpaqueteinformesyarrastrelosarchivosjasperaestepaquete
AutoriaPropia
80 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
CREACIÓNDEUNACLASEINFORMESENESTEMISMOPAQUETE CONFIGURACIÓNDELACLASEINFORMES
AutoriaPropia
MÉTODODELLAMADODEUNINFORMEGENERAL
AutoriaPropia
81 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
MÉTODODELLAMADODEUNINFORMECONPARÁMETROS
AutoriaPropia
Elinformeespecificopodráserllamadodesdeelformulariodeclienteyelgeneraldesdeelmenúprincipal,paraelprimerobastaráconconsultarunacedulayluegoseleccionarelbotóndeinforme,tengapresenteinstanciarlaclaseinformeylainvocacióndelmétodoquerequiere.
4.5 TEMA 4 DOCUMENTACIÓN Desarrollar aplicativos no comprende solamente el diseño de formularios, validaciones, y los procesos defuncionamientodelaplicativo,esmuchomásqueesto,hayquetenerpresentelaingenieríaderequerimientos,
82 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
ellevantamientodedatos,elestudiopormenorizadodeloquesepretendehacerycómohacerlo,ademásdelosmanualesparaelusuariofinalyladocumentaciónolosmanualesparaelprogramador.
Javatieneunaparticularidadmuyinteresantequesedenominadocumentación,consisteenqueamedidaqueserealizaelcódigodelaplicativosepuederealizardichadocumentaciónyalfinalestesecompilaytendríamosunformatodegranayudaparaelcontroldelaplicativo.
Paragenerarestetipodeayudasdelprogramador,hayquetenermuypresenteaquienvadirigidoesteproceso,desarrollaresyafines,sonprocesosmuytécnicosquedeberíandeubicarseentodoslosprocesosquecomprendeneldesarrollo
IDENTIFICACIÓNDEUNCOMENTARIOY/ODOCUMENTACIÓN
En losaplicativosdedesarrollocercanosalC++comopuedenser JavaScript,entreotroscoincidenenalgunossímboloscomoson
//quepermiteelcomentariodeunalíneaoanularunalíneadecódigo
/*
Esteotrosímbolopermiteelcomentariooanulacióndemúltipleslíneasdecódigo
*/
/**
Estainstrucciónapesardequeessimilaralanteriorseutilizapararepresentarcomentarios
*/
IDENTIFICADORESDELOSCOMENTARIOS
@author
Especificaelautor(es)delaplicativo,moduloofragmentodecódigo
@version
Versióndelaplicativo,móduloofragmentodecódigo
@see
Indicaquereferenciasaotrasclasesométodosexisten
83 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
@param
Nombredeparámetroydescripcióndeusoysignificado
@return
Describeloquesedevuelve
@exception
Nombredelaexcepciónqueseestáutilizandoyexcepciónquepuedelanzarse
@throws
Nombredelaexcepciónqueseestáutilizandoyexcepciónquepuedelanzarse
Ejemplo
AutoriaPropia
SegeneraunadocumentaciónbásicaparaunodelosmétodosdelarchivoDAO,seespecificaelautor,laversión,el parámetro, el retorno y una excepción, hay que tener presente que la documentación no debería de seropcional,todoslosprocesosquesehagandebendellevarloconelfindecontrolaryasegurarunfuncionamientooptimo.
Cuandoserealizaelprocesodedocumentación,seprocedealaimplementacióndeeste.
84 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
EnelmenúprincipalseseleccionalaopciónProjectylaopciónGenerateJavadoc…
85 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Seespecificaelarchivoquecrearaladocumentación,javadoc.exequeseubicaenlacarpetabindelJDK
86 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Sedauntítulodetrabajo,ysepodráasignarunarchivodehojadeestilossinosedeseatrabajarconelformatopordefectodeljavayluegoelbotónFinish
ElsistemasecrearáconunformatoHTMLdentrodelproyectoqueseestátrabajandooenotrarutasiestaseespecificópreviamente.
87 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Dentrodelacarpetadocencontramos
AutoriaPropia
Ypodemosejecutarelarchivoindex.html
Encontramosalgunosapartescomoelsiguiente
88 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Enelaparecenlosmétodosutilizados,elnombreyelparámetroquerecibe
Yalgunosapartesdeloqueseespecificóenelmétodo
AutoriaPropia
89 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
4.5.1 EJERCICIO DE APRENDIZAJE
Nombredeltallerdeaprendizaje:CRUD Datosdelautordeltaller:CesarAugustoJaramilloHenao
Escribaoplanteeelcaso,problemaopregunta:
SerealizaunCRUDaplicandodistintosmodelos,estructurasypatronesdediseño,identifiquequecapasseutilizanyquepatronesseaplican.
Solucióndeltaller:
LascapasutilizadassonModelo,VistayControl,lospatronesqueseaplicansonFacade,DAO
90 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
4.5.2 TALLER DE ENTRENAMIENTO
Nombredeltaller:Hospital Modalidaddetrabajo:
Actividadprevia:
Realicecondetalleelejercicioplanteadoenlaprimeraunidad
Describalaactividad:
Creeunmodelorelacionaldel funcionamientobásicodeunhospital,enelquetomeelementosesencialesdepaciente,medico,enfermedades,medicamentos,incapacidades,cirugías,apliqueestemodeloenellenguajejavaconlosconceptosdereportes,documentación,pooldeconexiones
91 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
5 UNIDAD 3 HILOS
5.1 RELACIÓN DE CONCEPTOS
Componentes:Sonloselementosquepermitenrealizarlautilizacióndeloshilos
Métodos:Espaciodetrabajoencódigopararealizardistintastareaslógicas
Run:Métodoprincipalqueejecutaunhilo
Start:Métodoquedainicioollamadoaunmétodoprincipal
Sincronización:Organizacióndelllamadodelosprocesos
92 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
OBJETIVOGENERAL
AprenderautilizarlosHilos,herramientafundamentalenlaPOO,lascaracterísticasdeaprovechamientodelrelojdelsistemaylascaracterísticasdelprocesador.
OBJETIVOSESPECÍFICOS
Identificarlosprincipalescomponentesdelmanejodehilos Identificarqueesunhilo Desarrollarhabilidadesdelaubicacióndeloshilosyqueventajasprestasenlaetapadeprogramación.
5.2 TEMA 1 DEFINICIÓN Y OBJETIVOS Enlosaplicativosquesehandesarrolladohastaesaetapaestándiseñadosdeformasecuencial(líneaporlínea),enmuchasocasionesseencontraranqueestetipodedesarrollonoeselmásútilomásaconsejableporlalentitudquepuedegenerarylapocaefectividadquemostrara,paraestaetapasepasaraauntemadeconcurrenciaodeprocesosparalelosllamadoshilos(threads).
5.3 TEMA 2 COMPONENTES Existeunagrancantidaddecomponentesdeloshilos,perodentrodelosmáscomunesparaestatareason
Start()inicialaejecucióndeunhilo,esteseubicaenelrun
Run()métodoprincipaldelhilo
Runnable()implementacióndelainterfaz
Threadesunaclasepadredelaquedependeránuestrohilo
93 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
5.4 TEMA 3 IMPLEMENTACIÓN DE LA INTERFAZ RUNNABLE EnjavaloshilosheredandelaclaseThread,deestaheredaelmétodorun,enestemétodoesdondesedebedeprogramarelprocesoquedeseamos.
Dentro de estemétodo se encontrará unmétodo sleep que representa dormir o esperar para ejecutar otroproceso.
Paraelejemplosemostrarán5nombresymediantelafunciónrandomsegeneraráuntiempodeesperaentre0y9999milisegundos
AutoriaPropia
94 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
Elprocesoprincipalseejecutadesdeelmétodorunqueeselprincipalparaestatareaparticular,enelvoidmainseespecifican5hiloscon5nombresylarespectivaejecuciónconelmétodostart()queinvocaelmétodorun(),estatomaraunvaloraleatorioymostraralainformación.
RUNNABLE
DentrodelaclaseThreadseimplementalainterfazRunnablequeheredadelmétodorun().
Acoplemoselejemploanterioraestainterfaz
AutoriaPropia
95 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
EnesteejemplolaclaseEjemploHilonoheredadeThreadperosiimplementalainterfazRunnabledelaqueaplicaunasobreescrituradelmetodorun().
Estanuevaversiondelejemploesmaspracticaquelaprimeraymasflexibleensuusoalnolimitarlaherenciadelaclase.
5.5 TEMA 4 CICLO DE VIDA Loshilosothreadtienevariasetapas,lasmásllamativassonlainstanciaylaejecución,peroexistenotrasetapashastafinalizaromorir,todoesterecorridosellamaciclodevida.
Cuandoseinstanciaunhilosedenominaqueestacreado,cuandorealizamoselllamadoseaplicaelmétodostart(),ypasaalestadodelecturaoready,luegodeesteestadollegaelrunningqueestaadministradoporelsistemaoperativo,existenotroscomoelscheduleroyield.
96 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Cuandoestáenrunningestáhaciendousodelprocesador,elhilopuedeejecutarlaúltimalíneadelmétodorunyfinalizaría la tarea programada, pero también se pueden ejecutar otros métodos como wait o sleep que semencionóenelejemplovistoanteriormente.
Sielhiloentraenelmétodowaitsaldrádeelcuándoseejecuteunodelosmétodosnotifyonotifyall.
Siestádormido(sleep)saldrácuandofinaliceeltiempodeestardormido
5.6 TEMA 5 PRIORIDADES Dentrodelasprioridadesylaasignacióndemayoromenorposibilidaddeejecuciónsedeterminamediantelainstrucciónscheduler,esteprocesofavorecealmomentodeasignareltiempodelprocesador,enestecasoseencuentran elementos como Thread.MIN_PROPERTY o Thread.MAX_PROPERTY, estos procesosmanejan unasconstantesquevande1a10
Ejemplo
98 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
HagalapruebaconunMIN_PROPERTYyveraloscambiosenlasprioridades
5.7 TEMA 6 SINCRONIZACIÓN Enmuchasocasionessepresentaránsituacionesenlasqueunhilointenteaccederalosrecursosdeotro,estopuedeocasionarproblemasporquepodríaafectarelresultadodefinitivo,siunhiloestáhaciendounasumayotrounadivisiónlosresultadosprobablementenoseránlosesperados,esacádondeseprocedearealizarunprocesodesincronizacióndetareas.
Lasentenciautilizadaparaestetipodecasoessynchronizedypermitiráquelosmétodosesténrelacionadosconelrelojdelprocesador.
Unejemplodeunmétodosincronizadoseriaelsiguiente.
99 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
AutoriaPropia
5.7.1 EJERICICIO DE APRENDIZAJE
Nombredeltallerdeaprendizaje:componentes Datosdelautordeltaller:CesarAugustoJaramillo
Escribaoplanteeelcaso,problemaopregunta:
Consideraquetrabajarconhilospuedemejorarelrendimientoparaaplicacionessimplesosoloparaaplicacionescongrancargadeprocesos
100 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
Solucióndeltaller:
Enuntrabajosimplesepuedenaplicarhilos,aunquenoseverátanrepresentado,cuandounaplicativotienegrancantidaddeprocesosserámássignificativoydemayorusoéltrabajaconhilos.
5.7.2 TALLER DE ENTRENAMIENTO
Nombredeltaller:Primos Modalidaddetrabajo:Individual
Actividadprevia:
Elaborarunaplicativoquecalculenumeroprimos
Describalaactividad:
Imprimirlosprimeros500númerosprimos,calcularconysinhilosycompareladiferenciaentiempo
101 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
6 PISTAS DE APRENDIZAJE Recuerdeque:programaciónwebesunrecursomuyamplioquemanejamúltipleslenguajesyelementos
Tengaencuenta:laprogramaciónutilizadaesbasadaenjavatantoparajavaSEcomoparaJavaEE
Traigaalamemoria:quelamayorpartedecomandoeinstruccionessonlosmismosenjavaSEqueenjavaEE
102 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL
7 GLOSARIO • JavaSE:eslaversiónestándardejava,estaversióneslabasedetodoeltrabajoenjava
• JavaEE:eslaversiónEnterpriseoempresarial,esutilizadaparalaprogramaciónweb
• Eclipse :esunIDEdedesarrolloquepermitefacilitaralgunastareasdelaprogramaciónenJava
• Proyecto:esunconjuntodearchivosquecomponenunaaplicación
• Paquete:esunáreadetrabajoquepermitelaclasificacióndearchivosoclases
• DAO:esunmodelodedesarrolloopatróndediseño,standarddetrabajo
• Getters/settershacenpartedeunaclaseprincipalquepermiteaccedealainformación
• Método:espaciodecódigoquerealizaunafuncionaespecifica
• Façade :patróndediseñoqueadministraunconjuntodeclases
• Hibernate:FrameWorkdejavaquepermiterealizarprocesosstandardowebdeunaforma
massimplificada