32
 Curso de programación con Java (Versión 6, JDK 1.6.0) Nivel básico Manual del alumno  © Copyright Cédric Simon, 2005-2012 Versión 2.2 Reproducción prohibida   S  o l   u  c i   o n  J  a  v  a  .  c  o  I  n  g  .  C  e  d r i   c  S i  m  o n T  e l   : 2 2  6  8  0  9  7 4  C  e l   :  8  8  8  8 2  3  8  7 E m  a i  l   :  c  e  d r i   c  @  s  o l   u  c i   o n  j   a  v  a  .  c  o m   W  e  b  :  w  w  w  .  s  o l   u  c i   o n  j   a  v  a  .  c  o m

Curso Java Basico

Embed Size (px)

DESCRIPTION

Curso Java Basico

Citation preview

  • Curso de programacin con Java

    (Versin 6, JDK 1.6.0)Nivel bsico

    Manual del alumno

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

    Solu

    cionJava.com

    Ing.CedricSim

    onTel:22680974C

    el:88882387Email:ce

    dric@

    solu

    cionja

    va.co

    mW

    eb:www.solucionjava.com

  • CursodeprogramacinconJavaNivelbsico Pagina2/32

    1 ndice1 ndice ............................................................................................................................................................................................................. 2

    2 Introduccin al curso ................................................................................................................................................................................... 5

    2.1 Objetivo de este curso .......................................................................................................................................................................... 5

    2.2 Manual del alumno .............................................................................................................................................................................. 5

    2.3 Ejercicios prcticos .............................................................................................................................................................................. 5

    2.4 Requisitos para atender a este curso .................................................................................................................................................. 5

    2.5 Soporte despues del curso .................................................................................................................................................................... 5

    3 Introduccin al Java ..................................................................................................................................................................................... 6

    3.1 Objetivo del capitulo ............................................................................................................................................................................ 6

    3.2 Historia del Java ................................................................................................................................................................................... 6

    3.3 Las versiones de Java ........................................................................................................................................................................... 6

    3.4 Uso del Java .......................................................................................................................................................................................... 6

    3.5 Caractersticas del Java ....................................................................................................................................................................... 6 3.5.1 Simple ............................................................................................................................................................................................. 7 3.5.2 Orientado objetos ........................................................................................................................................................................... 7 3.5.3 Distribuido ...................................................................................................................................................................................... 7 3.5.4 Interpretado .................................................................................................................................................................................... 7 3.5.5 Seguro ............................................................................................................................................................................................. 7 3.5.6 Multihilo ......................................................................................................................................................................................... 7

    4 Instalacin del Java ...................................................................................................................................................................................... 8

    4.1 Objetivo del capitulo ............................................................................................................................................................................ 8

    4.2 Cual versin? ........................................................................................................................................................................................ 8

    4.3 Instalacin de Java bajo Suse Linux .................................................................................................................................................. 8

    4.4 Verificacin de la instalacin .............................................................................................................................................................. 8

    4.5 Entornos de desarrollo (IDE) .............................................................................................................................................................. 9

    5 Primera aplicacin ..................................................................................................................................................................................... 10

    5.1 Objetivo del capitulo .......................................................................................................................................................................... 10

    5.2 Estructura del cdigo ......................................................................................................................................................................... 10 5.2.1 Declaracin de la clase ................................................................................................................................................................. 10 5.2.2 Declaracin de mtodo ................................................................................................................................................................. 10

    5.3 Compilacin del cdigo ...................................................................................................................................................................... 10

    5.4 Ejecucin de la aplicacin ................................................................................................................................................................. 10

    6 Caractersticas del lenguaje Java ............................................................................................................................................................... 11

    6.1 Objetivo del capitulo .......................................................................................................................................................................... 11

    6.2 Palabras reservadas ........................................................................................................................................................................... 11

    6.3 Sensibilidad ......................................................................................................................................................................................... 11

    6.4 Identificadores .................................................................................................................................................................................... 11

    6.5 Reglas de nombramiento ................................................................................................................................................................... 11

    6.6 Declaracin de variables .................................................................................................................................................................... 12 6.6.1 Variable de clase vs. Variable de mtodo .................................................................................................................................... 12

    6.7 Tipos simples ( o primitivos) ............................................................................................................................................................. 12 6.7.1 Enteros .......................................................................................................................................................................................... 13

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina3/32

    6.7.2 Reales ........................................................................................................................................................................................... 13 6.7.3 Carcter ........................................................................................................................................................................................ 13 6.7.4 Bolanos ....................................................................................................................................................................................... 14

    6.8 Constantes ........................................................................................................................................................................................... 14

    6.9 Operadores ......................................................................................................................................................................................... 14 6.9.1 Principales operadores sobre enteros y reales .............................................................................................................................. 14 6.9.2 Prioridad de operadores ................................................................................................................................................................ 15

    6.10 Conversiones entre tipos .................................................................................................................................................................. 15 6.10.1 Conversin automtica ............................................................................................................................................................... 15 6.10.2 Conversin explicita ................................................................................................................................................................... 15

    6.11 La clase Math ................................................................................................................................................................................... 16

    6.12 Comentarios ...................................................................................................................................................................................... 16

    7 Cadenas de caracteres y fechas .................................................................................................................................................................. 17

    7.1 Objetivo del capitulo .......................................................................................................................................................................... 17

    7.2 Introduccin ...................................................................................................................................................................................... 17

    7.3 String ................................................................................................................................................................................................... 17 7.3.1 Declaracin ................................................................................................................................................................................... 17 7.3.2 Caracteres especiales .................................................................................................................................................................... 17 7.3.3 Concatenacin de cadenas ............................................................................................................................................................ 17 7.3.4 Otros mtodos de String ............................................................................................................................................................... 17 7.3.5 Conversin de String a enteros o reales y contrario ..................................................................................................................... 18

    7.4 Date ...................................................................................................................................................................................................... 18

    7.5 Calendar ............................................................................................................................................................................................. 18

    8 Arreglos ....................................................................................................................................................................................................... 20

    8.1 Objetivo del capitulo .......................................................................................................................................................................... 20

    8.2 Tipos de arreglos y uso ...................................................................................................................................................................... 20

    8.3 public static void main (String [] args) ............................................................................................................................................. 20

    9 Decisiones y bucles ..................................................................................................................................................................................... 21

    9.1 Objetivo del capitulo .......................................................................................................................................................................... 21

    9.2 if ... else ................................................................................................................................................................................................ 21

    9.3 Comparacin de objetos .................................................................................................................................................................... 21

    9.4 Condiciones mltiples (AND y OR) .................................................................................................................................................. 21

    9.5 switch ................................................................................................................................................................................................... 22

    9.6 while ..................................................................................................................................................................................................... 22

    9.7 do ... while ........................................................................................................................................................................................... 22

    9.8 for ......................................................................................................................................................................................................... 22

    9.9 break .................................................................................................................................................................................................... 23

    9.10 continue ............................................................................................................................................................................................. 23

    9.11 Operador ternario ............................................................................................................................................................................ 23

    10 Paquetes, clases, y mtodos ...................................................................................................................................................................... 24

    10.1 Objetivo del capitulo ........................................................................................................................................................................ 24

    10.2 Paquetes ............................................................................................................................................................................................ 24 10.2.1 Uso ............................................................................................................................................................................................. 24 1.1.1 Importacin de paquetes .............................................................................................................................................................. 24

    10.3 Clases ................................................................................................................................................................................................. 25 10.3.1 Declaracin y uso ....................................................................................................................................................................... 25

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina4/32

    10.4 Constructores ................................................................................................................................................................................... 25

    10.5 Mtodos ............................................................................................................................................................................................. 25 10.5.1 Declaracin y uso ....................................................................................................................................................................... 25

    10.6 Modificadores de acceso .................................................................................................................................................................. 26 10.6.1 Acceso por defecto ..................................................................................................................................................................... 26 10.6.2 private ......................................................................................................................................................................................... 26 10.6.3 public .......................................................................................................................................................................................... 26 10.6.4 protected ..................................................................................................................................................................................... 26

    11 Polimorfismo, encapsulamiento, y herencia ........................................................................................................................................... 27

    11.1 Objetivo del capitulo ........................................................................................................................................................................ 27

    11.2 Polimorfismo ..................................................................................................................................................................................... 27

    11.3 Encapsulamiento .............................................................................................................................................................................. 27 11.3.1 Clases internas ............................................................................................................................................................................ 27 11.3.2 Clases abstractas ......................................................................................................................................................................... 29 11.3.3 Interfaces .................................................................................................................................................................................... 29

    11.4 Herencia ............................................................................................................................................................................................ 29

    12 Tratamiento de excepciones ..................................................................................................................................................................... 30

    12.1 Objetivo del capitulo ........................................................................................................................................................................ 30

    12.2 Errores de compilacin .................................................................................................................................................................... 30

    12.3 Errores de lgica .............................................................................................................................................................................. 30

    12.4 Errores de ejecucin ........................................................................................................................................................................ 30 12.4.1 throws ......................................................................................................................................................................................... 30 12.4.2 try .............................................................................................................................................................................................. 31 12.4.3 catch ........................................................................................................................................................................................... 31 12.4.4 finally ......................................................................................................................................................................................... 31

    13 Ejercicios ................................................................................................................................................................................................... 32

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina5/32

    2 Introduccinalcurso2.1 Objetivodeestecurso EnestecursovamosaverlasbasesdellenguajeJava.Estabaselesvaaservirporcualquiertipodeaplicacinquedesearealizar:aplicacinindependiente,applet,paginawebenJava

    2.2 Manualdelalumno Estemanualdelalumnoesunaayudaparaelalumno,paratengaunrecuerdodelcurso.Estemanualcontieneunresumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumnodeberadetomarnotaspersonalesparacompletasestemanual.

    2.3 Ejerciciosprcticos Paracaptarmejorlateora,seharnmuchosejerciciosconlosalumnos,paraprobarlateorayverificarlaintegracindelamateria.Tambin,elalumnopodrcopiarsuscdigosenundisquetealfindelcursoparallevarse,confindeseguirlaprcticaensuhogar.

    2.4 Requisitosparaatenderaestecurso Nohayrequisitosparaatenderaestecurso,peroelconocimientodeotrolenguajedeprogramacin,yespecialmenteelC++,leayudaranaentendermasrpidamenteellenguajeJava.

    Sielalumnotienedificultadesenunuotrocapitulo,eldebesentirselibredepedirexplicacionesadicionalesalprofesor.

    2.5 Soportedespuesdelcurso Sitienespreguntassobrelamateriadelcursoentusejerciciosprcticos,[email protected].

    Parainformacionessobreotroscursos,visitaelsitiowebwww.solucionjava.com.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina6/32

    3 IntroduccinalJava3.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnotendrunavistageneraldelahistoriadelJava,ascomodesuscaractersticasgenerales.

    3.2 HistoriadelJava JavafuedesarrolladoporSunMicrosystems.Laprimeraversinsalien1995.Elobjetivoeradetenerunlenguajedeprogramacinquepuedafuncionarsobrecualquierequipo,demaneraindependientedelhardwareydelsistemaoperativo.

    JavaconociungranintersdepartedelosdesarrolladoresgraciasalInternet.LosappletsdesarrolladasenJavapodanserinterpretadasyejecutadasporcualquierclienteweb,queseaunPC,unMac,Linux.FueprimerograciasasuportabilidadqueJavaestuvo(yest!)tanpopular.

    3.3 LasversionesdeJava LaprimeraversindeJavafuelaversin1.0.Siguieronlaversin1.1,1.2,1.3,1.4,1.5,yahora1.6.

    Apartirdelaversin1.2,sehabladeJava2,paradiferenciardelasversionesanteriores.

    SunMicrosystemsutilizadosnmerosdeversionesparasusproductosJava:elnmerodeversindeproducto,yelnmerodeversindedesarrollo.

    Ashablandodelproductooplataformasehablaradelaversin6.0,cuandoeldesarrolladorhablaradelaversin1.6.0

    EjemplodeproductosdeSunMicrosystems:

    Nombrecompleto Abreviacin

    Nombredeplataforma Java2PlatformStandardEdition6.0

    J2SE6.0

    Productostrabajandobajolaplataforma

    J2SEDevelopmentKit6.0 JDK6.0J2SERuntimeEnvironment6.0

    JRE6.0

    Losdosprimerosdgitosdelnmerodeversinpermitenidentificarsuversinmayor.Aslaversin1.4.2_01esunasubversin2,revisin01,delJava2,versin1.4.

    3.4 UsodelJava Javatienevariasutilidades.Puedeserviradesarrollaraplicacionesautnomas(100%Java),appletsparraelInternet(pequeasaplicacionesdescargadasyejecutandosobreelcliente),osermezcladoconotrolenguajecomoHTML(Javascript,JavaServerPages,...).

    3.5 CaractersticasdelJava LadifusinrpidadelJavahasidoposiblegraciasasusimportantescaractersticas.AqusonlascaractersticasprincipalesdelJava.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina7/32

    3.5.1 Simple Aunqueellenguajeorientadoobjeto(OO)noesfcilnisencillo,JavaesreconocidocomomsfcilqueotroslenguajescomoelC++.

    3.5.2 Orientadoobjetos Laprogramacinorientadaobjetomodelalascosasdelmundoreal,olosconceptos,comounobjeto.Aselobjetocarropuedeserviraconstruircarrosrojos,comocarrosazules,apartirdelmismoobjetocarro.

    3.5.3 Distribuido Javapermiteinteraccionesentrevariascomputadorasconectadasenredes,paradistribuireltrabajoolosrecursos.

    3.5.4 Interpretado Javaesunlenguajeinterpretado,esosignificaquenecesitauninterpreteparapoderserejecutado.EsteintrpreteeslamaquinavirtualdeJava(JVM).

    Javaestacompiladoenuncdigobinario,quelamaquinavirtualinterpreta.Aselcdigopuedesercompiladodemaneraindependientedelsistemadedestino.LamaquinavirtualdeJavaesespecficaalsistemaoperativodedestino,noalcdigo.

    3.5.5 Seguro EllenguajeJavaseutilizaenelInternetenmuchossitioswebquenecesitanunagrandeseguridad,comobancos,comercioelectrnico,...

    Javatienemuchasopcionesparagestionarlaseguridaddeejecucindelaaplicacin.

    TambinelcdigoJavadescargadodelInternetyejecutadoellamaquinadelcliente,noproducedaosenlamaquinadelcliente.

    3.5.6 Multihilo Javapermiteejecutartareassegnvarioshilosdeejecucin,esdecirejecutarvariastareasenparalelo.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina8/32

    4 InstalacindelJava4.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnotendrlasherramientasdeJavainstaladoensucomputadora.Esteesunrequisitoparapodercumplirlosejerciciosprcticos.

    4.2 Cualversin? ExistentresplataformasdeJava6:

    LaedicinestndardeJava6(J2SE).Eslaquevamosautilizar. LaedicindeempresadeJava6(J2EE).Esunaversinmsamplia,parahaceraplicaciones(web)muy

    grandes. LaedicinmicrodeJava6(J2ME).Esunaversinparahaceraplicacionesparaaparatoselectrnicos(mviles,

    beeper,MP3,...)

    Enlaplataformaestndar,haydosproductosprincipales: Elambientedeejecucin(JRE),quecontienelamaquinavirtual,yqueesnecesarioparaejecutaruncdigo

    Java. Elambientededesarrollo(JDK),quecontienelasfuentesycdigosnecesariosparacompilaruncdigoJava

    textoencdigoJavabinario,listoparaserejecutado.

    ExistenotrasversionesdeJavaqueladeSun,asporejemploelOpenJDK,olamaquinavirtualJavadeMicrosoft.Peroparamsestabilidad,yparaestartodosutilizandolamismacosa,vamosaquedarnosutilizandolasversionesdeJavadeSun.Nosotros,parapoderdesarrollarenJava,necesitamosdescargarlaversindedesarrollo(JDK)quecorrespondealsistemaoperativosobreelcualvamosatrabajar.

    ElJDK(yelJRE)sepuedendescargargratuitamentededesdeelsitiohttp://java.sun.com

    4.3 InstalacindeJavabajoSuseLinux Parainstalarlaversion1.6deJavaJDKvamosprimeroaentrarcomoelusuarioRoot(ousarsu).

    Luegoabrimosunaventanadeconsola,introducemoselCDdelcurso,yvamosainstalarlaversiondeJavaqueestaenelCDlanzandodesdeelCDlainstruccin:rpm -ivh jdk-6u4-linux-i586.rpm

    AhoraelJavaestadisponibleensistemabajo/usr/java/jdk1.6.0_04peroelJavapordefectoestodavialaversion1.5queveniaconSuse10.3.Sepuedeverificarejecutandojava -version

    Paraquelaversionpordefectosealaversion1.6hayquecambiaralgunosenlacesdebajode/etc/alternatives.Paraeso,ejecutadesdeelCD'. modifySuseJDK16.sh'. Sisaleunerrordequejavacnoexiste,ignorala.

    4.4 Verificacindelainstalacin Unavezelarchivodescargadoeinstalado,verificamosqueelJavaestabieninstaladoabriendounaventanadeejecucinyejecutandolosiguiente:java -versionyjavac

    SinocontestaquelaversiondeJavaes1.6.0,esqueJava1.6.0noestainstaladocorrectamente,oquenosehancambiadocorectamentelosatajosde /etc/alternatives.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina9/32

    Sinoreconoceeljavac,hayqueconfigurarvariablesdeambiente(path).Debajode/etcmodificarelarchivoprofile adjuntandoelcamino /usr/share/java/binenlavariablePATH.

    BajoWindows,elcaminohacialacarpetabindeJavadebeestarincluidoenlavariabledeentornoPath.BajoXPyWindows2000,clickderechosobreMi PC... Propiedades... Opciones avanzadas... Variables de entorno... Variables de sistema.EditarlavariablepatheincluiralfinalentredoblecomillaselcaminohaciaJava(porejemplo"C.\Archivos de Programa\Java\jdk1.6.0_04\bin).

    4.5 Entornosdedesarrollo(IDE) SiparaprogramarenJava,nosenecesitamsqueuneditordetexto(yelJavainstalado...),existenvariasaplicacionesqueayudanenlaprogramacin,identificandolaspalabrasreservadas,proponiendolasintaxis,formateandoelcdigo,etc...

    Paraestecurso,vamosautilizarunsimpletratamientodetexto,porqueeselmassimple,yorequieremanualdeusuario,comociertosentornosdedesarrollo.Parasuinformacin,aquestnunosentornosdedesarrolloparaJavaqueproponenunaversingratis,yquesondisponiblesparaWindowscomoparaLinux:

    Eclipse(www.eclipse.org) NetBeans(www.netbeans.org) JdeveloperdeOracle(www.oracle.com)

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina10/32

    5Primeraaplicacin5.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnoharcreadoyejecutadosuprimercdigoJava.

    Estaprimeraaplicacinservirdebaseparaponerenprcticayprobarlateoraquevamosaverenlosprximoscaptulos.

    5.2 Estructuradelcdigo Parapoderserejecutado,uncdigoJavanecesitaalmenosunaclase,yqueestaclasecontieneunamtodo,lamtodomain.

    AquestaunejemplodeunaaplicacinqueimprimaenlaconsolaEstoyenmain:class Test {

    public static void main(String[] args) { // metodo principalSystem.out.println("Estoy en main!");

    }// fin de metodo Main} // fin de clase

    5.2.1 Declaracindelaclase Laclasetienequeserdeclaradaconlapalabrareservadaclass,yseguidodeunespacioydelnombredelaclase(aquTest).

    Laclasetienequeserguardadaenunarchivoquetengaelmismonombrequelaclase,ylaextensin.java

    Elinicioyelfinaldelaclaseestnmarcadoscon{y}respectivamente.Ahorateneosunobjeto(clase)quesellamaTest.

    5.2.2 Declaracindemtodo Elmtodoprincipal,queestallamadacuandoseinicialaaplicacinJavaeselmtodomain(public static void main(String[] args)).

    Elinicioyelfinaldelmtodoestnmarcadoscon{y}respectivamente.Estemtodohacesolamenteunaaccin:imprimaenlaconsolaeltextoEstoyenmain!).

    Paramasinformacionessobrelasclasesymtodos,verelcapituloPaquetes,clases,ymtodos.

    5.3 Compilacindelcdigo Unavezelcdigoguardado(Test.java),lopodemoscompilarejecutandolainstruccinsiguiente:javac Test.java

    Estainstruccinvaacompilarelcdigoy,silacompilacinsaleconxito,crearunarchivoTest.class

    5.4 Ejecucindelaaplicacin Paraejecutarelcdigodenuestraaplicacin,llamamosalainstruccinjava Test. EnlaconsoladebeaparecerEstoyenmain!.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina11/32

    6CaractersticasdellenguajeJava6.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnosercapazdeelegireltipodevariablenecesariaparaunciertotipodedatos,ypodrdeclararvariablesyconstantesenJava.

    Elpodrtambinponercomentariosensucdigo,convertirdatosdeuntipoaotro,yhaceroperacionessobrevariables.

    6.2 Palabrasreservadas HaypalabrasquesonreservadasporquetienenunsignificadoespecialdentrodellenguajeJava.Asnosepuedenutilizarparaotracosaquesuusopredefinido.Todaslaspalabrasreservadasestanenminsculas.

    ListadepalabrasreservadasdelJava1.6.0:

    abstract continue for new switchassert*** default goto* package synchronizedboolean do if private thisbreak double implements protected throwbyte else import public throwscase enum**** instanceof return transientcatch extends int short trychar final interface static voidclass finally long strictfp** volatileconst* float native super while

    * not used** added in 1.2*** added in 1.4**** added in 5.0

    6.3 Sensibilidad Javaessensiblealasmaysculasylasminsculas.Astryesunapalabrareservada,peroTryno.

    6.4 Identificadores Losidentificadoressonlosnombresquesedanparaidentificaralasclases,paquetes,interfaces,mtodos,yvariables.

    Elnombredeunidentificadortienequecumplirconciertasreglas: Debetenerunomascaracteres(sinlongitudmxima) Nopuedeconteneroperadores(+,,>...) Nopuedeserigualaunapalabrareservado(if,void,...).Verlalistadepalabrareservadasarriba. Elprimercarctertienequeserunaletra,elcarcter$oelcarcter_(subrayado). LasletrasquepuedenserutilizadassonlasdelalfabetoUnicode,conmaysculasyminsculas(cuidadoque

    Javahacediferenciasentremaysculasyminsculas!).

    6.5 Reglasdenombramiento Parateneruncdigomsestndar,existenrglasdenombramientodelospaquetes,clases,mtodos,variables,yconstantes.

    Losnombresdepaquetesestnnormalmenteenminsculas.Ej:paquetetest

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina12/32

    Losnombresdeclasesestnnormalmenteenminsculas,conlaprimeraletraenmayscula,ascomolaprimeraletradecasenombreinterno.Ej:claseTestJava

    Losnombresdemtodosyvariablesestnnormalmenteenminsculas,conlaprimeraletraenminscula,ylaprimeraletradecasenombreinternoenmayscula.Ej:mtodogetNombre,variableedadEmpleado,...

    Losnombresdeconstantesestnnormalmenteenmaysculas.Ej:constantePREF_TEL;

    AnquenoseguirestasreglasdenombramientonoprovocaerroresenJava,peroaltrabajarenequipo,alutilizarcdigodeotrapersona,oalquererutilizarciertasopcionesdeherramientasparagenerarpartedecdigodemaneraautomtica,elseguimientodeestasreglasesmuyimportante.

    6.6 Declaracindevariables Lasvariablespermitenalmacenardatosdeentrada,desalida,ointermedios.

    Lasintaxisbsicadedeclaracindevariablees: ;int miNumero;

    Enladeclaracinsepuededeclararalavezvariasvariablesdeunmismotipo,separandolosnombresdevariablesconunacoma. ,;int miNumero, tuNmero;

    Enladeclaracinsepuedetambininicializarlavariable,asignndoleunvalor.Elvalorseasignaconelsignoigualylavalorinicial. = ;int miNumero = 1;

    Unavariableestdisponiblesolamenteadentrodelbloquedecdigoadondeestdeclarado(delimitadopor{}).Losdiferentesnivelesonclase,mtodo,ybloqueadentrodeunmtodo.

    6.6.1 Variabledeclasevs.Variabledemtodo Unavariabledeclaradaalniveldelaclaseseinicializapordefectoacero(enterosyreales),false(bolean),oanulo(otrostipos).Lasvariablesdeclasesondisponiblededesdecualquiermtododelaclase.

    Unavariabledeclaradaenunmtododebeserinicializadademaneraexplicitaparapoderserutilizada.

    Siunvariabledemtodotieneelmismonombrequeunvariabledeclase,adentrodeestemtodolavariabledemtodosobreescribelavariabledeclase,amenosquesemenciona'this.'Anteselnombredelavariable(parautilizarlavariabledeclase).

    Unavariabledemtodonopuedesersobreescritaporotra.Esdecir,losnombredevariabledebensernicosadentrodeunmtodo.

    6.7 Tipossimples(oprimitivos) Lostipossimplessontiposquenosonorientadosobjetos.Sesubdividenentreenteros,reales,carcter,ybolanos.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina13/32

    6.7.1 Enteros Haycuartotiposdeenteros:byte,short,intylong.Todospuedenserpositivosonegativos,ytienenunacapacidadde8,16,32o64bits.

    Cuandoseasignaunvalornumricoaunlong,haypegarlelaletralparaindicaraJavaqueesunlong.Pordefecto,unvalorenteroestaconsideradocomounint.

    Ejemplosdedeclaracin:int miNumero = 1;byte testByte = 17;short testShort = 12357;long testLong = 122132135l;

    6.7.1.1 byte Elbytepuedecontenervaloresenterasentre128y127.

    6.7.1.2 short Elshortpuedecontenervaloresenterasentre32768y32767.

    6.7.1.3 int Elintpuedecontenervaloresenterasentre2147483648y2147483647.

    6.7.1.4 long Ellongpuedecontenervaloresenterasentre9223372036854775808y9223372036854775807.

    6.7.2 Reales Losrealescontienesvaloresconcomaflotante,quepermitealmacenarnmerosmuygrandesomuypequeoscongrandeprecisin.

    Losrealessedividenentrefloatydouble.Losfloattienenprecisinsimple(6o7dgitosmximo)ylosdoubletienenprecisindoble(14o15dgitos).Pordefecto,unvalorrealestaconsideradocomoundoble.

    Cuandoseasignaunvalornumricoaunfloat,haypegarlelaletrafparaindicaraJavaqueesunfloat.

    Ejemplosdedeclaracin:float testFloat = 1.771f;double testDouble = 1.221;

    6.7.2.1 float Elfloatpuedecontenervaloresdecimalesentre3,4E38y3,4E38.

    6.7.2.2 double Eldoublepuedecontenervaloresdecimalesentre1,7E308y1,7E308.

    6.7.3 Carcter Elcarcter(char)puedecontenersolouncarcter.Lascadenasdecaracteressernvistosenotrocapitulo.

    Ejemplodedeclaracin:char miChar='A';

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina14/32

    6.7.3.1 char Eltipocarcter(char)puedecontenerun(ysoloun)carcterUnicode.ElUnicodepermiteutilizaruncarcterdecualquieridioma.Elcarctersedeclaraentresimplecomillas:

    6.7.4 Bolanos

    6.7.4.1 boolean Losbolanospuedentomarexclusivamenteelvalortrueofalse(verdaderoofalso).

    Ejemplodedeclaracin:boolean miBoolean=true;

    6.8 Constantes Lasconstantessondatoscuyovalornopuedecambiardurantelaejecucindelprograma.

    Lasconstantesutilizanlosmismostiposquelasvariables,ysedeclarandelamismamaneraalaexceptionqueseponefinalanteseltipodedato.

    Lasintaxisbsicadedeclaracindevariablees:final ;final int MI_CONSTANTE;

    6.9 Operadores Losoperadoresseutilizanparahaceroperacionessobrelasvariables.Permitencombinar,modificar,oevaluarlasvariables.

    6.9.1 Principalesoperadoressobreenterosyreales Resta++ Incremento Decremento= Asignacin== Igualdad!= Desigualdad< Menosque= Mayoroigualque> Mayorque+ Suma* Multiplicacin/ Divisin% Modulo! Negacinlgica

    Losoperadoresdeincremento(++)ydecremento()sepuedenutilizarantesodespusdelavariable,pegadoaella.

    Siseutilizanantes,lavariableseincrementaodecrementadirectamente.Siseutilizadespus,lavariableseincrementaodecrementajustodespusdehabersidoutilizada.

    Ejemplodedeclaracin:int i = 0; System.out.println(++i); // imprime 1 System.out.println(i); // imprime 1System.out.println(i++);// imprime 1

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina15/32

    System.out.println(i); // imprime 2

    System.out.println(i++ +" y "+ --i ); // imprime 2 y 2

    6.9.2 Prioridaddeoperadores Comoenlamatemtica,enJavaexistenprioridadesentrelosoperadores.Losparntesistienenlamsgrandeprioridad,sepuedenutilizarparaforzarunordendeevaluacin,ascomoparafacilitarlalecturadelcdigo.

    Prioridaddeslosoperadores:1. ()[]2. !++3. new(tipo)4. */%5. +6. >>==>>>=

  • CursodeprogramacinconJavaNivelbsico Pagina16/32

    System.out.println("36.98 * 100 -> Float="+Float.parseFloat("36.98")*100+" - Double="+Double.parseDouble("36.98")*100);System.out.println("(long) (36.98 * 100) -> Float="+ (long)(Float.parseFloat("36.98")*100)+" - Double="+ (long)(Double.parseDouble("36.98")*100)); System.out.println("Math.round(36.98 * 100) -> Float="+Math.round(Float.parseFloat("36.98")*100)+" - Double="+Math.round(Double.parseDouble("36.98")*100));

    6.11 LaclaseMath LaclaseMathdelJavacontienelamayoradelasoperacionesmatemticasquesehacensobreenterosoreales.Paralalistacompletademtodos,verladocumentacinJava.

    Incluyeentreotros:Elvalorabsoluto Math.abs()Mximoentre2exp Math.max(,)Nmeroaleatorio Math.random()Sinus Math.sin()Lognatural Math.log()Elenteroigualosuperior Math.ceil()Elenteroigualoinferio Math.floor()

    6.12 Comentarios EnelcdigoJavasepuedenmetercomentarios.

    Loscomentariosdeunasolalneasesgnalacon//.Loscomentariosdeunaovariaslneassesgnalacon/*alinicio,y*/alfinal.

    Ejemplos:/* Este

    es un comentariode varias lneas */

    int miNumero2; int miNumero = 1; // Este es una muestra de comentario de una lnea

    LoscomentariosdeunaovariaslneasquetienencomoobjetivodeparticiparenlacreacindeladocumentacinJava(Javadoc)sesgnalacon/**alinicio,y*/alfinal.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina17/32

    7Cadenasdecaracteresyfechas7.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnosercapazdeutilizarymanejarcadenasdecaracteresyfechas.

    7.2 Introduccin EnJava,existenvariables(objetos)quepuedencontenercadenasdecaracteresofechas,quenosontiposprimitivosdeJava,sinoobjetosutilizadoscomotipo,yquetienensuspropiosmtodosparasermodificadas.

    7.3 String ElobjetomasutilizadoparacontenercadenasdecaractereseseltipoobjetoString.Estetipopermiteguardarunacadenadecaracteressinlimitacin,sinolalimitacindelamemoriadelacomputadora.

    7.3.1 Declaracin Lascadenasdecaracteressedeclarancomolasvariables,yelvalorsemencionaentredoblecuotas.

    Ejemplo:String miTexto = "Hola Nicaragua!";

    7.3.2 Caracteresespeciales Parainsertarciertoscaracteresespecialesadentrodeunacadenadecaracteres,hayquemencionarlosdetrsdeunacontrabarra(\).

    Paramencionarunadoblecomilla:\"Paramencionarunatabulacin:\tParamencionarunanuevalnea:\nParamencionarunregresoalalnea:\rParamencionaruncarcterUnicode:\uxxxxadondexxxxeselvalorhexadecimaldelcarcter

    O\xxxadondexxxeselvaloroctaldelcarcter(0a7)

    7.3.3 Concatenacindecadenas Paraconcatenardoscadenasdecaracteres,sepuedeutilizarelmtodoconcatoelsigno+.

    Ejemplo:String miTexto = "Hola!";miTexto += "Una prueba.";

    Hayquetenercuidadoconlasconcatenaciones,porqueconelobjetoString,cadaconcatenacincreaunnuevoobjeto,loqueconsumememoria.SiUstednecesitahacermuchasconcatenaciones,utilizamejorlaclaseStringBuilder.

    7.3.4 OtrosmtodosdeString ExistenmuchosmtodosdelobjetoStringparahaceroperacionessobrecadenadecaracteres.Paralalistacompletademtodos,verladocumentacinJava.

    Porejemplo:length(), charAt(int ),substring (int ,int ),...

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina18/32

    7.3.5 ConversindeStringaenterosorealesycontrario Paraconvertirunacadenadecaracteres(quecontienesolounnmero)aenterosorealesocontrario,hayqueutilizarmtodosespeciales.

    Ejemplos:int miNumero = Integer.parseInt("1234");float miFloat = Float.parseFloat("123.566");String miConvertido = String.valueOf(miFloat);

    7.4 Date LaclaseDate delpaquetejava.util seutilizaparaguardarfechasyhoras.Comoelpaquetejava.utilnosecargapordefecto,hayqueimportarlo.Solotienedosconstructores:unosinargumento,queasignalafechayhoraactual,yunoconunargumentolongquecontieneelnmerodemilisegundosquehayqueincrementaralafechadel1/1/1970.LaclaseDate tienemtodos,entreotrasparacambiarlafecha,extraerelda,mes,ao...formatearlafechaoconvertirlaenString.Peromuchosdesusmtodosestndespreciadas,ysetienequeutilizarlaclaseCalendar.Paralalistacompletademtodos,verladocumentacinJava.

    ExistetambinunobjetoDate enelpaquetejava.sql queseutilizaparamanejarfechasdurantelasconexionesabasesdedatos.

    Ejemplo:import java.util.Date;public class TestDate{Date miFecha = new Date();}

    7.5 Calendar LaclaseCalendar,ysusubclaseGregorianCalendar,permitemanejarfecharsegnelcalendarioGregoriano.

    Conesteclasepodemosgradardatosdefechaymanejarlashaciendo,entreotros,sumasydiferenciasdefechas.

    Ejemplo:import java.util.*;

    public class TestFecha {public TestFecha() {

    System.out.println(getCurrDate());System.out.println(getTestDate());

    }

    public String getCurrDate() {Calendar cal = new GregorianCalendar();String day = "0" + cal.get(Calendar.DATE);int pos = day.length();day = day.substring(pos - 2, pos);String month = "0" + (cal.get(Calendar.MONTH) + 1);pos = month.length();month = month.substring(pos - 2, pos);String year = "" + cal.get(Calendar.YEAR);String currdate = day + "/" + month + "/" + year;return currdate;

    }

    public String getTestDate() {Calendar cal = new GregorianCalendar();cal.set(1996, 11, 1); // cuidado que el mes empieza con 0 y no 1 (0->11)System.out.println(cal.get(Calendar.DATE)); // 1System.out.println(cal.get(Calendar.MONTH)); // 11System.out.println(cal.get(Calendar.YEAR)); // 1996

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina19/32

    String day = "0" + cal.get(Calendar.DATE);int pos = day.length();day = day.substring(pos - 2, pos);String month = "0" + (cal.get(Calendar.MONTH) + 1); // +1 para corregir el mespos = month.length();month = month.substring(pos - 2, pos);String year = "" + cal.get(Calendar.YEAR);String currdate = day + "/" + month + "/" + year; // 01/12/1996return currdate;

    }

    public static void main(String[] args) { // metodo principalSystem.out.println(new GregorianCalendar().getTime());new TestFecha();

    }// fin de metodo Main}

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina20/32

    8Arreglos8.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnosercapazdeutilizarymanejarunacoleccindedatos.

    8.2 Tiposdearreglosyuso EnJavaexistenvariablesquepuedencontenerunacoleccindedatosdelmismotipo.

    Losarreglosaunadimensincontienenunalistadevalores,unarreglobidimensionalcontendrunatabladedatos.

    As,sepuedeguardarunatabladedatosenunsolovariable.

    Losarreglospuedenserdetiposimplecomodeobjetos.

    Sedeclarancon[]detrsdeltipoparaunadimensin,y[][]paradobledimensin.

    Cuandosecreaunarreglo,suselementosestninicializadospordefectoaceroparaarreglosdeenterosyreales,unacadenavacaparachar,falseparabolanos,ynullparalosobjetos.

    Losndicesdeunarregloempiezancon0yseincrementanporunidad.

    Unavezinicializado,eltamaodelarreglonopuedecambiarmas.

    Ejemplosdedeclaracin:String paginaList []= {"Formato A4", // arreglo de 4, inicializado con valores "Carta 8.5 x 11", "Prescripcion US", "Prescripcion BE"};

    int miArregloInt [] = new int [9]; // arreglo de 9 lneas, inicializado con ceroint miArreglo2 [] [] = {{1,2,3},{2,4,6}}; // arreglo de 2 lneas y 3 columnas, inicializado con valores.

    Ejemplosdeutilizacin:miArregloInt [0]=5; // asigna el valor 5 al primer miembro del arregloint miNumero = miArregloInt [0]; // miNumero ser igual a 5System.out.println(miArreglo2[0][0]); // imprime 1System.out.println(miArreglo2[0][2]); // imprime 3System.out.println(miArreglo2[1][2]); // imprime 6System.out.println(miArreglo2[2][3]); // esta lnea genera un error java.lang.ArrayIndexOutOfBoundsException

    8.3 publicstaticvoidmain(String[]args) Elmtodopublic static void main (String [] args)acceptacomoparametrodeentradaunarreglodeString.

    Parapasarlosvaloresenparametro,semencionandespusdelnombredelaclase,separadosporespacios.Siunvalorcontieneespacios,hayqueponerlaentredoblecomillas.

    Ejemplo:public static void main(String[] args) { // metodo principal

    System.out.println(args[0]); // imprime UnoSystem.out.println(args[1]); // imprime y dos

    }java Test Uno "y dos"

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina21/32

    9Decisionesybucles9.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnosercapazdecrearesquemadedecisionesensucdigo,ascomocrearymanejarbucles.

    9.2 if...else Elifseutilizaparacrearesquemadedecisiones.Sepuedeutilizarconelelse,peroesfacultativo.

    Elif,quesignificasipermiteprobarunaovariascondiciones.Elresultadodecadacondicinsiempreessiono.Lascondicionessiempreestnentreparntesis.

    Despusdelifvienelainstruccinqueserrealizadaencasoqueelresultadodela(s)condicin(es)saleverdadero.

    Elelse,quesepuedetraducirporsinosecumplio,lainstruccinqueserrealizadaencasoqueelresultadodela(s)condicin(es)delifsalifalso.

    Sihaymasqueunainstruccinqueejecutartraselifoelelse,hayqueutilizarunbloquedeinstrucciones,conteniendolasinstruccionesentre{y}.

    Ejemplo:int licencia = 0;if (licencia==1) System.out.println("!Yo tengo la licencia!);else {System.out.println("!No tengo licencia!);

    System.out.println("Pero la voy a comprar pronto...); }

    9.3 Comparacindeobjetos Parahacercomparacionesentredosobjetos,essiempremasseguroutilizarenmtodoequals,porqueelusode==harlacomparacinbasadaenlosobjetos,ynoensucontenido.

    Ejemplo:String miTexto = "Hola!";if (miTexto.equals("Hola!")) System.out.println("OK");

    9.4 Condicionesmltiples(ANDyOR) Paramencionarcondicionesmltiplesseutilizanlossmbolos|y&.

    ParaquecumpleconunaYotracondiciones,seutilizael&(significaY).

    ParaquecumpleconunaUotracondiciones,seutilizael|(significaO).

    Paraqueevalasolamentelascondicionesnecesarias(encasodeY,silaprimeranocumple,noevalalasotra,encasodeO,silaprimeracumple,noevalualasotras),sedoblaelsino(||o&&).Paramejorrendimientosedoblasiempre.

    Ejemplo:int licencia = 0;if (licencia > 10 || licencia == 5) System.out.println("!Yo tengo la licencia 5 o > 10!");else if (licencia < 10 || licencia > 5) System.out.println("!Tengo licencia entre 5 y 10!"); else System.out.println("!Tengo licencia < 5 ");

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina22/32

    9.5 switch Elswitchseutilizaparacrearesquemadedecisiones.Elswitchpermitedetenervariasalternativas,encontradelif...elsequesolotienedosalternativas.

    Primerasedeclara,entreparntesis,cualvariablesevaaevaluar.Solochar,byte,shortointpedenserevaluados.

    Siguiendo,paracadaalternativa,semencionalapalabracaseconlavalorcorrespondiendoalavalordelaalternativa,yelcdigoquehayqueejecutar.Sinoseterminalaalternativaconlapalabrabreak,elcdigodelasalternativassiguientesevanaejecutartambin,mismosielvalordelavariableevaluadanocorrespondealcase.

    Porfin,lapalabradefaultseutilizaparamencionaraccionesarealizarencasoqueningunaalternativasaliverdadera.Comoparaelcase,deberaterminarconbreakparaquenoseejecutaraotrocdigosiguiendo.Sihaymasqueunainstruccinqueejecutartraselcaseoeldefault,hayqueutilizarunbloquedeinstrucciones,conteniendolasinstruccionesentre{y}.

    Ejemplo:int test=1;switch (test) {

    case 1 : System.out.println("Igual a 1");case 10 : System.out.println(" Igual a 10");

    break;case 20 : System.out.println(" Igual a 20");default : System.out.println(" Igual a otro valor"); }

    9.6 while Elwhile...seutilizaparacrearbucles,esdecirrepetirunaaccinportantoquesecumpleaunacondicin.

    Lacondicinquehayquecumplirsemencionadetrsdelapalabrawhile,entreparntesis.

    Lasaccionesquehayqueejecutarsemencionandetrsdelwhile.Sihaymasqueunainstruccinqueejecutar,hayqueutilizarunbloquedeinstrucciones,conteniendolasinstruccionesentre{y}.

    9.7 do...while Eldo...whileseutilizaparacrearbucles,esdecirrepetirunaaccinportantoquesecumpleaunacondicin.

    Lacondicinquehayquecumplirsemencionadetrsdelapalabrawhile,entreparntesis,yterminaconpuntocoma';'.

    Lasaccionesquehayqueejecutarsemencionandetrsdeldo.Sihaymasqueunainstruccinqueejecutar,hayqueutilizarunbloquedeinstrucciones,conteniendolasinstruccionesentre{y}.

    Laclusuladosepuedemencionarantesdelaclusulawhile.Enestecaso,elcdigodelaclusuladoseejecutaraunaprimeravezantesdeverificarlacondicindelwhile,yserepetirhastaquelacondicinseafalsa.

    Ejemplo:int miNumero = 1;do {System.out.println("El nmero actual es "+ ++miNumero); }while (miNumero < 5);

    9.8 for Elforseutilizaparacrearbuclesunnmerofijodeveces.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina23/32

    Lacondicinquehayquecumplirsemencionadetrsdelapalabrafor,entreparntesis,ytienetresdiferentepartes,separadaspor;.Cadaparteesopcional,peroel;tienequesermencionadomismosilaparteestavaca.

    Laprimerapartesirveadeclararunvariable(usualmenteunint)y/oasignarleunvalororiginal.

    Lasegundapartecontienelacondicindeejecucin.Usualmentelavariableinicializada>oii) break;System.out.println(i);}

    9.10 continue Lainstruccincontinuesolosepuedeusarenbucles,ypermitedesaltardirectamentealabuclesiguiente,sinejecutarelrestodelcdigodelabuclecorriente.

    Ejemplo:int ii = 5;for (int i = 0; i < 10; i++) {

    if (i==ii) continue;

    System.out.println(i); }

    9.11 Operadorternario Otrooperadorcondicionaleseloperador"?:"(oternario).

    Ejemplo:.Asignacindeunvalorpredeterminado// Ejemplo de uso de: el Operador Ternarioint edad=5;String tipo = ((edad

  • CursodeprogramacinconJavaNivelbsico Pagina24/32

    10Paquetes,clases,ymtodos10.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnosercapazentenderelusoydecrearpaquetes,clases,constructores,ymtodos,ydedefinirleslosderechosdeaccesonecesarios.

    10.2 Paquetes

    10.2.1 Uso Lospaquetesseutilizanparareunirclasesquepertenecenaunamismaaplicacin,oquetienenalgunascaractersticajuntas.

    Porejemplo,sepuedecrearunpaqueteparalasclasesespecficasdeunaaplicacin,yotrospaquetesparaclasesgenerales,comotiles,conexinalabasededatos,etc...

    Elnombredelpaquetetienequecorresponderconelnombredelacarpetaenlacuallaclasedelpaqueteestaguardada.Unpaquetepuedecontenervariosniveles.Porejemplo,elpaqueteitc.nicaseencontrarabajolacapetaitc,queseencontrarabajolacarpetanica.

    Pordefecto,lasclasesdeunmismopaquetetienenaccesoatodaslasclasesdeestemismopaquete.Estederechodeaccesopuedesermodificado,utilizandomodificadoresdeacceso,parapermitirelusodeunaclaseporclasesdeotrospaquetes,orestringirelusodeunaclase.Veremoslosmodificadoresdeaccesomsadelante.

    Laprimerainstruccindeunarchivodeunaclasequepermaneceaunpaquetees:package ;

    Paracompilarunpaquete,hayqueestarenlaraizdelaaplicacin,ycompilarconjavac nombre_del_paquete/NombreDeLaClase.java

    Parallamaraunaclasedeunpaquetehayqueestarenlaraizdelaaplicacinyllamarajava nombre_del_paquete.NombreDeLaClase

    1.1.1 Importacindepaquetes Cuandoserequiereunobjetodeotropaquete,senecesitaponerelnombreenterodelpaquetedelanteelnombredelobjeto,separadocon..

    Porejemplo,parallamaralobjetoMitestdelpaquetetest :test.Mitest

    Paranotenerquemarcarsiempreelnombredelpaquetedelanteelobjeto,hayqueimportarelpaquete.

    Paraimportarunpaquete,hayquemencionarlapalabraimportyelnombredelpaquetemas;.Laimportacinsolosepuedehacerentreladeclaracindelpaquetedelcdigo(siperteneceaunpaquete)yladeclaracindelaclaseprincipaldelcdigo.

    Ejemplo:package dbaccess;import java.sql.*;public class Readdb {...}

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina25/32

    10.3 Clases

    10.3.1 Declaracinyuso LaclaseeslaunidadprincipaldelJava.Unaclasesirveparadefinirunobjeto,ycontienesusconstructoresysusmtodos.

    Sonlosconstructoresymtodosquepermitirninicializarymanejarelobjeto.

    Laclasepuedetenervariableoconstantesquesernaccesiblesportodoslosconstructoresymtodosdelaclase.

    Unaclasetienederechosdeaccesoquesepuedenmodificar.Losderechosdeaccesosestarnexplicadosmasadelanteenestecapitulo.

    Unaclasetienequeserguardadasbajounarchivoquetengaelmismonombrequelaclase.

    Ejemplo:class Test {private int miNumero; //variable de clasepublic Test (){ // constructor

    miNumero=1;}public void mtodo_1 (){ // metodo

    miNumero+=10; ...}

    }

    10.4 Constructores Elconstructoreslapartedelaclasequepermiteinicializarlaclase.Pordefectounaclasetieneunconstructorsinargumentoysinaccin.

    Elconstructorsepuededefinirysobredefinirparaejecutarciertasaccionesy/oparaaceptarparmetros(argumentos)alinicializarlaclase.

    Elconstructorsedefinecomounmtodoquetieneelmismonombrequelaclase,yquenopuederegresarvaloresniextenderotromtodo.

    Unamismaclasepuedetenervariosconstructores.

    Ejemplo:class Test {int miCampo; // variable de clasepublic Test (int miNumero){ // mi constructor

    miCampo = miNumero; // variable de clase inicializada}

    }

    10.5 Mtodos

    10.5.1 Declaracinyuso Unmtodoesunacaractersticadeunaclase.Unmtodopermiteejecutaraccionessobreelobjeto(class).

    Sonlosmtodosquehacentodaslasaccionesdeunaaplicacin,asquecontienenlamayoradelcdigo.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina26/32

    Unmtodotiene,comolaclase,derechodeaccesoquesepuedenmodificar,ytambinsenecesitaindicarsielmtodoregresaalgunavalorono,ycualeseltipodevaloreregresada.

    Losmtodospuedenaceptarcero,uno,ovariosparmetrosdeentrada,ypuedensersobredefinida,esdecirtenerunmismonombrecondiferentesnmerosotiposdeparmetros.

    Elmtodomain(public static void main(String[] args))esunmtodoespecialqueestallamadoporlaJVMaliniciarunaaplicacin.Elmtodomainpuedeaceptarcero,uno,ovariosparmetros,quesoncadenasdecaracteres.

    Ejemplo:class Test {

    public int calculo (int nmeroDado){ // metodo de calculoreturn nmeroDado+5;

    }// fin de metodopublic static void main(String[] args) { // metodo principal

    Test miTest = new Test();int resultado = miTest.calculo(12);System.out.println(resultado);

    }// fin de metodo Main} // fin de clase

    10.6 Modificadoresdeacceso

    10.6.1 Accesopordefecto Pordefecto,unaclase,mtodo,odatoesvisibleenestepaquete.

    10.6.2 private Elmtodo,odatoesvisiblesoloenestaclase.

    10.6.3 public Laclase,mtodo,odatoesvisibleentodoeluniverso.

    10.6.4 protected Laclase,mtodo,odatoesvisibleenestepaqueteylassubclasesdeestaclaseencualquierpaquete.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina27/32

    11Polimorfismo,encapsulamiento,yherencia

    11.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnosercapazdeentender,identificarsituacionesquenecesitan,yutilizarelpolimorfismo,elencapsulamiento,ylaherencia.

    11.2 Polimorfismo ElpolimorfismoeslacapacidadquetieneJavadediferenciarmtodosquetieneunmismonombregraciasasusparmetros,odeinicializarunaclaseutilizandoenconstructorcorrespondientealosparmetrospasados.

    Ejemplo:public class TestPoli { static int numeroGeneral; public TestPoli() { numeroGeneral=5; } // fin constructor public TestPoli(int inicializaNo) { numeroGeneral=inicializaNo; } // fin constructorpublic static void main(String[] args) { // metodo principal TestPoli miTest= new TestPoli(Integer.parseInt(args[0])); System.out.println("Constructon con (int). numeroGeneral = "+numeroGeneral); TestPoli miTest2= new TestPoli(); System.out.println("Constructon sin argumento. numeroGeneral = "+numeroGeneral); }// fin de metodo main} // fin de clase

    11.3 Encapsulamiento Elencapsulamientopermitedeesconderlaestructurainternadeunobjeto,ysoloensearlonecesario.

    Elencapsulamientosehaceutilizandomodificadoresdeacceso,paquetes,clasesinternas,claseabstractas,y/ointerfaces.

    11.3.1 Clasesinternas Unaclaseinternaesunaclasedefinidadentrodeotraclase,llamadaclasecontenedora.

    11.3.1.1 Claseseinerfacesinternasstatic Seconocentambincomoclasesanidadas(nestedclases).Lasclaseseinterfacesinternasstaticslopuedensercreadasdentrodeotraclasealmximonivel,esdecirdirectamenteenelbloquededefinicindelaclasecontenedoraynoenunbloquemsinterno.Estetipodeclasesinternassedefinenutilizandolapalabrastatic.Todaslasinterfacesinternassonimplcitamentestatic.

    Enciertaforma,lasclasesinternasstaticsecomportancomoclasesnormalesenunpackage.Parautilizarsunombredesdefueradelaclasecontenedorahayqueprecederloporelnombredelaclasecontenedorayeloperadorpunto(.)Estetipoderelacinentreclasessepuedeutilizarparaagruparvariasclasesdentrodeunaclasemsgeneral.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina28/32

    11.3.1.2 Clasesinternasmiembro Lasclasesinternasmiembroosimplementeclasesinternas,sonclasesdefinidasalmximoniveldelaclasecontenedora(directamenteenelbloquedediminucindedichaclase),sinlapalabrastatic.Sesuelenllamarclasesinternasmiembroosimplementeclasesinternas.Noexisteninterfacesinternasdeestetipo.

    Otrasclasesdiferentesdelasclasescontenedoraeinternapuedenutilizardirectamentelosobjetosdelaclaseinterna,sincualificarlosconelobjetooelnombredelaclasecontenedora.

    Lasclasesinternaspuedentambinserprivateyprotected(lasclasesnormalesslopuedenserpublicypackage).Estopermitenuevasposibilidadesdeencapsulacin.

    Losmtodosdelasclasesinternasaccedendirectamenteatodoslosmiembros,inclusoprivate,delaclasecontenedora.

    Tambinlaclasecontenedorapuedeaccedersidisponedeunareferenciaatodaslasvariablesmiembro(inclusoprivate)desusclasesinternas.

    Unaclaseinternapuedeaccedertambinalosmiembros(inclusoprivate)deotrasclasesinternasdefinidasenlamismaclasecontenedora.

    11.3.1.3 Clasesinternaslocales Lasclasesinternaslocalesosimplementeclaseslocalesnosedeclarandentrodeotraclasealmximonivel,sinodentrodeunbloquedecdigo.

    Lasprincipalescaractersticasdelasclaseslocalessonlassiguientes:1.Comolasvariableslocales,lasclaseslocalesslosonvisiblesyutilizablesenelbloquedecdigoenelqueestndefinidas.Losobjetosdelaclaselocaldebensercreadosenelmismobloqueenquedichaclasehasidodefinida.Deestaformasepuedeacercarladefinicinalusodelaclase.2.Lasclasesinternaslocalestienenaccesoatodaslasvariablesmiembroymtodosdelaclasecontenedora.Puedenvertambinlosmiembrosheredados,tantoporlaclaseinternalocalcomoporlaclasecontenedora.3.Lasclaseslocalespuedenutilizarlasvariableslocalesyargumentosdemtodosvisiblesenesebloquedecdigo,peroslosisonfinal5(enrealidadlaclaselocaltrabajaconsuscopiasdelasvariableslocalesyporesoseexigequeseanfinalynopuedancambiar).4.Unobjetodeunaclaseinternalocalslopuedeexistirenrelacinconunobjetodelaclasecontenedora,quedebeexistirpreviamente.5.Lapalabrathis sepuedeutilizarenlamismaformaqueenlasclasesinternasmiembro,peronolaspalabrasnewysuper.

    Restriccionesenelusodelasclasesinternaslocales:1.Nopuedentenerelmismonombrequeningunadesusclasescontenedoras.2.Nopuedendefinirvariables,mtodosyclasesstatic.3.Nopuedenserdeclaradaspublic,protected,privateopackage,puessuvisibilidadessiempreladelasvariableslocales,esdecir,ladelbloqueenquehansidodefinidas.

    LasclasesinternaslocalesseutilizanparadefinirclasesAdapterenelAWT.

    11.3.1.4 Clasesannimas Lasclasesannimassonmuysimilaresalasclasesinternaslocales,perosinnombre.Enlasclasesinternaslocalesprimerosedefinelaclaseyluegosecreanunoomsobjetos.Enlasclasesannimasseunenestosdospasos:Comolaclasenotienenombreslosepuedecrearunnicoobjeto,yaquelasclasesannimasnopuedendefinirconstructores.LasclasesannimasseutilizanconmuchafrecuenciaenelAWTparadefinirclasesyobjetosquegestionenloseventosdelosdistintoscomponentesdelainterfacedeusuario.Nohayinterfacesannimas.

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina29/32

    11.3.2 Clasesabstractas Unaclaseabstractaesunaclasequecontieneunaomsmtodosabstractas,loscualesnosonimplementados.Unaclaseabstractanosepuedeinstanciar.

    Lasclasesabstractastienenqueserimplementadasutilizandolaherencia.Ellassirvendesuperclasealasclases(ointerfaces)concretos.Lasclasesconcretassobredefinelosmetodos,implementndolos.

    11.3.3 Interfaces Unainterfazesunaclasedelascualestodoslosmtodossonabstractos.

    Pordefecto,todoslosmiembrosdeunainterfazsonpblicos,abstractos,staticyfinal.

    Comolasclasesabstractas,lasinterfacestienequeserimplementadasutilizandolaherencia.

    11.4 Herencia Lasclasespuedentenerherenciadeotraclase,loquepermitederecuperarciertascaractersticas(mtodosydatos)deunobjeto,ymodificaroagregarotras.Losconstructoresnodeheredenydebenserdefinidosdenuevoenlaclase,peropuedenllamaralconstructordelaclasemadreconlapalabra'super'.Pordefecto,elconstructorllamaalconstructorsinargumentodelaclasemadre,amenosquesellamaaotroconstructorexplicitamente.

    Entonces: Cuandonotengoconstructordelaclasehijadefinido,elconstructorsinargumentodelaclasemadreesta

    llamadoenprimerlugar,siexiste(sino,errordecompilacion). Cuandounconstructordelaclasehijanollamaaningunconstructordelaclasemadre,elconstructorsin

    argumentodelaclasemadreestallamadoenprimerlugar,siexiste. Cuandollamodeunconstructordelaclasehijahaciaunconstructorotroqueelsinargumentodelaclase

    madre,elconstructorsinargumentodelaclasemadrenoestallamado

    Assepuedecrearsubclasesqueextiendenlaclasedebase.

    LaherenciaseutilizamuchoenJava,yespecialmenteenelweb(servlets)yelGUI(AWT,Swing).

    LaclasedebasepuedeserunaclasefundadoradeJava(JavaFoundationClass)ounaclasepersonal.

    Ejemplo:package test;public class TestHerencia { int numeroGeneral; TestHerencia () {numeroGeneral = 5;} public void adjunta_100() {numeroGeneral += 100; }} // fin de clase TestHerencia package test;public class TestHerenciaExt extends TestHerencia{ public TestHerenciaExt () {super();} public void adjunta_50() {numeroGeneral += 50; } public static void main(String[] args) { // metodo principal TestHerenciaExt miTest = new TestHerenciaExt (); System.out.println("Valor inicial de numeroGeneral = " + miTest.numeroGeneral); miTest.adjunta_100(); System.out.println("Valor de numeroGeneral = " + miTest.numeroGeneral); miTest.adjunta_50(); System.out.println("Valor de numeroGeneral = " + miTest.numeroGeneral); } // fin de metodo main}

    CopyrightCdricSimon,20052012 Versin2.2 Reproduccinprohibida

  • CursodeprogramacinconJavaNivelbsico Pagina30/32

    12TratamientodeexcepcionesExistentrescategorasdeerroresenJava.Loserroresdecompilacin,loserroresdeejecucin,yloserroresdelgica.Loserroresdeejecucin

    12.1 Objetivodelcapitulo Alfindeestecapitulo,elalumnosercapazidentificarlostiposdeerroresquesepuedenencontrarenuncdigoenJava,ytratarlosconxito.

    12.2 Erroresdecompilacin Loserroresdecompilacinsonlaserroresdesintaxis.Alcompilarelcdigo,JavadetectaloserroresquenorespetanlasintaxisdelJava,ascomoerroresdeconversindetipos,usodevariablesnodeclaradas,etc...

    Estaserroresnopermitenquesecrearaelarchivo.class,elcdigocompilado,porqueestecdigonuncapodrafuncionar.

    12.3 Erroresdelgica Loserroresdelgicasonerroresdebidoaundiseoincorrectodelcdigo.Porejemplo,unbuclequenuncatermina,unafaltadeortografaenuntexto,unaformuladeclculoequivocada,...