lenguaje de programaciÓn ii - …imagenes.uniremington.edu.co/moodle/módulos de aprendizaje... ·...

103
LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

Upload: ngohanh

Post on 20-Sep-2018

219 views

Category:

Documents


1 download

TRANSCRIPT

LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

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

5 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

1 MAPA DE LA ASIGNATURA

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

8 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

• EjemplodeSingleton

AutoriaPropia

AutoriaPropia

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

22 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

AutoriaPropia

AutoriaPropia

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.

26 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

Autoriapropia

CambieL(local)porF(fields)

AutoriaPropia

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

28 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

AutoriaPropia

LLAMADODELOSMÉTODOS

AutoriaPropia

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

41 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

MODIFICAR

AutoríaPropia

ELIMINAR

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

97 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

AutoriaPropia

AutoriaPropia

Obtendráunresultadoasí

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

103 LENGUAJE DE PROGRAMACIÓN II TRANSVERSAL

8 BIBLIOGRAFÍA • Eckel,Bruce.(2008).PiensaenJava,Madrid.ISBN:978-84-8966-034-2

• Villalobos,Jorge(2006),FundamentosdeProgramación,Bogotá.ISBN:970-26-0846-5

• Deitel,Paul.(2012),Java,comoprogramar,México.ISBN:978-607-32-1150-5