Professional Documents
Culture Documents
Licencia de Uso
Acerca de este documento Copyright (c) 2007, Jose Daniel Gutirrez Porset josedaniel.gutierrez@ehu.es Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los trminos de la Licencia de Documentacin Libre de GNU en su versin 1.2 o cualquier otra versin posterior publicada por la Free Software Foundation, siendo todo l invariante. Una copia de la licencia est disponible en la web de la Free Software Foundation, dentro de la seccin titulada GNU Free Documentation License. Este documento ha sido realizado ntegramente con software libre.
ndice
Licenciadeusodeestedocumento Introduccinalaprogramacinorientadaaobjetos Introduccinalatecnologajava Sintaxisbsica FuncionesbsicasdeE/S ClasesyObjetos Herencia Interfaces ArraysyStrings Paquetes Excepciones
Introduccin a la OOP
Formasdeprogramacin:
Introduccin a la OOP
Conceptos
Clase:abstraccindelasentidadesdelavidareal, incluyendo:
Atributosocaractersticasdelaclase Mtodosuoperacionesrealizablessobrelaclase.
(Miembros=atributos+mtodos)
Objeto:instanciaconcretadeunaclase Mensaje:loqueseintercambiaentreobjetos
Introduccin a la OOP
Conceptos
Nacidoenladcadade1990.Antepasado:OAK
Orientadoaobjetos Lenguajecompilado(bytecodes)einterpretado(JVM).
Proporcionaherramientasylibrerasparadesarrollar cdigodistribuido(ej.RMI)
Compilacin
Byte-codes
Mquina 1
Mquina 2
Mquina 3
Interpretacin
Interpretacin
Interpretacin
Cdigo mquina 1
Cdigo mquina 2
Cdigo mquina 3
Gestindelamemoria:
Gestindelcdigoenejecucin:
Accesoahardwarerestringido(slomediantemtodos nativosdeotroslenguajes,noutilizablesporapplets)
Seguridad:
Cargadordeclases:
Aperturadeficherosyarranquedeotrasaplicacionesenmquina11 remota,noenlocal
Distinguir:
Especificacin Implementacin.Ej.SunHotSpot(1999)escritaenC++
Msinfoen:
12
AlgunasdiferenciasconC:
Engeneral:
Programasstandaloneconvencionales.Ej.
14
Principales:
Bindingsparaentornosgrficosespecficos,ej.KDE/qt, GNOME/gtk,...
15
SuntienedistintasfamiliasdeTecnologas:
Verhttp://java.sun.com/reference/api
16
17
Tienedospartes:
Elentornodeejecucin(JRE)constade:
Elentornodedesarrollo(JDK)incluyeherramientascomo: Compiladorjavac,javadoc,depuradorjdb,desensambladorjavap,...
Runtime:
JVMs:
Libreras:GNUClasspath(implementacinlibredelasclasesde Java,casitodaslasdeSunversin1.5)
Desarrollo:
Edicindelfuente,ej:
emacs NombreClasePublica.java
Sintaxis bsica
Caractersticas generales
Unaomslneasentre/**y*/paragenerardocumentacin
22
Sintaxis bsica
Variables y constantes
Constande:
23
Sintaxis bsica
Variables y constantes Clasificacin
Atributodeunobjetoodeunaclase.
mbito:segnmodificadoresdembitodelatributoydesuclase Inicializacinpordefecto:verlistadetipos
Localesaunmtodo.
Parmetrosdeunmtodoodeungestordeexcepciones.
mbito:elmtodo Inicializacin:elvalordelallamada.
24
(Nohayvariablesglobalesnimodulares)
Sintaxis bsica
Variables y constantes locales Declaracin
Sintaxisdedeclaracin:
Variablelocal:
<tipo> <identificador> [=<valor>];
Constantelocal:sehadeinicializarenladeclaracin;despusno sepuede.
final <tipo> <identificador>=<valor>;
25
Sintaxis bsica
Variables y constantes Identificadores
26
Sintaxis bsica
Variables y constantes Tipos primitivos
Hay8tiposprimitivos:
Palabra clave byte short int Tamao 1 byte 2 bytes 4 bytes Comentario Con signo Con signo Con signo Valor por defecto 0 0 0 Ejs. de Literales -2 10000 100000 032 (octal) 0x1F (hexadecimal) 3123456789 123.4f 12.4F 12.3 -124.678d 14.678D 1.234e2 1.23E4 \b \t 'x' '\u0108' \n \r \f \ true false \' \\
0L 0.0f 0.0d
char
2 bytes
'\u0000'
boolean
1 bit o 1 byte
false
27
Sintaxis bsica
Variables y constantes Tipos referencia
Sintaxis bsica
Literales
(losindicadosenlatabladetiposdedatos) Cadenadecaracteres:entrecomillasdobles,ej.cadena
29
Sintaxis bsica
Operadores - Comparacin con C
Nuevosoperadoresbinarios:
Casting:(slotienesentidoentretiposprimitivos)
Sisevaaperderprecisindaerroralcompilar(castingobligatorio) Eltipobooleannoesconvertiblealrestodetiposyviceversa.
Noexisten:
Operadoresdepunterosymemoria:*&>sizeof Operadorcoma,
30
Sintaxis bsica
Operadores - Tabla de precedencia
Grupo Expresiones varias Operadores unarios Operador () . [] expr++ expr-+ - ! ~ ++expr --expr (typecast) new */% +>> << >>> < > <= >= instanceof == != & ^ | && || ?: = += -= *= /= %= >>= <<= >>>= &= ^= |=
31
Operadores binarios
Sintaxis bsica
Sentencias de control de flujo - Comparacin con C
Condicionales:ejecutanunasolavezunaovariaslneasde cdigodependiendodeunacondicin
if switch
Repetitivas:ejecutanvariasvecesunaovariaslneasde cdigodependiendodeunacondicin
Entodosloscasoslacondicinhadeserdetipoboolean (nocomoenC)
32
Sintaxis bsica
Funciones - Comparacin con C
Unafuncinnoexisteporindependientesinoqueesparte deunaclase(mtododeunaclase). Pasodeargumentosporvalor(noobstante,para parmetrosdetiporeferenciaspuedehabermodificacin decontenidosapuntados) Sobrecargademtodos:puedehabermtodosconun mismonombrequeejecutandistintocdigo(hacedistintas funcionalidades),ysediferenciansegnelnylostiposde argumentos. Ej:
En C v o id m o s t ra r In t ( in t i) v o id v o id m o s t ra r Lo n g ( lo n g l)v o id v o id m o s t ra r Flo a t ( f lo a t f) o id v E n Ja v a m o s t r a r ( in t i) m o s t r a r ( lo n g l) m o s t r a r ( f lo a t f)
33
Sintaxis bsica
Otras palabras reservadas
Javareservaestaspalabrasparaelfuturo(demomentono tienenunusoespecfico):
byvalue generic outer cast goto rest const inner var future operator
34
35
Otraclasedeintersenlaversin6:java.lang.Console
36
Clases y Objetos
Introduccin
Clase:abstraccindelasentidadesdelavidareal, incluyendo:
(Miembros=atributos+mtodos)
Nomenclaturaporconvenio:
37
Clases y Objetos
Definicin de una clase
Sintaxis:
<declaracin de la clase> { <cuerpo de la clase> }
(laprimerallavepuedeirenlasiguientelnea)
siendo<declaracin de la clase>:
[<modificadoresClase>] class <NombreClase> [extends <NombreSuperclase>] [implements <ListaInterfaces>] (extendseimplementssevernmsadelante)
y<cuerpo de la clase>:
Declaracindeatributos Declaracinycuerpodemtodos
38
Clases y Objetos
Declaracin de una clase modificadores de clase
Modificadores:
Sihayvariosseseparanporespacios Posiblesvalores:
Modificadordembito:public Otrosmodificadores:unodestos(sonexcluyentes):abstract,final
public:
39
Clases y Objetos
Declaracin de una clase modificadores de clase
abstract:
final:
40
Clases y Objetos
Cuerpo de una clase declaracin de atributos
Sintaxisparacadaatributo: Modificadores:
Sihayvariosseseparanporespacios Posiblesvalores:
41
Clases y Objetos
Cuerpo de una clase modificadores de atributos
public:
Elatributoesaccesibledesde(mtodosde)cualquierclase,siempre quenotengaunarestriccinpormodificadordeclasenopublic.
protected:
Elatributopuedeseraccedidodesdesubclasesqueloheredany tambindesdeclasesdelmismopaquete
friendly:
Elatributopuedeseraccedidodesdeclasesdelmismopaquete Eselvalorpordefectodemodificadordembito
private:
Elatributoslopuedeseraccedidodesdelamismaclase
42
Clases y Objetos
Cuerpo de una clase modificadores de atributos
final:
Elvalordelatributoesconstanteyseinicializaensudeclaracin.
static:
43
Clases y Objetos
Cuerpo de una clase modificadores de atributos
transient:(pocousadoenestaasignatura)
Indicaqueelatributoalmacenainformacinnopersistentedel objeto,yenunprocesodealmacenamientonoseguardara.
volatile:(pocousadoenestaasignatura)
Elatributoalmacenavaloresmodificablespordistintosthreads.
44
Clases y Objetos
Cuerpo de una clase mtodos
Clases y Objetos
Cuerpo de una clase modificadores de mtodos
Modificadores:
Sihayvariosseseparanporespacios Posiblesvalores:
static,abstract,final,native,synchronized Nosepermitenestascombinaciones:
abstractyfinal abstractystatic
46
Clases y Objetos
Cuerpo de una clase modificadores de mtodos
abstract:
final:
Elmtodonopuedeserredefinidoensubclases.
47
Clases y Objetos
Cuerpo de una clase modificadores de mtodos
static:
48
Clases y Objetos
Cuerpo de una clase modificadores de mtodos
native:(pocousadoenestaasignatura)
Escritoenunlenguajedeprogramacindistintoajava(ej.C). Elmtodonotienecuerpo.
synchronized:(pocousadoenestaasignatura)
Slopuedehaberunmtodosynchronizedenejecucinpara cadaclase.Tieneunafuncindebloqueo.Ej.deuso:enthreads.
49
Clases y Objetos
Cuerpo de una clase tipo y parmetros de mtodos
tipo:unadeestasposibilidades:
Listadeparmetros:idemqueenC.Diferencia:sinorecibe parmetrosnoseindicanada(voiddaerror).
50
Clases y Objetos
Cuerpo de una clase cuerpo de mtodos
51
Clases y Objetos
Acceso a atributos y a mtodos
Siseaccedeaatributos/mtodosdelamismaclase,sean staticono:
<nombreAtributo> <nombreMetodo>([params])
Siseaccedeaatributos/mtodosdeotraclase:
<objeto>.<nombreAtributo> <objeto>.<nombreMetodo>([params])
Siseaccedeaatributos/mtodosstaticdeotraclase,otra posibilidades:
<NombreClase>.<nombreAtributo> <NombreClase>.<nombreMetodo>([params])
Otrasposibilidades(msadelante):conthisysuper
52
Clases y Objetos
Mtodo main
Comentarios:
Clases y Objetos
Constructores
Sonmtodosespecialesdeunaclasequesirvenpara inicializarobjetos. Siempresonllamadosdurantelacreacindelosmismos, explcitamente(concdigo)oimplcitamente(deforma internadesdelaJVM). Elconstructornocreanuevasinstanciasdeclases,sinoque slolasinicializa. Puedehabermsdeunconstructor,diferencindoseentre ellosenlalistadeparmetros,graciasalapropiedadde polimorfismo.
54
Clases y Objetos
Constructores Sintaxis
Sintaxisdelconstructor:
Diferenciaconotrosmtodos:
Noseindicatipo ElnombrecoincideconeldelaClase
55
Clases y Objetos
Constructores Sintaxis
Cuerpodelconstructor:
56
Clases y Objetos
Constructores Constructor por defecto
equivalea:
public class Point { int x, y; public Point() { super(); } }
57
Clases y Objetos
Constructores invocacin
Parainvocaraunconstructor(elqueespordefectou otros):
Clase() Clase(<lista1Parmetros>) Clase(<lista2Parmetros>) ...
Clases y Objetos
Creacin de objetos
Paracrearunobjetodeunaclasesesiguendospasos:
Ej:
ClaseA objeto1, objeto2; objeto1 = new ClaseA(); objeto2 = new ClaseA(parm1, parm2); ...
59
Clases y Objetos
Asignacin y copia de objetos
Alempleareloperadorasignacinentrereferenciasa objetos:
Ej:
Punto a1,a2; //se declaran dos referencias a objetos a1=new Punto(4,6); //se crea el primer objeto a2=new Punto(3,42); //se crea el segundo objeto a1=a2; //el antiguo objeto Punto(4,6) es desechable
60
Clases y Objetos
Asignacin y Conversin entre Tipos referencia distintos
61
Clases y Objetos
Asignacin y Conversin entre Tipos referencia distintos
Casos:(s:origent:destino)
Sitesunasuperclasedes.Ej:
Transporte t; Bici s; t=s; //No es necesario t=(SuperClase)s;
Entodosloscasosslosepodraccederalosmtodosdela superclaseosuperinterface,ynoaotros.
62
Clases y Objetos
Usos de this
Clases y Objetos
Clases y ficheros fuente
Unficherofuente:
64
Clases y Objetos
(Anexo: Varios clases)
65
Clases y Objetos
(Anexo: Clases anidadas)
Usos:
Clasificacin:
Estticas.Creacindeunobjeto:
ClaseExterna.ClaseEstatica o = new ClaseExterna.ClaseEstatica();
Noestticasoinner.Creacindeunobjeto:
ClaseExterna.ClaseInner o = objetoExterno.new ClaseInner();
Claseinnerlocal:declaradaenelcuerpodeunmtodo. Claseinnerannima:idemsinnombrarla
66
Herencia
Introduccin
Definicin:
Herencia
Introduccin herencia en Java
68
Herencia
Sintaxis y limitaciones
Paraindicarqueunaclaseheredadeotraseempleaesta sintaxis:
...class <Subclase> extends <SuperClase>...
Condicin:enlasuperclasehadehaberalgnconstructor accesibleparalasubclase.Casos:
Unaclasefinalnopuedetenersubclases
Herencia
Clase Object
Mtodosdeintersnoredefiniblesporelprogramador:
public final Class<?> getClass()
70
Herencia
Redefinicin de mtodos
71
Herencia
Acceso a mtodos de la clase superior
Handecumplirseestascondiciones:
Queelmtododelasuperclaseseaaccesible Quenoseusesuperdesdeunmtodostatic
72
Herencia
Clases y mtodos abstract
Unaclasequederivedeotraclaseabstractconmtodos abstractpodr:
Volveradeclararlosconabstractigualqueenlasuperclase. Nodeclararlos.
73
Herencia
Constructores en clases derivadas
Herencia
Constructores en clases derivadas
Herencia
(Anexo: Modificador protected)
Sesposible:
Noesposible:
Herencia
(Anexo: Redefinicin de atributos)
77
Interfaces
Introduccin
Elsentidodeusodeinterfacesescorregirlaimposibilidad deherenciadevariasclasesquehayenjava. Unainterfaceesunconjuntodeconstantesymtodos abstractosqueseimplementarnenclases. Enunainterfaceseestablecenlasfuncionalidades(el qu),yenlasclasesseimplementan(elcmo)las mismas,demodoquepuedehaberdistintas implementacionesdeunamismafuncionalidad(mtodos deigualnombreylistadeparmetrosenclasesdistintas). Larelacinentreficherosfuenteeinterfaces(nombresdel fuente,...)esidnticaaladelasclases.
78
Interfaces
Definicin de una interface
Sintaxis:
<declaracin de la interface> { <declaracin de atributos> <declaracin de mtodos y ;> }
(laprimerallavepuedeirenlasiguientelnea)
siendo<declaracin de la interface>:
[public] interface <NombreInterface> [extends <ListaSuperinterfaces>]
79
Interfaces
Declaracin de una interface
public:
extends<ListaSuperInterfaces>:
80
Interfaces
Declaracin de atributos y mtodos
Atributos:
Sintaxisparacadaatributo:
[public static final] <tipo> <NOMBRE_ATRIBUTO>=valor;
Todoslosatributossonpublicstaticfinalaunquenoseindique.No puedentenerotromodificador.Esobligatorioinicializarlos.
Mtodos:
Sintaxisparacadamtodo:
Todoslosmtodossonpublicabstractaunquenoseindique.No puedentenerotromodificador.
81
Interfaces
Implementacin de Interfaces en Clases
Paraindicarqueunaclaseimplementaunaoms interfaces,seindica:
...class <Clase> implements <ListaInterfaces>...
(lasinterfacesdelalistavanseparadaspor,)
82
Interfaces
Implementacin de Interfaces en Clases
Siunaclasesedeclaraconimplements:
Volveradeclararlosconabstractigualqueenlasuperclase. Nodeclararlos.
83
Losmtodosheredadosydeclaradoshandeserpublic.
Interfaces
Extensin de Interfaces en (Sub)interfaces
Paraindicarqueunainterfaceextiendeunaoms interfaces,seindica:
...interface <I> extends <ListaInterfaces>...
(lasinterfacesdelalistavanseparadaspor,)
84
Interfaces
Objetos de tipo interface
85
Interfaces
Interface versus Clase abstract pura
Losmodificadoresdelosmiembrosdeunaclaseabstractpura puedenser,ademsdelasposibilidadesdelosinterfaces:
Atributos:private/friendly/protectedynostatic/nofinal. Mtodos:private/friendly/protectedystatic.
Herenciamltiple:unaclaseslopuedederivardeunanicaclase abstractpura,peropuedeimplementarvariosinterfaces.
Arrays y Strings
Arrays
Estticos:eltamaoesconstanteentiempodeejecucin Dinmicos:eltamaopuedevariarentiempodeejecucin
87
Arrays y Strings
Arrays estticos
Internamentesondeunaclaseparacadatipode elementos,quecuentacon:
Arrays y Strings
Arrays estticos de tipos primitivos
Sintaxisenvariospasos:
1.Declaracindelarray:sereservaespacioparalareferenciadel array.Dosposibilidades:
<tipoPrim> <nombreArray> []; <tipoPrim> [] <nombreArray>;
2.Creacindelarray:sereservaespacioparasuselementos. Dosposibilidades:
<nombreArray>=new <tipoPrim> [<tamao>]; Enladeclaracinaadir = {<elem1>,<elem2>,...<elemN>};
Lospasossepuedencombinar,ej.
<tipoPrim> <nombreArray>[]=new <tipoPrim> [<tamao>];
Nota:[]nosignificaopcionalsinoloscaracteres[y]comotales
89
Arrays y Strings
Arrays estticos de tipos referencia
Sintaxisenvariospasos:
1.Declaracindelarray:sereservaespacioparalareferenciadel array.Dosposibilidades:
<Clase> <nombreArray> []; <Clase> [] <nombreArray>;
2.Creacindelarray:sereservaespacioparasuselementos,que sonreferencias.Posibilidades:
<nombreArray>=new <Clase> [<tamao>]; Enladeclaracinaadir = {<obj1>, <obj2>,...};
Losobjetospuedenexistirocrearseenlacreacindelarray.ejs:
<nombreArray>[<elem>]=new <Clase>([params]); Enladeclaracinaadir= {new <Clase>([params]),...};
Lospasossepuedencombinar,ej.
<Clase> <nombreArray>[] = new <Clase> [<tamao>];
90
Arrays y Strings
Arrays estticos de tipos referencia distintos
91
Arrays y Strings
Arrays estticos multidimensionales
Sonarraysdemsdeunadimensin. Declaracindelarray(para2dimensiones).Posibilidades:
<tipo> <nombreArray> [][]; <tipo> [][] <nombreArray>;
Creacindelarray(para2dimensiones):
<nombreArray>=new <tipo> [<tamao1>][tamao2>];
Declaracinycreacinenunsolopaso:
<tipo> <nombreArray>[][]={{a1,a2,...}{b1,b2,...}...};
Siendo{a1,a2,...}loselementosdela1fila,...
Encasodequetiponoseaprimitivosinoreferencia,es necesariocrearloselementosa1,a2,...,b1,b2,...
92
Arrays y Strings
Arrays dinmicos clase java.util.Vector
Arrays y Strings
Arrays dinmicos clase java.util.Vector
Atributosdeinters:
capacityIncrement
Mtodosdeinters: (algunospuedenlanzarArrayIndexOutOfBoundException)
Arrays y Strings
Strings
95
Arrays y Strings
Strings clase java.lang.String
CreacindeobjetosString:
Medianteunliteral:cuandoelcompiladorencuentraunliteral entredoblecreaunobjetodelaclaseString.
String <nombreString>=Cadena; obien: String <nombreString>; <nombreString>=Cadena; //declarado antes
Llamandoaalgnconstructor(realmenteseinicializaun apuntadoralacadenacreada):
String <nombreString>=new String (Cadena);
LlamandoaunmtodoquedevuelvaunobjetoStringnuevo,ej:
String s1=Hola; //Crea un objeto referenciado en s1 String s2; //Crea una referencia pero no un objeto s2=s1.toUpperCase(); //Crea un objeto referenciado por s2
96
Arrays y Strings
Strings clase java.lang.String
Arrays y Strings
Strings clase java.lang.String
Cuandoseusaeloperador+yalgnsumandoesunobjeto String:
MtodosdeobtencindeStringasociadoavaloresdetipo primitivoyobjetosdetiporeferencia:
Arrays y Strings
Strings clase java.lang.String
Mtodosdeinters:
99
Paquetes
Introduccin
java.awt:paquetegeneraldelinterfacegrficoawt java.awt.color,java.awt.image,...:otrospaquetesdelajerarqua
100
Paquetes
Paquetes, Directorios y Ficheros .class
Paquetes
Declaracin
Paraindicarelpaquetealqueperteneceunficherofuente, laprimeralneadelfuenteser:
package [<dir1>.][<dir2>.]...<dirN>;
siendodir1/dir2/.../dirNunsubdirectorioenelquese vayaaguardarsufichero.class.
102
Paquetes
Uso Condiciones
103
Paquetes
Uso Pasos
Sentenciasdeuso VariabledeentornoCLASSPATH:
Indicaeldirectoriobasedondeestnlossubdirectorios correspondientesalosficheros.classdelospaquetesaemplear.Ej:
Esobligatoriotantoencompilacincomoenejecucin.
Alcompilarunaclasequeusaotra,sinoencuentrael.class delaclaseausarcompilastaautomticamente.
104
Paquetes
Uso Alternativa 1: import
Sintaxisparaimportacin:sentenciaimport
Seindicaalprincipiodelfuentedespusdelasentenciapackage (encasodequestaexista)medianteunadeestasformas:
105
Paquetes
Uso Alternativa 1: import
Unavezhechalaimportacin,parausarlaclaseointerface importadahaydosposibilidades:
106
Paquetes
Uso Alternativa 2: referencia al paquete sin import
Anteponeralnombredelaclaseimportadaelnombredel paquetealquepertenece,sinhacerimport.Ej:
<dir1>.<dir2>.ClasePub1 a;
107
Paquetes
Paquete por defecto
108
Paquetes
Paquete por defecto
Accesoalasclasesdelpaquetepordefecto:
QuelavariableCLASSPATHnoestdefinida QuelavariableCLASSPATHincluyaaldirectorioactual,ej:
export CLASSPATH=.:/home/luz:/usr/local/java
Paraejecutarelmaindeunaclasenopertenecienteal paquetepordefecto:
java nombrePaquete.NombreClasePublica
109
Paquetes
Paquetes incluidos automticamente
Nosonnecesarios:
110
Paquetes
Paquetes de la especificacin Sun de java
Verhttp://java.sun.com/javase/6/docs/api/
111
Paquetes
Paquetes de la especificacin Sun de java
java.lang:clasespropiasdellenguaje.
Eselnicopaquetequeseimportaautomticamenteaunque noseindiqueconimport
112
Paquetes
Paquetes de la especificacin Sun de java
java.io:clasesparaentrada/salidadedatosyaccesoa ficheros. java.util:arraysdinmicos,fechas, java.util.zip:compresinzipygzipdeficheros java.applet:herramientasparaapplets. java.awtyjava.swing:componentesparaGUIs(Graphic Userinterface). java.net:funcionesdered. java.sql:accesoabasesdedatossql java.security:encriptacin ...
113
Paquetes
(Anexo: formato de paquetes jar)
Lospaquetes(directorios+ficheros.class)suelen paquetizarseenelformatocomprimidojar.
Ej.paraverlosficheros.classdelAPIdeSun:
unzip -l /usr/lib/jvm/java-1.5.0-sun/jre/lib/rt.jar
Avecesseincluyelaclaseejecutableenunfichero.jary paralanzarlaaplicacinseemplea:
jar -j fichero.jar
Paquetes
(Anexo: fichero manifest)
Esunficherodetextoempleadocuandolaclaseejecutable estenunficherojar.Elformatotiene,entreotraslneas:
Main-Class: paquete.ClasePrincipal Class-Path: dir1/jar1.jar dir2/jar2.jar dir3/ dir4/...
Siendo:
paquete.ClasePrincipallaclasequecontieneelmtodomain paraejecutarse,queperteneceaunodelospaquetesqueformanel jar;encasodequeseaeldefault,sera: Main-Class: ClasePrincipal dirN/jarN.jar dirM/...rutasabsolutasorelativas(ala ubicacindelpaquetejar)deotrosficherosjarodedirectoriosque contenganclases,todosellosqueestnFUERAdelpaquetejar,ej.en laredlocal. Importante:saltodelneaalfinal
115
Excepciones
Introduccin
Excepciones
Clases para Excepciones
Enjavaunaexcepcinsemodelacomounaclaseque desciendedelaclasejava.lang.Throwable:
Mtodosdeintersdelaclasejava.lang.Throwable:
public String getMessage(): mensajedeerrorasociado public String toString():descripcinbrevedelobjeto public String printStackTrace():imprimeunatrazadelapila
117
Excepciones
Clases para Excepciones
rboldelpaquetejava.lang:
http://java.sun.com/javase/6/docs/api/java/lang/packagetree.html
java.lang.Object java.lang.Throwable (implements java.io.Serializable) java.lang.Error ... java.lang.Exception java.lang.RuntimeException ...
Clasejava.lang.Error:deusopropiodelaJVM.Sonerrores irrecuperablesysefinalizaelprograma.
118
Excepciones
Tipos de excepciones
Nocomprobablesoimplcitas(unchecked):
Nosecompruebandurantelafasedecompilacin. Sonlasclases:
Comprobablesoexplcitas(checked):
Excepciones
Lanzamiento de una excepcin
Durantelaejecucindeunmtodosepuedenproduciro lanzar(throw)excepcionesdedosformas:
120
Excepciones
Tratamiento de excepciones
Excepciones
Tratamiento de excepciones Sintaxis
try { <cuerpo del try> } catch (<ClaseExcepcion1> <param1>) { <cuerpo del catch 1> } [catch (<ClaseExcepcion2> <param2>) { <cuerpo del catch 2> }] ... [finally { <cuerpo del finally> }]
122
Excepciones
Tratamiento de excepciones Bloques catch
123
Excepciones
Tratamiento de excepciones Secuencia
Excepciones
Secuencia de una excepcin Diagrama de Flujo
try No Excepcin en bloque try? S Interrupcin bloque try catch finally Hay bloque catch No de la excepcin o de una antepasada? Mtodo actual Mtodo llamante
No
No
125
Excepciones
Excepciones explcitas Uso de throws (i)
Sintaxisdedeclaracindemtodos:
Listadeexcepciones:separadasporcomas
Excepciones
Excepciones explcitas Tratamiento
Tratarenalgncatchdichasexcepcionesosusascendientes. Declararconthrowsdichasexcepcionesosusascendientes:
Excepciones
Excepciones explcitas Tratamiento
128
Excepciones
Excepciones explcitas Herencia
Noaplicaparalosconstructores,puesnoseheredan.
129
Excepciones
Excepciones explcitas Uso de throws (ii)
130
Excepciones
(Recomendaciones)