fundamentos de java

Upload: jhon-suarez

Post on 08-Jul-2015

68 views

Category:

Documents


0 download

TRANSCRIPT

ProgramacinJAVANivelInicial

FundamentosdeJava

1ExplicandolaTecnologaJava EstemduloeslaintroduccinallenguajeJava.Alolargodelmismodescribiremos losconceptosfundamentalesdellenguajedeprogramacinJava,aprenderemosdelos tresgruposdeproductosdelatecnologaJavayresumiremossusetapasdeciclode vida. 1.1Objetivos Unavezfinalizadoestemdulo,ustedsercapazde: DescribirlosconceptosfundamentalesdellenguajedeprogramacinJava ListarlostresgruposdeproductosdelatecnologaJava Resumircadaunadelassieteetapasdelciclodevidadeunproducto. EstemduloofreceunavisingeneraldelatecnologaJava,delaprogramacinbasada enlatecnologaJavaydelciclodevidadeldesarrollodeunaaplicacin. 1.2VerificacindelProgreso Escribaunnmero(entre1y5)enlacolumna"Alcomenzarelmdulo"paracalificar sucapacidadparallevaracabocadaunodelosobjetivosdeestemdulo.Unavezque hayafinalizadoestemdulo,usteddeberreevaluarsuscapacidadesydeterminarel aprendizajeadquiridoparacadaobjetivo. ElresultadodeestacomparacinayudaraSunEducationalServices(SES)enla efectividaddeestacapacitacin.Digaasuprofesoraquellostemconlamenor calificacin(un0oun1enlacolumnaderecha),paradeterminarsiesnecesario presentarmaterialadicionaldurantesusclases.Adicionalmente,estainformacinser reenviadaalgrupodedesarrollodecursosdeSESparafuturasrevisionesdelcurso.

1.3Relevancia DiscusinLassiguientespreguntassonrelevantesparacomprenderdequsetratala tecnologaJava: Culessudefinicinparalassiguientespalabras? Seguridad OrientacinaObjetos Independencia Dependencia Distribucin Culessonlasetapascomprendidasenlaconstruccindealgunacosa,comopor ejemplounacasaounmueble? 1.4RecursosAdicionales RecursosadicionalesLassiguientesreferenciasproporcionaninformacinadicional sobrelostemasdescritosenestemdulo: JavaTechnology:AnEarlyHistory.(Online).Disponibleen: http://java.sun.com/features /1999/05/birthday.html Unahistoriadelquintoaniversariodelgrupoylaspersonasqueparticiparonenel desarrollodelatecnologaJava. TheJavaTutorial.(Online).Disponibleen: http://java.sun.com/docs /books/tutorial/ Unaguaprcticaparaprogramadoresconcientosdeejemploscompletosyen funcionamiento. 1.5ConceptosFundamentalesdelLenguajedeProgramacinJava EllenguajedeprogramacinJavaseoriginen1991comopartedeunproyectode investigacinparadesarrollarunlenguajedeprogramacin,llamado"Oak",que permitierahacerunpuenteparadisminuirlabrechadecomunicacinentrevariostipos dedispositivoselectrnicos,comoporejemploreproductoresdevideocasettes(VCR)y televisores.Especficamente,unequipodedesarrolladoresdesoftwarealtamente calificado(denominadoelequipoVerde)queracrearunlenguajedeprogramacinque permitieraalosdispositivoselectrnicoscondistintasunidadescentralesdeproceso (CPU)compartirlosmismosbeneficiosdelsoftware. Elconceptoinicialfalldespusdevariosintentosconlascompaasfabricantesde dispositivoselectrnicos.ElequipoVerdefueentoncesorientadoabuscarotromercado paraelnuevolenguajedeprogramacin.Afortunadamente,comenzlapopularidaddel

WorldWideWebyelequiporeconociqueellenguajeOakeraperfectopara desarrollarcomponentesmultimediaparamejorarlaspginasWeb.Estaspequeas aplicaciones,denominadasapplets,constituyeronelprimerusodellenguajeOakylos programadoresusuariosdeInternetadoptaronloqueseconstituiraenellenguajede programacinJava. EllenguajedeprogramacinJavafuediseadoparaser: Orientadoaobjetos. Distribuido. Simple. Multihilo. Seguro. Independientedelaplataforma. 1.5.1OrientadoaObjetos EllenguajedeprogramacinJavaesunlenguajedeprogramacinorientadoaobjetos (POO)porqueunodelosprincipalesobjetivosdelprogramadorentecnologasJavaes crearobjetos,fragmentosdecdigoautnomo,quepuedaninteractuarconotrosobjetos pararesolverunproblema.LaPOOcomenzconellenguajedeprogramacin SIMULA67en1967ycondujoalacreacindeotroslenguajesdeprogramacin populares,comoC++,enelqueellenguajedeprogramacinJavaestbasado. LaPOOdifieredelaprogramacinproceduralenqueestaltimahacehincapienla secuenciadelospasosrequeridospararesolverunproblema,mientrasquelaPOOhace hincapienlacreacinylainteraccindelosobjetos.

1.5.2Distribuido EllenguajedeprogramacinJavaesunlenguajedistribuidoporqueofrecesoportepara tecnologasderedesdistribuidas,talescomoRemoteMethodInvocation(RMI),

CommonObjectRequestBrokerArchitecture(CORBA),yUniversalResource Locator(URL). Adicionalmente,lacapacidaddecargadinmicadeclasesdelatecnologaJavapermite quefragmentosdecdigoseandescargadosatravsInternetyejecutadossobreun computadorpersonal.

1.5.3Simple EllenguajedeprogramacinJavaessimpledebidoaquesusdiseadoresquitaron algunasdelasconstruccionescomplejasypococlarasqueseencuentranenotros lenguajesdeprogramacinpopulares. Porejemplo,ellenguajedeprogramacinJavanopermitequelosprogramadores puedanmanipulardirectamentepunterosaubicacionesdememoria,loqueconstituye unacaractersticacomplejadeloslenguajesdeprogramacinCyC++,que frecuentementeesmalusada. Encambio,ellenguajedeprogramacinJavaslopermitealosprogramadores manipularobjetosusandoreferenciasaobjetos.Ellenguajedeprogramacinutiliza tambinunacaractersticadenominada"garbagecollector"paracontrolaryeliminar aquellosobjetosqueyanoestnreferenciados.

OtracaractersticaquehacesimpleallenguajedeprogramacinJavaesqueuntipode datosbooleanpuedetenerunvalortrue(verdadero)ofalse(falso),adiferenciadeotros lenguajesdeprogramacindondeelvalortambinpuedeser1o0. 1.5.4Multihilo EllenguajedeprogramacinJavaofrecefacilidadesdemultihilo,estoes,realizar variastareasalmismotiempo,talescomoconsultarunabasededatosydesplegaruna interfazdeusuario.Latecnologamultihiloposibilitaqueunprogramabasadoenla tecnologaJavaseamuyeficienteenelusoquehacedelosrecursosdelsistema.

1.5.5Seguro LosprogramasbasadosenlatecnologaJavasonsegurosdebidoaqueellenguajede programacinJava,juntoalentornoenelcualestosprogramasejecutan,utilizan medidasdeseguridadparaprotegerlosprogramasdeataquesexternos.Estasmedidas incluyen: Prohibirelmanejodelamemoriausandopunteros Prohibiralosprogramasdistribuidos,talescomolosapplets,leeryescribiraundisco durodeuncomputador. VerificarquetodoslosprogramasbasadosenlatecnologaJavacontienencdigo vlido.

Soportarfirmasdigitales.ElcdigobasadoenlatecnologaJavapuedeser"firmado" porunacompaaoporunapersonadeformatalqueotrapersonaquerecibaelcdigo puedaverificarlalegitimidaddelmismo.

1.5.6IndependientedelaPlataforma Losprogramasescritosenotroslenguajesrequierengeneralmentenumerosas modificacionesparapoderejecutarsesobremsdeuntipodeplataforma (computacional).Seentiendeporplataformacomputacionalunacombinacindeuna CPUyunsistemaoperativo.Estadependenciadelaplataformasedebeaquemuchos lenguajesrequierenqueseescribacdigoespecficoparalaplataformasubyacente. LoslenguajesdeprogramacinpopularescomoCyC++requierenqueelprogramador compileyensamblesusprogramas,obteniendocomoresultadounprogramaejecutable nicoparaunadeterminadaplataforma.AdiferenciadeCyC++,ellenguajede programacinJavaesindependientedelaplataforma. Programasdependientesdelaplataforma: Uncompiladoresunaaplicacinqueconvierteunprogramaescritoporun programador,enuncdigoespecficoparaunaCPU.Aestecdigoseledenomina cdigodemquina.Estosarchivosespecficosparacadaplataforma(archivosbinarios) secombinanfrecuentementeconotrosarchivos,talescomobibliotecasquecontienen cdigopreviamenteescrito,usandounensambladorparacrearunprogramadependiente delaplataforma(alqueseledenominaejecutable),yquepuedeserejecutadoporun usuariofinal.

Programasindependientesdelaplataforma: UnprogramabasadoenlatecnologaJavapuedeejecutarsobrevariascombinaciones deCPUsysistemasoperativosdiferentes,talescomo: SolarisOSsobreunchipSPARC,MacOSsobreunchipMotorolayMicrosoft WindowssobreunchipIntel,generalmenteconmuypocasosinmodificaciones AligualquelosprogramasCyC++,losprogramasbasadosenlatecnologaJava tambinsoncompiladosusandouncompiladordelatecnologaJava.Sinembargo,el formatoresultantedeunprogramabasadoenlatecnologaJavacompiladoesbytecode delatecnologaJavaindependientedelaplataforma,enlugardecdigodemquina especficoparaunaCPU.Luegoqueelbytecodeescreado,esinterpretado(ejecutado) porunintrpretedebytecodedenominadolamquinavirtual(oMV). Unamquinavirtualesunprogramaparaunaplataformaespecficaqueentiende bytecodeindependientedelaplataformayquepuedeejecutarlosobreunaplataforma particular. Porestarazn,ellenguajedeprogramacinJavaesfrecuentementereferidocomoun lenguajeinterpretadoylosprogramascontecnologaJavasondenominadosportableso ejecutablessobrecualquierplataforma.Existenvarioslenguajesinterpretados,comopor ejemploPerl. ParaquelosprogramascontecnologaJavaseanindependientesdelaplataforma,se requiereunamquinavirtual,denominadala"MquinaVirtualJava",sobrecada plataformadondelosprogramassernejecutados.LaMquinaVirtualJavaes responsablede: interpretarelcdigobasadoenlatecnologaJava, cargarlasclasesJavay ejecutarlosprogramasbasadosenlatecnologaJava. Sinembargo,unprogramabasadodelatecnologaJavanecesitamsqueunaMquina VirtualJavaparapoderejecutar.UnprogramabasadoenlatecnologaJavanecesita tambinunconjuntodebibliotecasdeclasesJavaestndarparalaplataforma.Las bibliotecasdeclasesJavasonbibliotecasdecdigopreviamenteescritoquepuedenser combinadasconelcdigoqueustedescribaparacrearaplicacionesrobustas. Conjuntamente,elsoftwaredelaJVMylasbibliotecasdeclaseJava,sondenominados elentornodeejecucindeJava(JavaruntimeenvironmentJRE).Losentornosde ejecucindeJavaestndisponiblesenSunMicrosystemsparamuchasdelas plataformasmscomunes. LacapacidaddelosprogramasbasadosenlatecnologaJavaparaejecutarsobretodas lasplataformasescentralenellemadeSunMicrosystems"Escribirunavez,ejecutaren cualquierlugar"("WriteOnce,RunAnywhere").

1.6GruposdeProductosdelaTecnologaJava SunMicrosystemsproveeunalneacompletadeproductosdetecnologaJavaquevan desdekitsquecreanprogramasbasadosenlatecnologaJavahastaentornospara emulardispositivoselectrnicosymviles(porejemplo,telfonosmviles).

1.6.1IdentificacindelosGruposdeProductosdelaTecnologaJava LastecnologasJava,talescomolaMquinaVirtualJava,estnincluidas(endiferentes formas)entresgruposdeproductos,cadaunodeloscualesfuediseadoparasatisfacer lasnecesidadesdeunmercadoobjetivoparicular: Java2Platform,StandardEdition(J2SE)Permiteeldesarrollodeappletsy aplicacionesqueejecutanenelnavegadorWebysobreelescritoriodelcomputador, respectivamente.Porejemplo,ustedpuedeutilizarelJ2SESoftwareDevelopersKit (SDK)paracrearunprogramaprocesadordepalabrasparauncomputadorpersonal. Java2Platform,EnterpriseEdition(J2EE)Permitecreargrandesaplicaciones empresarialesdistribuidasclienteservidor.Porejemplo,sepuedeutilizarelJ2EESDK paracrearunaaplicacincorrespondientealsitiowebdeunacompaadeventasalpor menor,implementandosobrelunatiendavirtual(eCommerceoComercio Electrnico) Java2Platform,MicroEdition(J2ME)Permitecrearaplicacionespara dispositivoselectrnicosconrecursosrestringidos.Porejemplo,ustedpuedeutilizar J2MESDKparacrearunjuegoqueejecuteenuntelfonomvil. EntreotrastecnologasJava,cadaedicinincluyeunkitdedesarrollodesoftware (SDK)quepermitealosprogramadorescrear,compilaryejecutarsusprogramas basadosenlatecnologaJavasobreunaplataformaparticular.

1.6.2SeleccindelGrupodeProductosdelaTecnologaJavaCorrectos MientrasquemuchosprogramadoresJavaseespecializaneneldesarrollode aplicacionesparaunmercadoobjetivoparticular,losprogramadoresgeneralmente comienzansuscarrerascreandoaplicacionesyappletsparacomputadorespersonales. Porlotanto,elkitJ2SESDKeselgrupodeproductosmsusadoporlos programadoresmientrasaprendenellenguajedeprogramacinJava. 1.6.3UsodeloscomponentesdelSDKdelaPlataformaJava2,StandardEdition SunMicrosystemshadesarrolladounaversindelSDKparalaPlataformaJava2, StandardEditionpara: elsistemaoperativoSolarisOSsobreelchipSPARC(32bits), elsistemaoperativoMicrosoftWindowssobreelchipIntel(32bits), elsistemaoperativoLinuxsobreelchipIntely elsistemaoperativoSolarisOSsobreelchipSPARC(64\bits). ElSDKparalaPlataformaJava2,StandardEditionincluye: ElentornodeejecucindeJava: UnaMquinaVirtualJavaparalaplataformaqueustedseleccione. LasbibliotecasdeclasesJavaparalaplataformaqueustedseleccione. UncompiladorJava DocumentacindelabibliotecadeclasesJava(API)(comounarchivoparaser descargadoenformaindependiente). Utilidadesadicionales,talescomoprogramasparacreararchivosJAR(Javaarchive)y paradepurarprogramasbasadosenlatecnologaJava. EjemplosdeprogramasbasadosenlatecnologaJava.

DemostracinSuprofesorrealizardemostracionesdecuatrotiposdeaplicaciones basadasenlatecnologaJava.Estasaplicacionesson: UnaaplicacincontecnologaJ2SESDK UnappletcontecnologaJ2SESDK UnaaplicacincontecnologaJ2EESDK UnaaplicacincontencologaJ2MESDK Durantelademostracin,usteddeberaponerespecialatencina: Cmoseejecutanelappletylaaplicacin(silaejecucinserealizaatravsdelingreso decomandos,haciendoclicsobreuncono,etc.) Desdedndeseejecutanelappletolaaplicacin(siesdentrodeunnavegadorWeb,un dispositivodeconsumidor,etc.)

1.7EtapasdelCiclodevidadeunProducto Elciclodevidadeunproducto(CVP)representaunconjuntodeetapasaceptadoporla industria,queusteddeberaseguircuandodesarrolleunnuevoproducto.Haysiete etapasenelCVP.Estasetapasson: Anlisis Diseo Desarrollo Prueba Implementacin Mantenimiento FindeVida

1.7.1EtapadeAnlisis Elanlisiseselprocesodeinvestigacindeunproblemaquesequiereresolverconun producto.Entreotrastareas,elanlisisconsisteen: Definirclaramenteelproblemaquesequiereresolver,elnichodeMercadoalqueest dirigidoelproductooelsistemaquedeseacrear.Ellmitedeunproblemaestambin conocidocomoelalcancedelproyecto. Identificarlossubcomponentesclavesquecomponenelproductototal.

1.7.2EtapadeDiseo Eldiseoeselprocesoqueconsisteenaplicarlosresultadosobtenidosdurantelaetapa deanlisis.Laprimeratareadurantelaetapadediseoconsisteendesarrollarblueprints oespecificacionesparalosproductosycomponentesdelsistema.

1.7.3EtapadeDesarrollo

ElDesarrolloconsisteenlacreacindeloscomponentespropiamentedichos,apartir delasmaquetasoblueprintscreadosdurantelaetapadediseo.

1.7.4EtapadePrueba LaPruebaconsisteenelaseguramientodequeloscomponentesindividuales,oel productoensutotalidad,satisfacenlosrequerimientosdelaespecificacincreada durantelaetapadediseo. LaPruebaesrealizadageneralmenteporunequipointegradoporpersonasqueno intervinieroneneldesarrollodelproducto.Esteequipoaseguraqueelproductoest probado,sinningunaintromisinporpartedeldesarrollador.

1.7.5EtapadeImplementacin LaImplementacinconsisteenhacerqueelproductoquededisponiblealcliente.

1.7.6EtapadeMantenimiento ElMantenimientoconsisteenlareparacindelosproblemasquepuedansurgirconel productoyliberarelproductocomounanuevaversinorevisin.

1.7.7EtapaFindeVida MientrasqueelCVPnotieneunaetapaseparadaparaelcomienzodeunconceptoo proyecto,tieneunaetapaparaelfindelproyecto.Estaetapadefindevidaconsisteen realizartodaslastareasnecesariasparaasegurarquelosclientesyempleadosestn concientesdequeelproductoyanoservendido,queyanoseofrecernserviciosalos clientesyqueestdisponibleunnuevoproducto.

1.7.8PorqusedeberaseguirelCVP ElCVPesunaparteimportantedeldesarrollodeunproductodadoqueayudaa asegurarquelosproductosserncreadosyentregadosdeformatalque: eltiempodesalidaalmercadoseareducido, elproductotengaaltacalidad,y elretornodelainversinseamaximizado LosdesarrolladoresquenosiguenelCVPfrecuentementeencuentranproblemascon susproductos,yaquesuelensercostososderepararyhubiesenpodidoserevitados.

2ElAnlisisdeunProblemayelDiseodeunaSolucinEneltranscursodestemduloaprenderemosaanalizarunproblemausandoelanlisis orientadoaobjetos,tambindisearemoslasclasesapartirdelascualescrearemos objetos.

2.1Objetivos Unavezfinalizadoestemdulo,usteddeberasercapazde: Analizarunproblemausandoanlisisorientadoaobjetos.

Disearlasclasesapartirdelascualeslosobjetosserncreados. Estemdulodescribecmoanalizarunasituacinycmodesarrollarundiseopara unaaplicacin. 2.2VerificacindeProgreso Escribaunnmero(entre1y5)enlacolumna"Alcomenzarelmdulo"paracalificar sucapacidadparallevaracabocadaunodelosobjetivosdeestemdulo.Unavezque hayafinalizadoestemdulo,usteddeberreevaluarsuscapacidadesydeterminarel aprendizajeadquiridoparacadaobjetivo. ElresultadodeestacomparacinayudaraSunEducationalServices(SES)enla efectividaddeestacapacitacin.Digaasuprofesoraquellostemconlamenor calificacin(un0oun1enlacolumnaderecha),paradeterminarsiesnecesario presentarmaterialadicionaldurantesusclases.Adicionalmente,estainformacinser reenviadaalgrupodedesarrollodecursosdeSESparafuturasrevisionesdelcurso.

2.3Relevancia DiscusinLassiguientespreguntassonrelevantesparaentenderqueselAnlisisy DiseoOrientadoaObjetos(OOAD): Cmodecidirqucomponentessonnecesasriosparaloqueusteddebeconstruir,como porejemplounacasaounmueble? Quesunataxonoma? Cmoserelacionanloselementosenunataxonoma? Culesladiferenciaentreatributosyvalores? 2.4RecursosAdicionales RecursosadicionalesLassiguientesreferenciasproveeninformacinadicionalsobre lostemasdescriptosenestemdulo:

Larman,Craig.ApplyingUMLandPatternsAnIntroductiontoObjectOriented AnalysisandDesign.PrenticeHall,1998.EstelibropresentaelprocesodeOOADen detalleysinexcesivacomplejidad. Eckel,Bruce.ThinkinginJava.PrenticeHall,2000. Fowler,MartinandKendallScott.UMLDistilled.AddisonWesleyLongman,Inc., 1997. 2.5ElAnlisisdeunProblemaUsandoAnlisisOrientadoaObjetos CasodeEstudioElsiguientecasodeestudiosepresentaparaayudarailustrarlos principiosdeOOAD. DirectClothing,Inc.vendecamisasporcatlogo.Elnegocioestcreciendo30por cientoporaoyporlotanto,laempresanecesitaunnuevosistemadeingresode rdenesdecompra.UstedhasidocontratadoporDirectClothingparadisearestenuevo sistema. DirectClothingproduceuncatlogodeprendasdevestircadaseismesesyloenvapor correoasussuscriptores.Cadacamisaenelcatlogotieneunidentificadordetem (ID),unoomscolores(cadaunodeellosconuncdigodecolordiferente),unooms tamaos,unadescripcinyunprecio. DirectClothingaceptachequesylamayoradelastarjetasdecrdito. Paraingresarunaordendecompra,losclientespuedenllamartelefnicamentea DirectClothingdesdeunrepresentantedeservicioalcliente(RSC)paraenviarlas rdenesdirectamenteopuedenenviarunformulariodeordendecompraporcorreoo porfaxaDirectClothing. Lasrdenesdecompraquesonenviadasporcorreooporfaxsoningresadasporun RSC. ADirectClothinglegustaradarlaopcinalosclientesdeingresarsusrdenesde compraenformaonlineatravsdeInternet.Elpreciodelostemdisponiblespara ventasonlineesfijadodeacuerdoalcatlogovigente. Cuandolaordendecompraesingresadaenelsistema,severificaladisponibilidadde cadatem(disponibilidadreal).Siunoomstemnoestndisponiblesenesemomento (enelalmacndeDirectClothing),entonceslaordendecompraescolocadaenestado "Pendiente"hastaquelostemsolicitadosingresenenelalmacn. Despusquetodoslostemsolicitadosestndisponibles,severificaelpagoyentonces laordenesenviadaalalmacnparaarmarelpaquetecorrespondienteyenviarloala direccindelcliente. Silaordenserecibeportelfono,elRSCinformaalclienteelIDdelaordende compra,elcualpuedeserutilizadopararealizarelseguimientodelaordenatravsdel proceso.ElRSCtambinleproporcionaalclientesunmerodeextensindelnmero telefnico.

2.5.1IdentificacindelDominiodelProblema DadoqueellenguajedeprogramacinJavaesunlenguajeorientadoaobjetos,unode losprincipalesobjetivosdelprogramadorJavaescrearobjetosparaconstruirunsistema o,msespecficamente,pararesolverunproblema. Alalcancedelproblemaaresolverseledenomina"dominiodelproblema". Lamayoradelosproyectoscomienzandefiniendoeldominiodelproblemamedianteel relevamientodelosrequerimientosdelclienteyescribiendounadeclaracindealcance quedescribabrevementeloqueeldesarrolladordeberesolver. Porejemplo,unadeclaracindealcanceparaelproyectoDirectClothingpodraser: "Crearunsistemaquepermitaalaspersonasqueingresanrdenesdecompra,entrary aceptarpagosparaunaorden." Despusquesehadeterminadoelalcancedelproyecto,sepuedecomenzaraidentificar losobjetosqueinteractuarnpararesolverelproblema.

2.5.2IdentificacindeObjetos Paravalidarlosobjetosenundominiodelproblemasedebe,enprimerlugar, identificarlaspropiedadesdetodoslosobjetos: LosobjetospuedenserfsicosoconceptualesUnacuentadeunclienteesunejemplo deunobjetoconceptualdadoquenoesalgotangible.Uncajeroautomticoesalgoque muchagentepuedetocarcadadayconstituyeunejemplodeunobjetofsico. Losobjetostienenatributos(caractersticas),talescomotamao,nombre,formaetc.Por ejemplo,unobjetopodratenerunatributocolor. Elvalordetodoslosatributosdeunobjetosedenominafrecuentementeelestadoactual (ocorriente)delobjeto.Porejemplo,unobjetopuedetenerunatributocolorconel valor"rojo"yunatributotamaoconelvalor"grande". Losobjetostienenoperaciones(lasaccionesquelosobjetospuedenrealizar),tales comoasignarunvalor,desplegarunapantallaoincrementarlavelocidad.Las operacionesgeneralmenteafectanalosatributosdelobjeto.Alconjuntodelas operacionesqueunobjetorealizaseconoceconelnombredecomportamientodel objeto. Porejemplo,unobjetopuedetenerunaoperacinquepermita,aotrosobjetos,cambiar suatributocolordeunestadoaotro(porejemplo,derojoaazul). Sucapacidadparareconocerlosobjetosdesurealidad,leayudaradefinirmejorlos objetoscuandoabordeunproblemausandoanlisisorientadoaobjetos. Porejemplo,unapuertapuedeserunobjetoeneldominiodelproblema"construiruna casa".Unapuertatienealmenosunatributoquetieneunvalor(abiertaocerrada)yuna operacin,comoporejemplo"cerrarlapuerta"o"abrirlapuerta",quepermitecambiar elestadodelamisma.

2.5.3CriteriosadicionalesparaelReconocimientodeObjetos Utilicelossiguientescriteriosparaverificarsialgodeberaserconsideradounobjeto eneldominiodelproblema: Relevanciaparaeldominiodelproblema. Existenciaenformaindependiente. Paradeterminarsielobjetoesrelevanteparaeldominiodelproblema,pregnteseas mismolosiguiente: Existeelobjetodentrodeloslmitesdeldominiodelproblema? Serequiereelobjetoparacompletarlasolucindelproblema? Eselobjetorequeridocomopartedelainteraccinentreelusuarioylasolucin? ExistenciaenFormaIndependiente Paraqueuntemseaunobjetoynounatributodeotroobjeto,estedebeexistiren formaindependienteenelcontextodeldominiodelproblema.Losobjetospuedenestar conectadosyanastenerexistenciaindependiente.Enelcasodeestudiode DirectClothing,unclienteyunaordendecompraestnconectadosperoson independientesentres,yporlotanto,ambospodranserobjetos. Durantelaevaluacindelosobjetospotenciales,pregntesesielobjetonecesitaexistir enformaindependiente,enlugardeserunatributodeotroobjeto.

2.5.4IdentificacindeAtributosyOperacionesdeObjetos Despusdeidentificarlosobjetos,sedebenidentificarsusatributosysusoperaciones. Comosedescribianteriormente,losatributosdefinenelestadodeunobjeto.Los atributospuedenser: datos,comolaidentificacindeunclienteylaidentificacindelaordenparaunobjeto Orden, otrosobjetos,unclientepodriatenercomoatributounobjetoOrdendeCompra,en lugardeslosuidentificacin. Comofuemencionadoanteriormente,lasoperacionesestablecenelcomportamientoque usualmentemodificaelestadodeunatributo.Porejemplo,unaordenpuedeser impresa,puedeteneruntemagregadooeliminado,etc.(ElclienteoRSCdebera iniciarestasaccionesenlavidareal,perolasoperacionespertenecenalobjetoOrden.) AtributosquerefierenaOtrosObjetos

Unatributopuedeserunareferenciaaotroobjeto.Porejemplo,elobjetoClientepuede tenerunatributoqueseaunobjetoOrden.Estaasociacinpodra,ono,sernecesaria dependiendodelproblemaqueseesttratandoderesolver.

2.5.5SolucindelCasodeEstudio Acontinuacinsepresentanvariasfigurasquecontienenunalistaparcialdelosobjetos (incluyendolamayoradesusatributosyoperaciones)paraelcasodeestudio DirectClothing,Inc.

2.6Ejercicio1:AnlisisdelDominiodeunProblema

Elobjetivodeesteejercicioeslistarlosobjetos,atributosyoperacioneseneldominio delproblemaejemplo. 2.6.1Preparacin Leaelsiguientecasodeestudioyluegomodeleelsistemaseleccionandolosobjetos,y susatributosyoperaciones. 2.6.2TareaRealizarelAnlisis Sutareaesrealizarunanlisisorientadoaobjetosparaunaaplicacinbasadaenla tecnologaJavaquerealiceelseguimientodelosresultadosdelospartidosdeftbol.El problemadebemonitorizar: Lalistadejugadoresdecadaequipo Lacantidaddegolesdecadajugador Lospartidosjugadosduranteunatemporada,incluyendolosequiposquejugaronentre s,yelresultadofinaldelpartido. Laaplicacindebepermitirgenerarresultadosestadsticosporequipos,jugadoresy temporadas. Paracompletarelanlisis,sigalossiguientespasos: Creeunalistadelosobjetospotenciales. Apliquelasreglasvistasenestemduloparadecidirsitodossusobjetossonvlidos. Creeunalistadeatributosyoperacionesparacadaunodesusobjetos. 2.7Ejercicio1:Resumen DiscusinTmeseunosminutosparadiscutirquexperiencias,asuntosy descubrimientosharealizadoduranteesteejercicio. Experiencias Interpretaciones Conclusiones Aplicaciones 2.8DiseodelasClases Laidentificacindelosobjetosayudaeneldiseodelasclasesyenelprototipode cadaunodelosobjetosenunsistema.Porejemplo,losfabricantesdeventanas frecuentementecreanunnicoprototipoparacadaunodelosestilosdeventanasque construyen.Estosprototiposdefinenunrangodecoloresyunosestilosquepuedenser elegidoscuandosecompraunadesusventanas. Dichosprototiposconstituyenlabaseparalaconstruccindecualquiercantidadde ventanasconcualquiercantidaddecombinacionesdecoloryestilo.Entrminosde diseoorientadoaobjetos,cadaobjeto(ventana)creadousandolaclase(elprototipo genrico)esllamadounainstanciadeunaclase.Msespecficamente,cadaobjeto

creadoapartirdeunaclasepuedetenerunestadoespecfico(valores)paracadaunode susatributos,perotendrlosmismosatributosyoperaciones. LostrminosclasesyobjetossonusadosfrecuentementeenelcampodelaBiologa. Porejemplo,unbilogomarinoqueestudiacriaturasmarinasseencargadecategorizar estascriaturasenunafamilia,oclase,decriaturasmarinas.EntrminosdeOOAD,cada animal(comoporejemplounaballenaazul)enunafamilia(porejemploballenas) puedeserconsideradounainstanciadelobjetodelaclaseballena. ReferidoalcasodeestudioDirectClothing: Unaclaseestrelacionadaaladefinicinqueserealizdelobjeto.Lasclasesson categorasdescriptivas,plantillasoblueprints.UnaCamisapuedeserunaclaseque definatodaslascamisasquetienenunaidentificacin,untamao,uncdigodecolor, unadescripcinyunprecio. Losobjetossoninstanciasnicasdelasclases.Lacamisapolo,azul,grande,quecuesta $29.99yquetienelaidentificacin62467BesunainstanciadelaclaseCamisa. Tambinloeslacamisaverde,pequea,quetieneelmismoprecioytienela identificacin66889C,asicomolacamisaestampadaa$39.99yconID09988A. EventualmentesepuedentenerdosobjetosCamisaenlamemoriaconexactamentelos mismosvaloresenlosatributos. EnellenguajedeprogramacinJava,losatributossonrepresentadosusandovariables, ylasoperacionessonrepresentadasusandomtodos.Lasvariablesconstituyenel mecanismodellenguajedeprogramacinJavaparaalmacenardatos.Losmtodos constituyenelmecanismodellenguajedeprogramacinJavaparaejecutaruna operacin.

2.8.1ElModeladodeClases Laprimerafasedelaetapadediseoconsisteenlaorganizacinvisual,omodelado,de unprogramaysusclases.Cadaclaseenundiseodeberaestarmodeladadeformatal queseincluyasunombreenlapartesuperiordeunrectngulo,seguidoporlalistade lasvariablesdeatributos(incluyendoelrangodelosposiblesvalores)ylalistadelos mtodos.Lasiguientefigurailustraelmodeladodeunaclase. Losnombresdelasvariablesydelosmtodosestnescritosdeformatalque comienzanconunaletraenminsculaylassiguientespalabrasenelnombrecomienzan conmayscula.Porejemplo,elnombreparalaoperacin"calcularelpreciototal" podrasercalcPrecioTotal()(ocalcTotalPrice()eningls).Losparntesisalfinal indicanquesetratadeunmtodo.

2.9Ejercicio2:DisearunaSolucin ElobjetivodeesteejercicioesmodelarunobjetoutilizandolanotacinsimilaraUML quesemostrenestemdulo. 2.9.1TareaRealizarunDiseo Sutareaconsisteendisearlasclasesparaelsistemadeseguimientoderesultadosde partidosdeftbolpresentadoanteriormente.Recuerde: Utilicenombresdeclases,atributos,variablesymtodoscomolosdescritoseneste mdulo. Identifiqueunrangodevaloresvlidosparacadaatributo(enaquelloscasosqueel rangoseaconocido). Utilicelosparntesisparaidentificarlosmtodos.

2.10Ejercicio2:Resumen DiscusinTmeseunosminutosparadiscutirquexperiencias,asuntosy descubrimientosharealizadoduranteesteejercicio. Experiencias Interpretaciones Conclusiones Aplicaciones

3DesarrolloyPruebadeunProgramabasadoenlaTecnologaJava Alolargodeestemduloidentificaremosloscuatrocomponentesdeunaclaseenel lenguajedeprogramacinJava.Usaremoselmtodomainenunaclasedepruebay compilaremosyejecutaremosunprograma. 3.1Objetivos Unavezcompletadoestemdulo,usteddeberasercapazde: IdentificarloscuatrocomponentesdeunaclaseenellenguajedeprogramacinJava. Usarelmtodomainenunaclasedepruebaparaejecutardesdelalneadecomandoun programabasadoenlatecnologaJava. CompilaryejecutarunprogramabasadoenlatecnologaJava Estemduloofreceunavisingeneraldeloscomponentesdeunaclase.Tambin describecmocompilaryejecutarunprogramaqueconsisteenmltipleclases. 3.2VerificacindeProgreso Escribaunnmero(entre1y5)enlacolumna"Alcomenzarelmdulo"paracalificar sucapacidadparallevaracabocadaunodelosobjetivosdeestemdulo.Unavezque hayafinalizadoestemdulo,usteddeberreevaluarsuscapacidadesydeterminarel aprendizajeadquiridoparacadaobjetivo. ElresultadodeestacomparacinayudaraSunEducationalServices(SES)enla efectividaddeestacapacitacin.Digaasuprofesoraquellostemconlamenor calificacin(un0oun1enlacolumnaderecha),paradeterminarsiesnecesario presentarmaterialadicionaldurantesusclases.Adicionalmente,estainformacinser reenviadaalgrupodedesarrollodecursosdeSESparafuturasrevisionesdelcurso.

3.3Relevancia DiscusinLasiguientepreguntaesrelevanteparacomprenderdequtratael desarrolloypruebadeclases: Cmopruebaustedalgoquehaconstruido,comoporejemplounacasaounmueble? 3.4RecursosAdicionales RecursosadicionalesLassiguientesreferenciasofreceninformacinadicionalsobre lostemasdescritosenestemdulo: Farrell,Joyce.JavaProgramming:Comprehensive.1999. Setratadeunexcelentelibroparanoprogramadores.Explicaconceptosqueson pasadosporaltoenlibrosmsavanzados. TheJavaTutorial.[Online].Disponibleen: http://java.sun.com/docs/books/tutorial/?frontpagespotlight 3.5IdentificacindelosComponentesdeunaClase Lasclasessonlosblueprintsquesecreanparadefinirlosobjetosdeunprograma.Por ejemplo,lasiguientefigurailustraalgunosdelosobjetosquesenecesitaranparael programadeingresoderdenesdecompraparaDirectClothing,Inc. Unaaplicacindeescritoriogeneralmentecontieneunobjetoqueeselpuntode comienzodelprograma.Aesteobjeto,frecuentementeseledenominaelobjeto controlador,objetoprincipaluobjetodeprueba.Enlafiguraanterior,unobjeto

OrderEntrypodrainteractuarconunoomsobjetosWindow,objetosCustomeru objetosOrderdurantelaejecucindelprograma. Cadaobjetoenlafiguraesunainstanciadeunaclaseoblueprint.Porejemplo,todoslos objetosWindowsoninstanciasdelaclaseWindow.Algunasclases,comolaclase Window(usadaparacrearventanasdeinterfazgrficadeusuario[GUI])sonclasesde propsitogeneralysonprovistascomopartedelaAPIdelatecnologaJava.Otras clases,comoporejemploShirt,sonespecficasdeesteprogramaydebensercreadas porelprogramador.Enestecursosedescribecmousarlasclasesyaexistentesycmo crearyusarclasespropias.

3.5.1LaEstructuradelasClases LasclasesestncompuestasporcdigobasadoenlatecnologaJavanecesariopara instanciarobjetos,comoporejemplolosobjetosdelaclaseShirt.Enestecursose divideelcdigoenunarchivodeunaclaseJavaencuatroseccionesseparadas: Ladeclaracindelaclase. Ladeclaracineinicializacindelasvariables(opcional). Lsmtodos. Loscomentarios. Elcdigodelprogramaparaunaclaseestcontenidoenunarchivodetextoquedebe seguirciertaestructura.

3.5.2DeclaracindeunaClase Sedebedeclararunaclaseporcadaclaseincluidaeneldiseocorrespondienteal dominiodelproblema.Paracadaclasedeldiseo,sedeberaescribirunadeclaracinde clase.Lasintaxisparadeclararunaclasees: [modificadores]classidentificador_clase Los[modificadores]delaclasedeterminanlaaccesibilidadqueotrasclasestendrn sobreella.Losmodificadoressepresentanendetallemsadelanteenestecurso.Los [modificadores]sonopcionalesenladeclaracindelaclase(locualesindicadoporlos corchetes)ypuedetenerlosvalorespublic,abstractofinal.Porahora,utiliceel modificadorpublic. Lapalabraclaveclassindicaalcompiladorqueelbloquedecdigoesunaclase.Las palabrasclavesonpalabrasqueestnreservadasparaciertasconstruccionesdel lenguajedeprogramacinJava.

Elidentificador_claseeselnombrequeseledaralaclase.Lasreglasparanombrar unaclasesonlassiguientes: Losnombresdeclasedeberansersustantivos,conletrasmaysculasyminsculas peroconlaprimeraletradecadapalabraenmayscula.Porejemplo:MiClase. Losnombresdeclasedeberancontenerpalabrascompletas.Sedebeevitarusar acrnimosyabreviaturas(amenosquelaabreviaturaseamsutilizadaoconocidaque laformalarga,comoporejemploJVMoUML). Ladeclaracindeclase(Lnea1)delcdigodelaclaseShirtenelejemploanterior, tieneelmodificadordeclasepublic,seguidodelapalabraclaveclass,yacontinuacin elnombredeclase(Shirt). RequerimientosparasusArchivoFuente Enestecurso,usteddesarrollarsusclasesdeformatalqueelcdigodelosprogramas basadosenlatecnologaJavaqueescribaparacadaclasesealmaceneensupropio archivodetextooarchivoconelcdigofuente.EnellenguajedeprogramacinJava, losnombresdelosarchivosconelcdigofuentedeben: coincidirconelnombredelaclasepblicaincluidaendichoarchivoy tenerextensin.java. Porejemplo,laclaseShirtdebeestaralmacenadaenunarchivollamadoShirt.java. Ladefinicindeclaseesseguidaporunallaveizquierda({)indicandoelcomienzodel cuerpodelaclase(cuerpo_clase),lasvariablesatributoylosmtodosquecomponenla clase.Lasllaves{}alrededordelcuerpo_clasedefinendndecomienzaydnde finalizalaclase,respectivamente.

3.5.3DeclaracindeVariablesyAsignaciones Ladeclaracindevariablesatributoyelbloquedeasignacionessiguenalaprimera llaveizquierda({).Generalmente,despusesestallaveseinicializantodaslasvariables atributodelaclase. ElcdigodelaclaseShirtenelejemplo,contienecincodeclaracionesdevariables atributo: unaparaelidentificadorshirtID(lnea3), unaparaunadescripcin(description)(lnea4), unaparaelcdigodecolor(colorCode)(lnea7), unaparaelprecio(price)(lnea9)y

unaparalacantidadenstock(quantityInStock)(lnea11).

3.5.4Comentarios Usteddeberaincluircomentariosencadaclasequeescriba,parahacermsfcilla comprensindeloquehaceelprograma.Comentarunprogramaesparticularmente importanteenprogramasgrandesodesarrolladosporgrandesequiposdondemuchos programadoresnecesitanleerelcdigo.Loscomentariosayudanalmantenimientode unprogramacuandonuevosprogramadoresnecesitandeterminarloquehaceelcdigo. EstructuradelosComentarios Sepuedenutilizardosestilosprincipalesdecomentarios: ComentariosdeunanicalneaLamarca"//"indicaalcompiladorqueignoretodos loscaracteresdesdeestamarcahastaelfindelalneadondeseencuentra.Porejemplo, laslneas3,4y6delaclaseShirtcontienencomentariosdeunanicalnea. publicintshirtID=0;//DefaultIDfortheshirt publicdoubleprice=0.0;//Defaultpriceforallshirts //ThecolorcodesareR=Red,B=Blue,G=Green Muchosprogramadorestambinconstruyensusprogramasusandocomentariosdeuna nicalneaparacomentarlaprimeraylaltimalneadecadaclaseomtodo.Por ejemplo,laclaseShirtcontieneuncomentariodefindelneaparaindicarelfindel mtododisplay.(lnea22) }//endofdisplaymethod Enprogramasgrandes,puedeserdificultosoencontrarlallavederechaquecierrauna clase.Incluiruncomentarioencadallavederechadeuna estructurahaceelcdigomslegibleypermiterepararerroresmsfcilmente. ComentariostradicionalesLacombinacindeloscaracteres/*indicaalcompilador queignoretodoeltextohastalamarcadefinalizacindelcomentario(*/).Estaaccin esrealizadaporelcompilador,inclusoatravsdevariaslneas.Losprogramadores utilizanfrecuentementeloscomentariostradicionalesparagrandesbloquesdecdigo.

/********************* *SeccindeDeclaracindeVariablesAtributo *********************/

3.5.5Losmtodos Losmtodosdeunaclaseseescribenacontinuacindeladeclaracindelasvariables atributos.Lasintaxisparalosmtodoses: [modificadores]tipo_retornoidentificador_mtodo ([argumentos]){ bloque_cdigo_mtodo } donde: Los[modificadores]representanpalabrasclavenicasdelatecnologaJavaque modificanlaformaenquelosmtodossonaccedidos.Losmodificadoresson opcionales(locualesindicadoenlasintaxisporsuinclusinentrecorchetes). Eltipo_retornoindicaeltipodelvalor(siexiste)queelmtododevuelve.Sielmtodo devuelveunvalor,eltipodelmismodebeserdeclarado.Losvaloresdevueltosporun mtodopuedenserusadosporelmtodoquelollama.Cualquiermtodopuede devolveralosumounvalor.Sielmtodonodevuelveningnvalor,seutilizala palabravoidenellugardetipo_retorno. Elidentificador_mtodoeselnombredelmtodo. Los[argumentos]representanunalistadevariablescuyosvaloressonpasadosal mtodoparaserusadosporl.Losargumentossonopcionales(indicadoconsu inclusinentrecorchetes)dadoquenoserequierequeelmtodoacepteargumentos. Notarquelosparntesiscurvosnosonopcionales.Unmtodoquenoacepta argumentossedeclaraincluyendosolamenteelparntesiscurvoqueabreyelque cierra. Elbloque_cdigo_mtodoeslasecuenciadesentenciasqueelmtodorealiza.Unagran variedaddetareaspuedenserrealizadasenelbloquedecdigo,ocuerpo,delmtodo. LaclaseShirtcontieneunmtodo,elmtododisplayShirtInformation(lneas14a22), elcualdespliegalosvaloresdelosatributosdeunacamisa.

publicvoiddisplayShirtInformation(){ System.out.println("ShirtID:"+shirtID); System.out.println("Shirtdescription:"+description); System.out.println("ColorCode:"+colorCode); System.out.println("Shirtprice:"+price); System.out.println("Quantityinstock:"+quantityInStock); }//endofdisplaymethod 3.6CreacinyUsodeunaClasedePrueba Lamayoradelasclasesquesecrearnenestecursonopuedenserusadas(ejecutadas yprobadas)porsmismas.Sinembargo,sepuedecrearunaclasequecreeunobjetode dichaclaseyejecutarestanuevaclasepararealizarlaprueba. Duranteestecurso,ustedutilizarunaclaseprincipal,odeprueba,paraprobarcadauna desusclases.Elsiguientecdigoesunejemplodeunaclasedepruebaparalaclase Shirt. Acadaclasedepruebaenestecursoseledeberadarunnombredeformatalquepueda serreconocidacomounaclasedepruebaparaunaclaseparticular.Especficamente, cadanombredeclasedepruebadeberaconsistirdelnombredelaclasequesedesea probar,seguidoporlapalabra"Test".Porejemplo,elnombredelaclasedepruebapara laclaseShirtsedeberallamar"ShirtTest". Lasclasesdepruebarealizandostareasdiferentes: Ofrecerunpuntodecomienzo,llamadoelmtodomain,paralosprogramas. Crearunobjetodelaclaseyprobarsusmtodos.

3.6.1ElMtodomain ElmtodomainesunmtodoespecialquelaMquinaVirtualdeJavareconocecomo elpuntodecomienzodecualquierprogramabasadoenlatecnologaJavaqueseejecuta desdelalneadecomandoodesdeun"prompt".Cualquierprogramaquesedesee ejecutardesdelalneadecomandoodesdeunpromptdebetenerunmtodomain. Lasintaxisparaelmtodomaines: publicstaticvoidmain(Stringargs[]) Elmtodomaintienelamismasintaxisquetodoslosmtodos,lacualsedescribi anteriormente.Especficamente: Elmtodomaincontienedosmodificadoresrequeridos:publicystatic Elmtodomainnodevuelveningnvalor,porloqueeltipoderetornoesvoid. Elmtodomaintienecomoidentificadordemtodo(nombre)a"main" ElmtodomainaceptaceroomsobjetosdetipoString(Stringargs[]).Estasintaxisle permiteingresarlosvaloresaserusadosporsuprogramadesdelalneadecomandos durantelaejecucin.

3.6.2CompilacinyEjecucin(Prueba)deunPrograma UstedhavistounaclasebsicadenombreShirtbasadaenlatecnologaJavayuna clasedepruebaconnombreShirtTest.Estasdosclasesconjuntamente,constituyensu primerprogramabasadoenlatecnologaJava.Acontinuacinustedcompilary ejecutar(probar)suprograma.

3.6.3CompilarunPrograma Lacompilacinconviertelosarchivosconcdigofuentedelasclasesenbytecode,para quepuedaserejecutadoporunaMquinaVirtualJava.Recuerdelasreglasparael nombramientodelosarchivosfuenteJava.Siunarchivofuentecontieneunaclase pblica,elarchivofuentedebetenerelmismonombredelaclasepblicayextensin .java.Porejemplo,laclaseShirtdebeestaralmacenadaenunarchivoconnombre Shirt.java. ParacompilarlosarchivosdecdigofuenteShirtyShirtTest,ustedpodra: Iraldirectoriodondeestnalmacenadoslosarchivosconelcdigofuente. Ingresarelsiguientecomandoparacadaarchivo.javaquequieracompilar: javacfilename Porejemplo: javacShirt.java Luegodequelacompilacinhayafinalizado,yasumiendoquenoseprodujeronerrores decompilacin,enesedirectoriodeberhaberunnuevoarchivoconelnombre classname.classporcadaarchivoconcdigofuentequesehayacompilado.Sise compilunaclasequereferenciaotrosobjetos,lasclasescorrespondientesaestos objetostambinserncompiladas(sinohabansidocompiladaspreviamente). Porejemplo,sisecompilalaclaseShirtTest.java(lacualreferenciaunobjetoShirt),se compilartambinlaclaseShirt.javaysegenerarnlosarchivosShirtTest.classy Shirt.class

3.6.4Ejecutar(Probar)unPrograma

Despusdecompilarexitosamentelosarchivosconcdigofuente,selospuede ejecutaryprobarusandolaMquinaVirtualJava.Paraejecutaryprobarelprograma, sedebenseguirlossiguientespasos: Vayaaldirectoriodondeestnalmacenadoslosarchivosdelasclases Ingreseelsiguientecomandoparaelarchivodelaclasequecontieneelmtodomain: javanombreClase Porejemplo: javaShirtTest EstecomandoejecutalaclaseShirtTest.Comosemencionpreviamente,laclase ShirtTestcreaunainstanciadelobjetoShirt,usandolaclaseShirt.Todoslosobjetos Shirttienenunmtodo,elmtododisplay,elcualdespliegalosvaloresdelasvariables atributo,porejemplo: ShirtID:0 Shirtdescription:descriptionrequired ColorCode:U Shirtprice:0.0 Quantityinstock:0 SugerenciasparalaDepuracin Lamayoradelaveces,setendralmenosunerrorenelcdigo.Eltrminoempleado parareferiralareparacindeerrores(obugs)esdepuracin.Lassiguientessonalgunas sugerenciasparallevaracaboladepuracindeunprograma: Losmensajesdeerrorindicanelnmerodelneadondeocurreelerror.Sinembargo, estenmerononecesariamentecorrespondealalneadondeseencuentraelerror,por loquesedeberanverificarlaslneasdecdigoanterioresyposterioresalnmerode lneaqueesdesplegado. Asegresequeexisteunsignodepuntoycomaalfinaldecadasentencia. Asegresequehayunacantidadpardellaves:unallavederechaporcadallave izquierda. Asegresequeutilizenelcdigounmodelodesangrascomoelvistoenelestecurso. Detodasformas,losprogramasejecutarnsinimportareltipodesangrautilizado,pero loharnmslegibleyfcildedepurar.Tambinleposibilitarevitarerroresmientras estescribindolos. 3.7Ejercicio:Escribir,CompilaryProbarunProgramaBsico Elobjetivodeesteejercicioesfamiliarizarseconlospasosnecesariosparaescribir(o modificar),compilaryprobar(ejecutar)susprogramasbasadosenlatecnologaJava. 3.7.1TareaCompilaryEjecutarunProgramabasadoenlaTecnologaJava Enestatarea,ustedcompilaryejecutarsuprimerprogramabasadoenlatecnologa Java.SigalossiguientespasosparacompilaryejecutarelprogramaShirtTest:

Vayaaldirectoriogetstarted. Abrauneditordetextoeingreseelcdigo,siguiendolasintaxisdelatecnologaJava, paralaclaseShirtpresentadaanteriormenteenestemdulo(elcdigofuentedel programa). Guardeycierreelarchivo. AbrauneditordetextoeingreseelcdigofuentedelaclaseShirtTestmostrado anteriormenteenestemdulo. Guardeycierreelarchivo. Abraunaventanadecomandos. Naveguehastaeldirectoriodondeseencuentranlosarchivoscorrespondientesaeste mdulo. Ingreseelsiguientecomandoparacompilarelprogramaygenerarunarchivobytecode ejecutable. javacShirt.java Deestaforma,secrearelarchivoShirt.class. Ingreseelsiguientecomandoparacompilarelprogramaygenerarunarchivobytecode ejecutable. javacShirtTest.java ElarchivocreadoserShirtTest.class. Cuandoreaparezcaelsmbolodeprompt,ingreseelsiguientecomandoparaejecutarel programa: javaShirtTest AbranuevamenteelarchivoShirt.java. Cambieelvalordelavariablepricea14.99yelshirtIDa112244. Guardeycierreelarchivo. CompilenuevamenteelarchivoShirt.java. javacShirt.java EjecutenuevamenteelarchivoShirtTest.class.

javaShirtTest 3.7.2TareaCrear,CompilaryEjecutarOtroProgramabasadoenlaTecnologaJava Enestatarea,ustedcrear,compilaryejecutarsusegundoprogramabasadoenla tecnologaJava.SigalossiguientespasosparacrearunaclasedenombreQuotation paradesplegaruntexto: Vayaaldirectoriogetstarted. Abrauneditordetextoeingreselasiguienteclase: publicclassQuotation{ Stringquote="WelcometoSun!"; publicvoiddisplay(){ System.out.println(quote); } } GuardeelarchivoconelnombreQuotation.java. Desdeunaventanadecomandos,naveguehastaeldirectoriodondesuprogramaest almacenado. Ingreseelsiguientecomandoenlaventanadecomandosparacompilarelprograma: javacQuotationTest.java Siocurreunerror,abraelarchivoyverifiquequehacopiadoelprogramaexactamente. Sinoocurreningnmensajedeerror,ingreseelsiguientecomandoenlaventanade comandosparaejecutarelprograma: javaQuotationTest AbranuevamenteelarchivoQuotation.javaycambieeltexto"WelcometoSun!"porel queprefiera.Asegresequeslocambieltextoyquelascomillasnosemodificaron. Compileyejecuteelprogramanuevamente. 3.8ResumendelEjercicio DiscusinTmeseunosminutosparadiscutirquexperiencias,temasy descubrimientosserealizaronduranteesteejercicio. Experiencias Interpretaciones Conclusiones

Aplicaciones

4Declaracin,InicializacinyUsodeVariables Enstemduloidentificaremoslosusosdelasvariables,listaremoslostiposde datosdellenguajeJava.Aprenderemosacercadelapromocinyconversindetiposde datos. 4.1Objetivos Unavezcompletadoestemdulo,usteddeberasercapazde: *Identificarlosusosdelasvariablesydefinirlasintaxisparaladeclaracindeuna variable. *ListarlosochotiposdedatosprimitivosdellenguajedeprogramacinJava. *Declarar,inicializaryusarvariablesyconstantesdeacuerdoalaguaylos estndaresdecodificacinparaellenguajedeprogramacinJava. *Modificarvaloresdevariablesusandooperadores. *Utilizarpromocinyconversindetiposdedatos. Estemdulodescribecmocrearvariablesusandotiposdedatosprimitivosycmo modificarlosvaloresdelasvariablesusandooperadores,promocinyconversinde tiposdedatos. 4.2VerificacindeProgreso Escribaunnmero(entre1y5)enlacolumna"Alcomenzarelmdulo"paracalificar sucapacidadparallevaracabocadaunodelosobjetivosdeestemdulo.Unavezque hayafinalizadoestemdulo,usteddeberreevaluarsuscapacidadesydeterminarel aprendizajeadquiridoparacadaobjetivo. ElresultadodeestacomparacinayudaraSunEducationalServices(SES)enla efectividaddeestacapacitacin.Digaasuprofesoraquellostemconlamenor calificacin(un0oun1enlacolumnaderecha),paradeterminarsiesnecesario presentarmaterialadicionaldurantesusclases.Adicionalmente,estainformacinser reenviadaalgrupodedesarrollodecursosdeSESparafuturasrevisionesdelcurso.

4.3Relevancia DiscusinLassiguientespreguntassonrelevantesparacomprenderloquerespectaa variables: *Unavariablerefiereaalgoquepuedecambiar.Lasvariablespuedencontenerun valorounconjuntodevalores.Dndehavistovariablesconanterioridad? *Qutiposdedatospiensaquelasvariablespuedencontener? 4.4RecursosAdicionales RecursosadicionalesLassiguientesreferenciaspuedenofrecerdetallesadicionales sobrelostemasdiscutidosenestemdulo: *Farrell,Joyce.JavaProgramming:Comprehensive.1999. Setratadeunexcelentelibroparanoprogramadores.Explica conceptosquesonpasadosporaltoenlibrosmsavanzados. *TheJavaTutorial.[Online].Disponibleen: http://java.sun.com/docs/books /tutorial/?frontpagespotlight 4.5IdentificacindelUsodelasVariablesylaSintaxis

Lasvariablesseutilizanparaalmacenaryrecuperardatosenunprograma.El cdigoenelsiguienteejemplomuestraunaclaseShirtquedeclaravariasvariables. Lasvariablesatributo(variablesdeclaradasfueradeunmtodoysinlapalabraclave static)tambinsedenominanvariablesmiembrosovariablesdeinstancia(comopor ejemploprice,shirtIDycolorCodeenlaclaseShirt).Cuandounobjetoesinstanciadoa partirunaclase,estasvariablescontienendatosespecficosdeunainstanciadelaclase particular. Cuandounobjetoesinstanciadodesdeunaclase,estasvariablessondenominadas variablesdeinstancia,porquepuedencontenerdatosespecficosparaunobjetoquesea unainstanciaparticulardeunaclase.Porejemplo,unainstanciadelaclaseShirtpodra tenerasignadoelvalor7alavariableatributoquantityInStock,mientrasqueotra instanciadelaclaseShirtpodratenerelvalor100asignadoalavariableatributo quantityInStock. Losprogramaspuedentenertambinvariablesdefinidasdentrodelosmtodos.Estas variablessedenominanvariableslocalesporqueestndisponibleslocalmentedentrodel mtodoenelcualfuerondeclaradas.Nohayvariableslocalesdeclaradasenlaclase Shirt.Sinembargo,siseusaranvariableslocales,deberanserdeclaradasenelmtodo displayShirtInformation.

4.5.1UsodeVariables

LasvariablessonusadasextensamenteenellenguajedeprogramacinJavapara realizartareastalescomo: *Almacenardatoscorrespondientesalosatributosparaunobjetoinstanciaparticular (comosehavistaconlasvariablespriceyID). *Asignarelvalordeunavariableaotra. *Representarvaloresenunaexpresinmatemtica. *Desplegarlosvaloresenlapantalla.Porejemplo,laclaseShirtusalas variablespriceyIDparadesplegarelvalordelprecioyelIDdeuna camisa(shirt). System.out.println("Shirtprice:"+price); System.out.println("ShirtID:"+shirtID); *Almacenarreferenciasaotrosobjetos. EstecursomuestravariosusosdevariablesenlasclasesdetecnologaJava. 4.5.2DeclaracineInicializacindeVariable Ladeclaracineinicializacindelasvariablesatributosiguenlamismasintaxis general.Lasintaxisparaladeclaracineinicializacindevariablesatributoes: [modificadores]tipoidentificador[=valor]; Lasvariableslocalespuedenserdeclaradaseinicializadasenformaseparada(enlneas decdigodiferente)oenunanicalneadecdigo.Lasintaxisparaladeclaracinde variablesdentrodeunmtodoes: tipoidentificador; Lasintaxisparalainicializacindevariablesdentrodeunmtodoes: identificador=valor; Lasintaxisparaladeclaracineinicializacindeunavariabledentrodeunmtodoes: tipoidentificador[=valor]; donde: *Los[modificadores]representanvariaspalabrasclaveespecialesdelatecnologa Java,comopublicyprivate,quemodificanelaccesoqueotrocdigotieneparauna variableatributo.Losmodificadoressonopcionales(locualseindicaenlasintaxispor loscorchetes).Porahora,todaslasvariablesserncreadasconelmodificadorpublic. *Eltiporepresentaaltipodeinformacinodatoscuyosvalorespuedecontenerla variable.Algunasvariablespuedencontenercaracteres,otrasnmeroyotrasvalores booleanos.Todaslasvariablesdebenpertenecerauntipodedatos. *Elidentificadoreselnombrequeseledaalavariable.

*Elvaloreselvalorqueselequiereasignaralavariable.Esteesopcionaldadoque nosenecesitaasignarunvaloraunavariableenelmomentodesudeclaracin.

4.6TiposdeDatosPrimitivos MuchosdelosvaloresenlosprogramasdetecnologaJavaestnalmacenadoscomo tiposdedatosprimitivos. HayochotiposdedatosprimitivosprovistosporellenguajedeprogramacinJava. *Tiposenteros:byte,short,intylong *TiposPuntoFlotante:floatydouble *TipoTexto:char *TipoLgico:bolean

4.6.1TiposPrimitivosEnteros EnellenguajedeprogramacinJavahaycuatrotiposdedatosprimitivosenteros, identificadosporlaspalabrasclavebyte,short,intylong.Losconjuntosdedatosde estostiposdedatossonconjuntosdenmerossinpartedecimal. Sisenecesitaalmacenarlaedaddeunapersona,porejemplo,sepodrautilizaruna variabledetipobyte,dadoqueeltipodedatosbytepuedeaceptarvaloresenesterango. Cuandoespecifiqueunvalorenteroparauntipolong,coloqueunaLaladerechadel valorparaexplicitarqueesunvalordetipolong.Elcompiladorasumequelosliterales enterossondetipointamenosqueseutiliceunaLcomoseexplic,yencuyocaso indicaquepertenecealtipolong. LaclaseShirtcontienedosatributosdetipointparaalmcenarlosvaloresdel identificadorylacantidadenstock,yseutilizanvaloresliteralesparaproporcionarun valorinicial0(cero)pordefectoparacadauno. publicintshirtID=0;//DefaultIDfortheshirt

publicintquantityInStock=0;//Defaultquantityforallshirts

4.6.2TiposPrimitivosdePuntoFlotante EnellenguajedeprogramacinJavahaydostiposdedatosparalosnmerosdepunto flotante:floatydouble.Elconjuntodevalorescorrespondeanmerosconvaloresala derechadelpuntodecimal,talescomo12.24y3.14159. Losliteralesdepuntoflotante,pordefectopertenecenaltipodedatosdouble.Para explicitarquesetratadeunliteralpertenecientealtipodedatosfloat,sedebecolocar unaFalfinaldelvalornumrico. LaclaseShirtmuestraelusodeunvalorliteraldoubleespecificadoenelvalorpor defectoparalavariableatributoprice: publicdoubleprice=0.0;//Defaultpriceforallshirts

4.6.3TiposPrimitivosdeTexto Otrotipodedatosutilizadoparaalmacenarcaracteres,talescomouna'a',eseltipochar, enelcualcadavalortieneuntamaode16bits. LaclaseShirtmuestraelusodeunvalorliteraldetextoparaespecificarelvalorpor defectoparacolorCode: publiccharcolorCode='U'; Cuandoseasignaunvalorliteralaunavariablechar,comoporejemplot,sedebe encerrarentreelsmbolocomillasimple.Unejemplodevalorliteraldetipochares't'. Sinoseutilizaranlascomillassimples,elcompiladornopodradeterminarsisetratade unvalorliteraldetipocharounidentificador(elnombredeunavariableporejemplo). Losvaloresdeltipocharsonrepresentadosenelcomputadorcomounasecuenciade bitsquecorrespondenauncarcter.Lacorrespondenciaentrecadaunadeestas secuenciasyelcarcterquerepresentaquedadefinidaporelconjuntodecaracteresque cadalenguajedeprogramacinutiliza. LaclaseShirtcontieneunavariabledetipoprimitivodetexto,char,paraalmacenarel valorpordefectodelcolor. publiccharcolorCode='U';

4.6.4TipoPrimitivoLgico Losprogramasdecomputadoresfrecuentementenecesitantomardecisiones.El resultadodeunadecisinesunvalorverdaderoofalso(trueofalse),ypuedeser almacenadoenvariablesdetipoboolean.Enunavariabledetipobooleansolamentese puedealmacenar: *LosliteralestrueyfalsedellenguajedeprogramacinJava. *Losresultadosdeunaexpresinqueevaleatrueofalse.Porejemplo,sila variableansweresiguala42,entonceslaexpresin"if(answer