Upload
victor-porras
View
6
Download
0
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,...