Você está na página 1de 141

Fundamentos de Java Julio 2008

CURSO - TALLER
Fundamentos de Java
AUTOR DEL MANUAL:
DOCENTE:
NGEL CATA T!
JOS" DEL CARMEN CANCUCAJA
#$LCE%

Material compartido por el autor para la realizacin del curso, no utilizar para otros fines distintos a los de la capacitacin.
Revisado y adaptado por Jos Canchucaja V.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 0
Fundamentos de Java Julio 2008
&ND&CE
NDCE........................................................................................................................................ 1
$ema %. C&'C()$&* +A*!C&* , -('./AJ( 0( )R&.RAMAC!1'..................................................5
1.1. NTRODUCCON.............................................................................................................. 5
1.1.1 Caractersticas de Java...................................................................................................5
1.1.2. Java en la empresa.........................................................................................................5
1.1.3. Java en tu PC.................................................................................................................6
1.1.4. Java Virtual Machine (JVM)........................................................................................21
1.1.5. l rec!lect!r de "asura (#ar"a$e C!llect!r)...............................................................22
1.2. TPOS DE DATOS.......................................................................................................... 23
1.2.1 Varia"les........................................................................................................................23
1.3. OPERADORES............................................................................................................... 25
1.3.1. %perad!r de asi$naci&n...............................................................................................25
1.3.2. %perad!res aritm'tic!s................................................................................................25
1.3.3. %perad!res (ncrement! ) *ecrement!........................................................................25
1.3.4. %perad!res de C!mparaci&n........................................................................................25
1.3.5. %perad!res +&$ic!s.....................................................................................................26
1.3.6. %perad!res C!mpuest!s..............................................................................................26
1.3.,. %perad!res c!n Cadenas..............................................................................................26
1.3.-. Precedencia de !perad!res...........................................................................................2,
1.3... J/C(C(%0...............................................................................................................2,
1ercici! 2..............................................................................................................................2,
1.4. CONTROL DE FLUJO.................................................................................................... 28
1.4.1 2l!3ues en Java............................................................................................................2-
1.4.2. (4 ) +0....................................................................................................................2.
1.4.3. (4 anidad!s...................................................................................................................2.
1.4.4. rr!res c!munes..........................................................................................................35
1.4.5. l !perad!r c!ndici!nal (67)........................................................................................35
1.4.6. +a sentencia 08(9C:.................................................................................................31
1.4.,. J/C(C(%0...............................................................................................................32
1.5. LOS CCLOS REPETTVOS.......................................................................................... 33
1.5.1. 8:(+.........................................................................................................................33
1.5.2. *%...8:(+................................................................................................................34
1.5.3. + C(C+% 4%/...........................................................................................................34
1.5.4. //%/0 C%M;<0...............................................................................................34
1.5.5. += 0<9<C(= 2/=>...........................................................................................34
1.5.6. += 0<9<C(= C%<9(<;...................................................................................35
1.5., J/C(C(%0................................................................................................................35
$ema 2. )R!'C!)!&* 0( -A &R!('$AC!&' A &+J($&*.................................................................37
2.1. DEFNCON DE OBJETO.............................................................................................. 37
2.1.1. ;n nuev! paradi$ma....................................................................................................3,
2.2.2 +!s !"1et!s s!n una a"stracci&n...................................................................................3,
2.2. Encapsulamiento............................................................................................................ 38
2.3. Relaciones entre objetos................................................................................................. 38
2.3.1 =s!ciaci&n entre !"1et!s...............................................................................................3-
2.3.2 C!mp!sici&n de !"1et!s................................................................................................3.
2.4. Clases............................................................................................................................. 39
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 1
Fundamentos de Java Julio 2008
Ejercicio................................................................................................................................. 40
2.5. Herencia......................................................................................................................... 40
2.6. Polimorfismo................................................................................................................... 40
1empl!s................................................................................................................................41
1ercici!.................................................................................................................................41
2.7. CLASES EN JAVA.......................................................................................................... 41
2.,.1. Pa3uetes.......................................................................................................................41
2.,.2. M!di?icad!res de acces!..............................................................................................42
2.,.3. Creaci&n de !"1et!s......................................................................................................42
2.,.4. +a re?erencia null.........................................................................................................43
2.,.5. =si$nand! re?erencias..................................................................................................43
2.8. Laboratorio. Uso de Objetos........................................................................................... 44
2.9. Mtodos.......................................................................................................................... 44
2...1. =r$ument!s..................................................................................................................45
2...2. Val!res de ret!rn!........................................................................................................45
2...3. /ecursividad................................................................................................................45
2...4. (nv!cand! m't!d!s......................................................................................................46
+a"!rat!ri!............................................................................................................................46
2.10. Encapsulamiento.......................................................................................................... 47
+a"!rat!ri!............................................................................................................................4,
2.11. Paso de variables a mtodos........................................................................................ 47
+a"!rat!ri!............................................................................................................................4-
+a"!rat!ri!............................................................................................................................4-
1ercici!.................................................................................................................................4-
$ema 3. $RA+AJA'0& C&' C-A*(*............................................................................................ 50
3.1. DEFNCONES NCALES............................................................................................ 50
3.1.1. 0!"recar$a de m't!d!s................................................................................................55
3.1.2. (niciaci&n de varia"les de instancia.............................................................................55
3.1.3. C!nstruct!res...............................................................................................................51
3.1.4. +a re?erencia this.........................................................................................................52
3.1.5. Varia"les de clase.........................................................................................................52
3.1.6. M't!d!s de clase..........................................................................................................53
3.2 EJERCCOS................................................................................................................... 54
1ercici! 1..............................................................................................................................54
1ercici! 2..............................................................................................................................56
$ema 4. $RA+AJA'0& C&' ARR(.-&*....................................................................................... 57
4.1. DEFNCON DE ARREGLOS......................................................................................... 57
4.1.1 *e?inici&n.....................................................................................................................5,
4.1.2. Practica #uiada............................................................................................................5,
4.2. ARREGLOS MULTDMENSONALES............................................................................58
4.3. LABORATORO.............................................................................................................. 59
4.3.1 1ercici!........................................................................................................................5.
4.3.2. 1ercici!.......................................................................................................................5.
4.4. CADENAS...................................................................................................................... 60
4.4.1. *e?inici&n....................................................................................................................65
4.4.2. C!nstrucci!n de cadenas..............................................................................................65
4.4.3. C!ncatenaci!n..............................................................................................................65
4.5. OPERACONES CON CADENAS...................................................................................60
4.5.1. +!n$itud de una cadena...............................................................................................61
4.5.2. ;"icar un car@cter mediante un indice........................................................................61
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 2
Fundamentos de Java Julio 2008
4.5.3. Atraer una su"cadena.................................................................................................61
4.5.4. C!nvertir a ma)Bsculas ! minBsculas..........................................................................61
4.5.5. liminar espaci!s del inici! ) el ?inal de la cadena.....................................................61
4.5.6. ;"icar una su"cadena desde una u"icaci&n.................................................................61
4.5.,. C!mparand! d!s cadenas............................................................................................61
4.5.-. C!mparand! re$i!nes de una cadena..........................................................................62
4.5... %"tener cadenas desde las primitivas..........................................................................62
4.5.15. %"tener primitivas desde las cadenas........................................................................62
4.5.11. J/C(C(%0.............................................................................................................62
4.6. ARREGLOS DE CADENAS............................................................................................ 63
4.6.1. *e?inici!n....................................................................................................................63
4.6.2. 1ercici!s.....................................................................................................................63
4.7. MAN............................................................................................................................... 64
4.8 LABORATORO............................................................................................................... 64
0e$unda Parte........................................................................................................................6,
$ema 5. 6(R('C!A , )&-!M&R7!*M&.......................................................................................... 69
5.1. HERENCA..................................................................................................................... 69
5.1.1 *e?inici&n.....................................................................................................................6.
5.1.2. +a herencia en Java......................................................................................................6.
5.1.3. +a re?erencia super......................................................................................................,5
5.1.4. M't!d!s.......................................................................................................................,5
5.1.5. +a re?erencia super......................................................................................................,1
5.2. Polimorfismo................................................................................................................... 72
5.3. El operador instanceof y cast......................................................................................... 74
5.4. Atributos, mtodos y clases final.....................................................................................74
5.4.1. Varia"les final..........................................................................................................,4
5.4.2. M't!d!s ?inal...............................................................................................................,4
5.4.3. Clases ?inal...................................................................................................................,4
5.5. El mtodo finalize()......................................................................................................... 75
5.6. Ejercicio.......................................................................................................................... 76
5.7. Laboratorio...................................................................................................................... 77
$ema 8. C-A*(* A+*$RAC$A* ( !'$(R7A*(*...............................................................................81
6.1. CLASES ABSTRACTAS................................................................................................. 81
6.2. nterfases....................................................................................................................... 82
+a"!rat!ri!............................................................................................................................-3
J/C(C(% 1........................................................................................................................-4
1ercici! 2..............................................................................................................................-5
1ercici! adici!nal.................................................................................................................-5
$ema 9. C&-(CC!&'(* 0( &+J($&*........................................................................................... 87
7.1. LA CLASE OBJECT........................................................................................................ 87
,.1.1. C!nvertir primitivas en re?erencias.............................................................................-,
7.2. COLECCONES.............................................................................................................. 87
,.2.1. =r3uitectura.................................................................................................................--
,.2.2. (nter?aces de c!lecci!nes.............................................................................................--
7.3. Ejemplo de clases implementadas. List..........................................................................89
,.3.1. *e?iniend! una clase.....................................................................................................5
,.3.2. M!strar l!s element!s de una c!lecci&n. =rra)+ist......................................................5
,.3.3. vitar !"1et!s duplicad!s. :ash0et..............................................................................1
,.3.4. Mane1ar c!lecci!nes !rdenadas. 9ree0et......................................................................3
,.3.5. %rdenar ) "uscar en C!lecci!nes. C!llecti!ns.............................................................5
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 3
Fundamentos de Java Julio 2008
7.4. Ejemplo de clases implementadas. Map.........................................................................97
,.4.1. 1empl! de :ashMap...................................................................................................,
,.4.2. 1empl! de 9reeMap.....................................................................................................-
7.5. EJERCCO..................................................................................................................... 99
$ema :. MA'(J& 0( (;C()C!&'(*......................................................................................... 100
8.1. EXCEPCONES............................................................................................................ 100
-.1.1. *e?inici!nes...............................................................................................................155
-.1.2. Caractersticas del Java..............................................................................................155
-.1.3. Acepci!nes...............................................................................................................151
-.1.4. 9hr!Ca"le..................................................................................................................152
-.1.5. Due se puede hacer c!n una Acepci&n6...................................................................152
8.2. EXCEPCONES CON JAVA.......................................................................................... 103
-.2.1. C!m! capturar ) mane1ar una eAcepci&n...................................................................153
-.2.2. Capturand! una eAcepci&n.........................................................................................153
-.2.3. Capturand! mBltiples eAcepci!nes............................................................................153
-.2.4. 1ecuci&n del "l!3ue ?inall)......................................................................................154
-.2.5. C!m! pasar la eAcepci&n al m't!d! inv!cad!..........................................................155
-.2.6. C!m! lanEar una eAcepci&n.......................................................................................155
-.2.,. C!m! crear una eAcepci&n.........................................................................................156
-.2.-. C!m! capturar una eAcepci&n ) lanEar !tra di?erente...............................................156
8.3. LABORATORO............................................................................................................ 106
8.4. EJERCCO................................................................................................................... 107
$ema <. Aplicaciones con +ases de datos en Java..................................................................109
9.1. Conectividad JDBC....................................................................................................... 109
..1.1. *e?inici!nes inciales.................................................................................................15.
..1.2. =cces! J*2C a "ase de dat!s....................................................................................115
..1.3. 9ip!s de drivers..........................................................................................................111
9.2. Puente 1. JDBC-ODBC................................................................................................. 111
..2.1 Venta1as.......................................................................................................................112
..2.2 *esventa1as.................................................................................................................112
..2.3 /esumen......................................................................................................................112
9.3. Java Binario.................................................................................................................. 112
..3.1 Venta1as.......................................................................................................................113
..3.2 *esventa1as.................................................................................................................113
..3.3 /esumen......................................................................................................................113
9.4. Java Protocolo independiente....................................................................................... 113
..4.1 Venta1as.......................................................................................................................114
..4.2 *esventa1as.................................................................................................................114
..4.3 /esumen......................................................................................................................114
9.5. Lista de drivers y de cadenas de conexin....................................................................114
9.6. Ejemplo de una consulta sencilla..................................................................................116
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 4
Fundamentos de Java Julio 2008
Tema 1. CONCEPTOS BASICOS Y LENGUAJE DE PROGRAMACIN

Resumen
Se estudiara los elementos bsicos del lenguaje Java, variables, operadores y control de lujo!

1.1. INTRODUCCION.

'!'!' Ca(a)te(*st+)as de Java

S+m,-e
Reduce en un 50% los errores ms comunes de programacin en lenguajes como C y C++ al eliminar
aritmtica de punteros, referencias, necesidad de liberar memoria.
Ro.usto
Java realiza verificaciones en busca de problemas tanto en tiempo de compilacin como en tiempo de
ejecucin.
A(/u+te)tu(a neut(a-
El cdigo compilado tiene un formato independiente de la arquitectura de la mquina en que se
ejecutar.
Se0u(o
No usa punteros para prevenir el acceso ilegal a la memoria.
&nte(,(etado
Requiere un runtime (JRE) para ser ejecutado, lo que lo hace 10 veces mas lento que un programa C
compilado.
O(+entado a o.1etos
Soporta las tres caractersticas propias del paradigma de la orientacin a objetos: encapsulamiento,
herencia y polimorfismo
D+st(+.u+do
Se ha construido con extensas capacidades de interconexin TCP/P, presenta libreras con protocolos
http y ftp para obtener informacin a travs de la red.

'!'!2! Java en -a em,(esa!

Java ,a(a a,-+)a)+ones )o(,o(at+vas
All donde la red sea algo crtico, Java facilita la programacin corporativa.
Desa((o--o (3,+do de a,-+)a)+ones
Java facilita la creacin de entornos de desarrollo de aplicaciones mediante el uso de frameworks y
patrones.
A,-+)a)+ones e4e)t+vas 5 e4+)+entes
Las grandes empresas prefieren programas que se desarrollen rpidamente y funcionen a que lo haga
eficientemente.
6o(ta.+-+dad ,a(a ,(o0(amado( 5 ,(o0(ama
La empresa es una plyade de computadores (PC, Mac, HP, Linux, Windows,...), pero el mismo
programa funcionara en cualquier estacin con el mismo programador.
Costos de desa((o--o
La llegada de Java e ntranet ha reducido los costos de las aplicaciones, adems es creciente el software
gratuito por explotar.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 5
Fundamentos de Java Julio 2008
'!'!7! Java en tu 6C!

Los programas tienen extensin.java (Hola.java)
Usa el Java Developer Kit (JDK) para compilar el cdigo fuente. (javac.exe)
Genera un compilado con extensin .class (Hola.class)
Usa el Java Virtual Machine (JVM) como interprete (java.exe)
&nsta-a)+8n de- Java
1. El JDK y el JVM estn disponibles en http://java.sun.com en un solo paquete conocido como J2SE.
El ejecutable puede ser el siguiente:
jdk-6u5-windows-i586-p.exe
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 6
Hola.java
JDK (javac.exe)
Hola.class
Errores
JVM (java.exe)
Lenguaje Maquina
De clic en
el enlace
Java SE
Fundamentos de Java Julio 2008
El cul fue el correspondiente a la ltima versin al momento de revisar ste manual.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 7
De clic
en ste
botn
De clic
en ste
botn
Fundamentos de Java Julio 2008
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 8
4. De clic
en ste
botn
1.
Seleccion
e la
plataform
a
2.
Seleccion
e su
idioma
3. Acepte
la licencia
2. De
clic en
ste
enlace
1. De
clic
aqu
Fundamentos de Java Julio 2008
2. En Windows se puede instalar el ejecutable por ejemplo en el directorio
C:\Archivos de programa\ava\jdk!.6."#"5
Ejecute el instalador y acepte de preferencia todas las caractersticas ofrecidas.
Acepte la licencia, para ello de clic en el botn Accept.
De clic en el botn Next.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 9
Fundamentos de Java Julio 2008
3. Adicionalmente se debe configurar la PC para que se reconozca su ubicacin (Path); por ejemplo en
Windows XP seria:
$.! %i &C ' &ropiedades
$.( )n el di*logo Propiedades del Sistema elija la ficha Opciones avanzadas
$.$ )n la ficha Opciones avanzadas de clic en el +o,-n Opciones avanzadas
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 10
Fundamentos de Java Julio 2008
$.. )n el di*logo Variables de Entorno de+e crear la varia+le Path usando el
+o,-n Nueva/ si es 0ue 1a no exis,e.
)n caso 0ue exis,a la varia+le Path elija dicha varia+le 1 ed2,ela haciendo
uso del +o,-n Modificar.
$.5 Ahora de+e modificar o ingresar por primera ve3 el valor de la varia+le
Path
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 11
De clic
en ste
botn
Fundamentos de Java Julio 2008
4e+e adicionar la ru,a donde se halla el direc,orio +in del 45 0ue ha
ins,alado/ le recomiendo +uscar en: C:\Archivos de programa\ava
)n la figura de arri+a la ru,a del direc,orio bin es:
C:\Archivos de programa\ava\jdk!.6."#"5\+in
6i en el valor de la varia+le Path 1a exis,e un valor/ c-pielo al +loc de
no,as 78o,epad9 o a un edi,or cual0uiera. &or ejemplo si ,engo el siguien,e
valor:
C:\Archivos de programa\:4% Compu,er 6olu,ions\;l,ra)di,-$(
<e agrego la ru,a an,erior de la siguien,e manera:
=>u,a an,erior? @ =>u,a del +in del 45 del ava?
)n el ejemplo ser2a:
$.6 Ahora de+e pegar el con,enido del edi,or 1 reempla3ar el valor de la
varia+le como se aprecia en la figura de a+ajo:
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 12
Fundamentos de Java Julio 2008
$.A &ara finali3ar de clic en el +o,-n Aceptar.
4. En Linux se debe instalarlo en un directorio como 'usr'java'jdk!.$.!:
B rpm -ivh jdk-!.$.!.i$86.rpm
5. Para cambiar el path debe realizar:
&ACDE'usr'java'jdk!.$.!
expor, &ACD
&nsta-a)+8n de- Net9eans
&aso !: )n,rar a la p*gina h,,p:''www.ne,+eans.org' 1 descargar el ins,alador
<uego aparecer* una p*gina donde se le solici,ar* su correo elec,r-nico 1 0ue
elija una de varias opciones/ seleccione la 0ue considere m*s apropiada a su
nivel de experiencia/ recomiendo la opci-n: Java 0 para los 0ue se inician en
ava.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 13
De clic en ste
botn para
descar!ar el
instalador
Fundamentos de Java Julio 2008
&aso (: ;na ve3 descargado 8e,Feans/ ins,ale el programa.
6iga las ins,rucciones seleccionando el +o,-n Next en ,odos los casos.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 14
Fundamentos de Java Julio 2008
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 15
De clic en ste
botn para
personali"ar el
instalador
De clic en ste
botn para
continuar
Fundamentos de Java Julio 2008
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 16
Fundamentos de Java Julio 2008
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 17
Fundamentos de Java Julio 2008
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 18
Fundamentos de Java Julio 2008
Finalmente puede registrarse usando una cuenta de correo como usuario.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 19
Fundamentos de Java Julio 2008
Ca(a)te(*st+)as de un ,(o0(ama Java!

El nombre de la clase debe ser igual al nombre del archivo.
Se debe respetar las maysculas y minsculas, es "case sensitive.
El nombre del archivo tiene extensin java.
Los comentarios se colocan entre /* y */ o se inician con //
La clase se encierra entre { y }
Los mtodos tambin se encierran entre { y }, como el mtodo ma+n.
Las sentencias (acciones) se terminan con punto y coma.
Se usa el punto para evocar atributos o mtodos de una clase.
Los argumentos de los mtodos se colocan entre ( y ).
Se usa la identacin para obtener un cdigo ms legible.
E1em,-o: C(ea( un ,(o0(ama ,a(a sa-uda( a -os /ue se +n+)+an )on Java
&aso !: Crear la carpe,a Curso!ava en el disco C" o en el 0ue prefiera.
&aso (: Cargue el +loc de no,as 78o,epad9. &ara eso de clic el +o,-n #nicio
del Gindows/ luego seleccione E$ecutar%/ digi,e lo de a+ajo
no,epad C:\Curso#ava\Dola.java
H presione la ,ecla I)n,erJ. A la pregun,a:
>esponda 0ue si: de clic en el +o,-n Si.
&aso $: <uego digi,e lo siguien,e:
'K &rimer programa java K'
pu+lic class Dola L
pu+lic s,a,ic void main76,ringIJ args9 L
61s,em.ou,.prin,ln7MDola desde javaM9@
N
N

E1e)u)+8n de un ,(o0(ama Java
!. &ara compilar un programa java se usa el $avac.exe/ el programa se
encuen,ra en el direc,orio bin del 45 1 es,* 1a en el Path del sis,ema por lo
,an,o lo podemos ejecu,ar desde cual0uier lugar. 4e clic el +o,-n #nicio del
Gindows/ luego seleccione E$ecutar%/ digi,e
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 20
Fundamentos de Java Julio 2008
cmd
H presione la ,ecla I)n,erJ. )n el 4O6 en,re al direc,orio de curso/ para
ello:
!.!. 4igi,e: C: 1 presione la ,ecla I)n,erJ.
!.(. 4igi,e: C4 Curso#ava 1 presione la ,ecla I)n,erJ.
!.$. Compile el programa use el programa $avac.exe/ para ello digi,e
C:\Curso#ava?javac Dola.java
H presione la ,ecla I)n,erJ.
2. Para ejecutar el programa ya compilado (seudo compilado, en bytecode) se usa el 1ava!e:e! El cdigo
Java se suele trasmitir como bytecode a la mquina receptora, que utiliza un compilador just-in-time para
traducir el bytecode en cdigo mquina antes de su ejecucin.
C:\java?java Dola
H presione la ,ecla I)n,erJ. 6aldr*:
Dola desde java
4. Al ejecutar un programa java, el JVM empieza a buscar el mtodo ma+n de la clase principal para
ejecutarlo.
'!'!;! Java #+(tua- Ma)<+ne =J#M>
JD# $ J%E
El JD# es un conjunto de programas que incluye al JVM, y es el acrnimo de Java
Development Kit, que traducido sera Paquete de desarrollo de Java. omprende a lo
siguiente!
J"E #Java "untime Environment$! Entorno de ejecucin de Java.
ompilador de Java! javac.exe el que se encuentra dentro del directorio %in
del JDK
Programa de ejecucin de Java! java.exe el que se encuentra dentro del
directorio %in del JDK
J%E es el acrnimo de Java "untime Environment #entorno en tiempo de ejecucin
Java$ y se corresponde con un conjunto de utilidades que permite la ejecucin de
programas java so%re todas las plata&ormas soportadas.
JVM #m'quina virtual Java$ es una instancia de J"E en tiempo de ejecucin, este es
el programa que interpreta el cdigo Java y adem's por las li%reras de clases
est'ndar que implementan el (P) de Java. (m%as JVM y (P) de%en ser consistentes
entre s, de a* que sean distri%uidas de modo conjunto.
+n usuario slo necesita el J"E para ejecutar las aplicaciones desarrolladas en
lenguaje Java, mientras que para desarrollar nuevas aplicaciones en dic*o lenguaje
es necesario un entorno de desarrollo, denominado JDK, que adem's del J"E
#mnimo imprescindi%le$ incluye, entre otros, un compilador para Java.
%esumiendo&
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 21
Fundamentos de Java Julio 2008
El J"E es su,ciente para un usuario de aplicaciones *ec*as en Java. Peor si la
aplicacin es -e%, dic*o usuario ya no lo necesita.
J%E ' J() * A+, de Java
El JDK es necesario para quienes desarrollan aplicaciones en Java ya sean
aplicaciones cliente servidor o aplicaciones distri%uidas incluyendo a las
aplicaciones -e%.
JD# ' J%E * +aquete de desarrollo de aplicaciones de Java
Lo que usted necesita saber es que para cada sistema operativo (o plataforma operativa) existe un JDK y
por consiguiente un JRE apropiado, por lo que debe descargare el que corresponde a su sistema
operativo preferido.
La buena noticia es que el programa que usted desarrolle por ejemplo en Windows y luego compilado
tambin en Windows puede correr en Linux o en Unix, etc. sin mayores problemas, salvo que usted haya
puesto instrucciones particulares para el sistema operativo en el que ha desarrollado los programas.
Por eso le sugerimos no salirse de los estndares impuestos por Java, en el curso le ayudaremos a no
salirse de los mismos.
"Write once and run everywhere, escriba una vez su programa y ejecute donde quiera sin cambios.
'!'!?! E- (e)o-e)to( de .asu(a =Ga(.a0e Co--e)to(>
El concepto de recoleccin de basura fue inventado por John McCarthy en 1959 para evitar la gestin
manual de memoria en el lenguaje Lisp.
@C8mo 4un)+onaA
Cuando un lenguaje dispone de recoleccin de basura, el programador no tiene que invocar a una
subrutina para liberar memoria. La reserva de memoria tambin es ms o menos automtica sin la
intervencin del programador. Por ejemplo:
En los lenguajes orientados a objetos: se reserva memoria cada vez que el programador crea un
objeto, pero ste no tiene que saber cuanta memoria se reserva ni cmo se hace esto.
En los lenguajes declarativos: cada vez que se construye una expresin se reserva memoria (de
una manera inteligente), pero el programador no es consciente de ello.
Al compilar el programa, automticamente se incluye en ste una subrutina correspondiente al recolector
de basura. Esta subrutina tambin es invocada peridicamente sin la intervencin del programador.
El recolector de basura es informado de todas las reservas de memoria que se producen en el programa.
Adems, el compilador colabora para que sea posible llevar una cuenta de todas las referencias que
existen a un determinado espacio de memoria reservado.
Cuando se invoca el recolector de basura, recorre la lista de espacios reservados observando el
contador de referencias de cada espacio. Si un contador ha llegado a cero significa que ese espacio de
memoria ya no se usa y, por tanto, puede ser liberado.
El nico inconveniente a este mecanismo es determinar cundo se tiene que ejecutar el recolector de
basura. Existen varios algoritmos para hacerlo, pero el ms eficiente es el primero de ellos:
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 22
Fundamentos de Java Julio 2008
Esperar a que no quede memoria libre, y entonces, ejecutar el recolector de basura.
Fijar un umbral de ocupacin de la memoria libre y ejecutar el recolector de basura cuando se
supere dicho umbral.
Ejecutar el recolector de basura a intervalos regulares (no siempre es posible).
Ejecutar el recolector de basura justo antes de cada reserva de memoria.
Permitir al programador que invoque explcitamente al recolector de basura cuando quiera.
En (esumen:
El entorno de ejecucin de Java dispone de un recolector de basura (garbage collector) que limpia de la
memoria los objetos no utilizados.
Cuando un objeto no se puede referenciar (acaba la vida de la variable de referencia) marca el
objeto como basura.
Cuando lo considere oportuno el recolector de basura lo eliminar
No es un destructor.
El mtodo finalize() se ejecuta antes de eliminarlo.
Se puede utilizar para realizar otras operaciones de limpieza, cerrar archivos, etc.
1.2. TIPOS DE DATOS
'!2!' #a(+a.-es
1. Es una unidad bsica de almacenamiento.
2. En Java debe ser declarada antes de utilizarse.
3. Cada variable tiene un tipo y un identificador.
4. Es un nombre simblico con un valor.
5. Las variables pueden ser iniciadas.
6. La plantilla de declaracin de variables es:
,ipo iden,ificador E valor@
7. Ejemplos de declaracin de variables:
in, mi)dad E $6@
+oolean es,aApro+ado E ,rue@
dou+le cos,o%aximo E !A.P8@

Est3nda(es
1. Nombres de archivos fuente: Cliente.java, Hola.java, Producto.java
2. Nombres de programas, clases: Cliente, Hola, Producto.
3. Nombres de mtodos, funciones: obtenerCliente, imprimirHola, alquilarProducto.
4. Nombres de variables: nombreCliente, limiteCreditoCliente.
5. Nombres de constantes: P, MXMO_NUMERO_TEMS, ANCHO_MNMO.
6. Java es "case-sensitive por lo que:
"cliente es diferente de "Cliente y es diferente de "CLENTE.

Nom.(e de #a(+a.-es
1. Deben empezar con una letra del alfabeto ingles o subrayado.
2. Los siguientes caracteres pueden ser dgitos.
3. No se deben usar palabras reservadas.
4. Las palabras reservadas son aquellas propias del lenguaje Java como:
pu+lic/ void/ s,a,ic/ +oolean/ floa,/ in,/ class/ ,rue/ false/ null/ for/ if/
else/ ex,ends ...
5. El estndar es iniciar con minscula y usar maysculas para nuevos significados.
6. Ejemplos de nombre de variables
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 23
Fundamentos de Java Julio 2008
Co((e)to 6asa.-e &n)o((e)to
costo cos,o#:,em cos,oBi,em
costoItem #cos,o:,em class
costoItem2 cos,o:,emfac,urado (cos,o:,em
costoItemFacturado cos,oi,em cos,o-i,em

T+,os de #a(+a.-es
1. Los principales tipos de variables son:

in, Desde -2^31 hasta +2^31
long Desde -2^63 hasta +2^63
floa, Es un numero decimal de 32 bits.
dou+le Es un numero decimal de 64 bits.
char Es un solo carcter, como letra o digito o carcter especial.
+oolean Almacena valores de verdad como ,rue o false.

2. Las cadenas no son un tipo de variable sino una Clase de tipo String

6,ring Cadena de caracteres.

De)-a(a)+8n de #a(+a.-es
1. La forma bsica de declarar variables es:
,ipo iden,ificador E valor@
2. Las variables de instancia se pueden usar en cualquier lugar de la clase.
3. Las variables locales se pueden usar solo en el mbito donde son declarados.

E1e()+)+o
C:\java?no,epad Qaria+les.java
pu+lic class Qaria+les L
'K Qaria+les ins,ancia K'
pu+lic s,a,ic in, peliculasAl0uilados E "@

pu+lic s,a,ic void main76,ringIJ args9 L
'K Qaria+les locales K'
dou+le ,asa4e:n,eres E ".!5@
in, peliculas)n6,ock E 5"@
in, numero4e4ias E $@
char ca,egoria4e&elicula E RSR@
61s,em.ou,.prin,ln7peliculasAl0uilados9@
61s,em.ou,.prin,ln7,asa4e:n,eres9@
61s,em.ou,.prin,ln7peliculas)n6,ock9@
61s,em.ou,.prin,ln7numero4e4ias9@
61s,em.ou,.prin,ln7ca,egoria4e&elicula9@
N
N

Compilaci-n:
C:\java?javac Qaria+les.java
)jecuci-n:
C:\java?java Qaria+les
>esul,ado:
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 24
Fundamentos de Java Julio 2008
"
".!5
5"
$
S

1.3. OPERADORES

'!7!'! O,e(ado( de as+0na)+8n
1. La expresin de la derecha se asigna a la variable de la izquierda.
2. La expresin de la derecha se evala antes de la asignacin.

in, cos,o E "/ ,o,al E "@
cos,o E 5"@
,o,al E cos,o T !"@
,o,al E ,o,al T 5@
in, var! E "/ var( E "@
var! E var( E ,o,al E 5"@

'!7!2! O,e(ado(es a(+tmBt+)os
1. Realizan las operaciones aritmticas bsicas.
2. Trabajan sobre variables numricas.

in, a/ +/ c/ d@
a E ( T (@ '' adicion
+ E a K $@ '' mul,iplicacion
c E + - (@ '' su+s,raccion
d E + ' (@ '' division
e E + U (@ '' res,o de la division 7modulo9
a E a V !@

Los datos byte, char y short se convierten en int despus de una operacin
Si un operando es long, el otro se convierte en long y la respuesta ser long.

+1,e +! E !/ +( E (/ +$@
+$ E +! T +( '' error el resul,ado es en,ero

'!7!7! O,e(ado(es &n)(emento 5 De)(emento
1. El operador ++ incrementa en 1 la variable que acompaa.
2. El operador - - decrementa en 1 la variable que acompaa.

in, var! E $@
var! TT@
in, var! E $/ var( E "@
var( E TTvar!@ '' 6e incremen,a var! 1 luego se asigna a var(@
var( E var!TT@ '' 6e asigna a var( 1 luego se incremen,a var(@

in, no,a E !A/ pendien,es E !"@
no,aTT@ '' es idWn,ico a no,a E no,a T !@
pendien,es--@ '' es idWn,ico a pendien,es E pendien,es - !@

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 25
Fundamentos de Java Julio 2008
'!7!;! O,e(ado(es de Com,a(a)+8n
1. Son relaciones de igualdad y desigualdad.
2. Se debe diferenciar el operador de comparacin con el operador de asignacin

+oolean valor@
in, a E !/ + E (/ c E $/ d E ./ e E $@
valor E + ? a@ '' ma1or 0ue
valor E + ?E a@ '' ma1or igual 0ue
valor E c = d@ '' menor 0ue
valor E c =E d@ '' menor igual 0ue
valor E a XE d@ '' diferen,e 0ue
valor E c EE e@ '' igual 0ue

in, nivelFuenCredi,o E $@
in, nivelCredi,oClien,e@
+oolean esFuenCredi,o E false@
esFuenCredi,o E 7nivelCredi,oClien,e EE nivelFuenCredi,o9@

'!7!?! O,e(ado(es L80+)os
1. Los resultados de las operaciones de comparacin pueden combinarse con operadores lgicos.

+oolean valor@
in, a E !/ + E (/ c E $@
valor E 7+ ? a9 YY 7a ? +9 @ '' operaci-n logica O>
valor E 7+ ? a9 ZZ 7c ? +9@ '' operaci-n logica A84
valor E X7a ? +9@ '' operaci-n logica 8OC

-% A.D .-/
. // . 0 &alse . 11 . 0 &alse 2. 0 true
. // 3 0 true . 11 3 0 &alse 23 0 &alse
3 // . 0 true 3 11 . 0 &alse
3 // 3 0 true 3 11 3 0 true

'!7!C! O,e(ado(es Com,uestos
1. La operacin de asignacin puede combinarse con operadores aritmticos como + y -

''
in, ,o,al E "/ can,idad E !"@
,o,al TE can,idad@ '' asignaci-n con incremen,o
,o,al -E $@ '' asignaci-n con decremen,o
,o,al KE (@ '' asignaci-n con mul,iplicaci-n
''
in, dias4eAl0uiler@
dias4eAl0uiler E dias4eAl0uiler T $@
dias4eAl0uiler TE $@
''
dou+le ,o,al E "/ num E !@
dou+le porcen,aje E ".5"@
,o,al E ,o,al T num@
,o,al TE num@
,o,al -Enum@
,o,al KE porcen,aje@

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 26
Fundamentos de Java Julio 2008
'!7!D! O,e(ado(es )on Cadenas!
1. A la coleccin de caracteres se les llama cadenas.
2. Los datos de tipo String almacenan cadenas.
3. El operador + tambien puede encadenar dos datos de tipo String.

6,ring nom+re E M:saacM@
6,ring apellido E MAsimovM@
6,ring nom+reComple,o E nom+re T [ \ T apellido@
6,ring le,ras E MDola/ so1 una cadenaM@
char le,ri,a E RcR@

'!7!E! 6(e)eden)+a de o,e(ado(es
operadores sufijo expr++ expr--
operadores unarios +expr -expr !
multiplicadores * / %
suma/resta + -
relacionales < > <= >=
igualdad == !=
AND lgico &&
OR lgico ||
condicional ? :
asignacin = += -= *= /= %=

Determina el orden en el cual se ejecutan los operadores
Operadores con la misma precedencia se realizan de izquierda a derecha
Usa el parntesis para cambiar este orden.

in, var! E "@
var! E ( T $ K .@
var! E !( V 6 T $@

'!7!F! EJERC&C&OS

E1e()+)+o '
Encuentre los errores en el siguiente cdigo:
!. in, class E (""@
(. shor, ,ex,o E .$@
$. shor, hola mundo@
.. in, +oolean$ E +oolean T +oolean T +oolean@
5. long almuer3o E en,rada T sopa T segundo @ '' fal,a pos,re
6. dou+le viejo E A8.$@
A. do+le nuevo E ".!@
8. +oolean consecue3ia E ,rue@
P. +oolean maximo E A ? $@
!". char calle E MQia expresaM@
!!. char rio E R8R@
!(. +oolean causa E A@
!$. +oolean igualdad E M,rueM@
!.. dou+le precio E 6'.(".5"@
!5. in, uno E $@
!6. long cinco E uno T uno T uno@
!A. +oolean comparacion E cinco ? uno@

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 27
Fundamentos de Java Julio 2008
E1e()+)+o 2!
'K )jercicio:
K 6e pide calcular el cos,o del al0uiler de dos peliculas
K por dos ( dias.
K Odisea (""! E (.P5 por dia
K )l padrino E $.5" por dia
K :mpues,o E !AU
K
K &ero solo se ,iene un +ille,e de !".
K 6e pueden al0uilar]
K'
pu+lic class Operadores L

pu+lic s,a,ic void main76,ringIJ args9 L

'' 4eclaracion de varia+les
dou+le pelicula!@
dou+le pelicula(@

'' Asignacion de valores
pelicula! E (.P5@
pelicula( E $.5"@

'' )s,as . sen,encias pueden ser com+inadas en una sola:
'' dou+le pelicula! E (.P5/ pelicula( E $.5"@

'' O,ras varia+les a usar en es,e programa
in, numero4e4ias E (@
+oolean al0uilar@
dou+le ,o,alAl0uiler/ ,o,al/ porcen,aje:mpues,o E !.!A@

'' %ues,ra el precio de los dos peliculas
61s,em.ou,.prin,ln7MOdisea (""! : M T pelicula!9@
61s,em.ou,.prin,ln7M)l &adrino : M T pelicula(9@

'' Calcula el al0uiler ,o,al
,o,alAl0uiler Epelicula!Knumero4e4ias T pelicula(Knumero4e4ias@
61s,em.ou,.prin,ln7MCo,al Al0uiler E M T ,o,alAl0uiler9@

'' Calcula el ,o,al de la ven,a aplicando el impues,o
,o,al E ,o,alAl0uilerKporcen,aje:mpues,o@
61s,em.ou,.prin,ln7MCo,al Qen,a E M T ,o,al9@

'' Qerifica si se pueden al0uilar
al0uilar E ,o,al = !"@
61s,em.ou,.prin,ln7M&uedo Al0uilar] M T al0uilar9@

N
N

C:\java?javac Operadores.java
C:\java?java Operadores
Odisea (""! : (.P5
)l &adrino : $.5
Co,al Al0uiler E !(.P
Co,al Qen,a E !5."P$
&uedo Al0uilar] false

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 28
Fundamentos de Java Julio 2008
1.4. CONTROL DE FLUJO

'!;!' 9-o/ues en Java
El cdigo se ejecuta secuencialmente por defecto
Un conjunto de sentencias requieren de llaves { } para agruparse como un bloque.
El bloque entre llaves { } se conoce tambin como sentencia compuesta.
Una sentencia simple es una expresin que termina con punto y coma.
var! TE var(TT T .@
Cada bloque se ejecuta como una nica sentencia dentro del flujo.
L
in, i E "@
+oolean ,ermino E ,rue@
61s,em.ou,.prin,ln7Mi E M T i9@
iTT@
N

'!;!2! &F 5 ELSE
Esta sentencia provee una seleccin de procesos bsico. Una expresin boleana controla que sentencia
se ejecutara. Si la expresin es true, se realizara la primera expresin es false se realizara la segunda.
SNTAXS
if (<Condicin Lgica>) <nstruccin>; // La clausula else es opcional.
============================
if (<Condicin Lgica >) <nstruccin>;
else <nstruccin>;
============================
if (<Condicin Lgica >) {
_________;
_________;
}
else {
_________;
_________;
}
Ejemplos:
if 7 i U ( EE " 9
61s,em.ou,.prin,ln7M)s parM9@
else
61s,em.ou,.prin,ln7M)s imparM9@
''
if 7dias4eAl0uilerCranscurridos ? diasAl0uilerCon,ra,ados 9
61s,em.ou,.prin,ln7M&rimero pagar moras por al0uilerM9@
else
61s,em.ou,.prin,ln7M&uede al0uilar nuevas peliculasM9@
''
if 7 numero ? " 9 L
61s,em.ou,.prin,ln7M)l numero es posi,ivoM9@
N
''
if 7mes =E A9 61s,em.ou,.prin,ln7M)l impues,o es !8UM9@
else 61s,em.ou,.prin,ln7M)l impues,o es !PUM9@

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 29
Fundamentos de Java Julio 2008
'!;!7! &F an+dados
Cuando se requieren muchas condiciones, se pueden anidar sentencias F.
Debe tener cuidado en el correcto uso de la sentencia ELSE

if 7velocidad ?E $"9
if 7velocidad ? !""9
61s,em.ou,.prin,ln7MQamos mu1 rapidoM9@
else
61s,em.ou,.prin,ln7M<legaremos a ,iempo.M9@
else
61s,em.ou,.prin,ln7M^ue len,o vamosM9@
''
if 7velocidad ?E !""9
61s,em.ou,.prin,ln7MQas mu1 rapidoM9@
else if 7velocidad ? $"9
61s,em.ou,.prin,ln7MQas manejando +ien.M9@
else
61s,em.ou,.prin,ln7MQas mu1 len,oM9@

Este enfoque es utilizado poco, ya que se crea un cdigo algo complicado de entender.
Es preferible usar las llaves { } para separar los bloques.

''
if 7velocidad ?E (59 L
if 7velocidad ? !""9 L
61s,em.ou,.prin,ln7MQamos mu1 rapidoXM9@
N
else L
61s,em.ou,.prin,ln7M<legaremos a ,iempoM9@
N
N
else L
61s,em.ou,.prin,ln7M^ue len,o es la movilidadM9@
N

'!;!;! E((o(es )omunes!
Encuentre los errores en los siguientes ejemplos.
in, x E $/ 1 E 5@
if 7 x ?E "9
if 7 1 = x 9
61s,em.ou,.prin,ln7M1 es menor 0ue xM9@
else
61s,em.ou,.prin,ln7Mx es nega,ivoM9@

''
in, x E A@
if 7 x E "9 '' if 7x EE "9
61s,em.ou,.prin,ln7Mx es ceroM9@

''
in, x E !5/ 1 E (.@
if 7 x U ( EE " ZZ 1 U ( EE " 9@
61s,em.ou,.prin,ln7Mx e 1 son paresM9@

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 30
Fundamentos de Java Julio 2008
'!;!?! E- o,e(ado( )ond+)+ona- =A:>
Es una alternativa a la estructura if..else

if 7mes =E A9
impues,o E ".!8@
else
impues,o E ".!P@

Es una expresin que retorna un valor.
Si la expresin lgica es verdadera se obtiene el primer valor.
Si la expresin lgica es falsa se obtiene el segundo valor.

impues,o E 7 mes =E A 9 ] ".!8 : ".!P@

'!;!C! La senten)+a SG&TC
Es usada cuando se requiere tomar una accion entre varias en base a una expresin.
La expresin debe ser byte, char, short o int.
No puede ser un long, double, float, String o cualquiere otro tipo.
Si la expresin se iguala a una condicion, esta se ejecuta.
Si no se iguala a ninguna condicion, se realiza la sentencia marcada con default.
Las condiciones deben ser constantes.
Use break para salir del switch
Siempre coloque una opcion default.

in, dia
swi,ch 7dia9 L
case !:
case (:
case $:
case .:
case 5:
61s,em.ou,.prin,ln7MCienes 0ue ir a ,ra+ajarM9@
+reak@
case 6:
case A:
61s,em.ou,.prin,ln7M^ueda,e en casaM9@
+reak@
defaul,:
61s,em.ou,.prin,ln7M)n 0ue plane,a vives]M9@
N
char le,raEReR@
swi,ch7le,ra9@
L
case RaR:
case RAR:
case ReR:
case R)R:
case RiR:
case R:R:
case RoR:
case ROR:
case RuR:
case R;R:
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 31
Fundamentos de Java Julio 2008
prin,f7M)s una vocalM9@
+reak@
defaul,: prin,f7M)s una consonan,eM9@
N

'!;!D! EJERC&C&OS

E1e()+)+o '
'' ^ue es la )dad]
pu+lic class )dad L
pu+lic s,a,ic void main 76,ring IJ arg9
L
in, edad E !5@
if 7edad =E !89
61s,em.ou,.prin,ln 7M)res un ni_oM9@
61s,em.ou,.prin,ln 7M<a edad es un es,ado men,alM9@
N
N

E1e()+)+o 2
'' <a mejor 8o,a
pu+lic class 8o,a L
pu+lic s,a,ic void main 76,ring IJ arg9
L
in, ,u8o,a`inal E !A@
in, mi8o,a`inal E !(@
in, mejor8o,a`inal ...
61s,em.ou,.prin,ln 7M<a mejor no,a es: M T mejor8o,a`inal9@
N
N

E1e()+)+o 7
'' )n %ega&la3a se hace un ("U de descuen,o a los clien,es
'' cu1a compra supere los $""
'' aCual ser* la can,idad 0ue pagara una persona por su compra]
C:\java?no,epad Compra.java
pu+lic class Compra L

pu+lic s,a,ic void main76,ringIJ args9 L
dou+le compra/ descuen,o/ ,o,al@
compra E .!"@
descuen,o E compraK".("@
,o,al E compra - descuen,o@
if 7compra?$""9 L
61s,em.ou,.prin,ln7M)l descuen,o es de: M T descuen,o9@
61s,em.ou,.prin,ln7M)l ,o,al a pagar es: M T ,o,al9@
N
else
61s,em.ou,.prin,ln7M6in descuen,os/ el ,o,al es:M T ,o,al9@
N
N
C:\java?javac Compra.java
C:\java?java Compra
)l descuen,o es de: 8(."
)l ,o,al a pagar es: $(8."

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 32
Fundamentos de Java Julio 2008
E1e()+)+o ;
;n o+rero necesi,a calcular su salario semanal/ el cual se o+,iene de la
siguien,e manera:
6i ,ra+aja ." horas o menos se le paga b!6 por hora
6i ,ra+aja mas de ." horas se le paga b!6 por cada una de las primeras ."
horas 1 b(" por cada hora ex,ra.
C:\java?no,epad 6alario.java
pu+lic class 6alario L

pu+lic s,a,ic void main76,ringIJ args9 L

in, horasCra+ajadas/ horas)x,ras/ salario6emanal@

horasCra+ajadas E .A@

if 7 horasCra+ajadas ? ." 9 L
horas)x,ras E horasCra+ajadas - ."@
salario6emanal E horas)x,ras K (" T ." K !6@
61s,em.ou,.prin,ln7M)l salario con horas ex,ras es de M T
salario6emanal9@
N
else L
salario6emanal E horasCra+ajadas K !6@
61s,em.ou,.prin,ln7M6u sueldo es de M T salario6emanal9@
N
N

N

E1e()+)+o ?
'' ;n a_o es +isies,o si es divisi+le por .
'' excep,o a0uellos divisi+les por !"" pero no por .""
'' 6egcn el a_o de,ermine la can,idad de dias de un mes.
''
pu+lic class %es L
pu+lic s,a,ic void main 76,ring IJ arg9
L
in, anio E !P.8@
in, mes E "(@
in, dias@
...
61s,em.ou,.prin,ln 7MCiene MTdiasTM diasM9@
N
N

1.5. LOS CICLOS REPETITIVOS

'!?!'! G&LE
El while es la forma mas simple de un bucle.
Tiene la siguiente forma:

in, i E !@ '' iniciali3acion
while 7i=E!"9 L '' condicion de repe,icion
61s,em.ou,.prin,ln7iK$.59@ '' cuerpo
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 33
Fundamentos de Java Julio 2008
iTT@ '' i,eracion
N

El cuerpo se realizara mientras la condicin de repeticin sea verdadera true

'!?!2! DO!!!G&LE
Realiza la condicion de repeticin al finalizar el bloque.

Tiene la siguiente forma:

in, i E !@ '' iniciali3acion
do L
61s,em.ou,.prin,ln7iK$.59@ '' cuerpo
iTT@ '' i,eracion
N while 7 i =E !" 9 '' condicion


'!?!7! EL C&CLO FOR
Combina en una sentencia la definicin de un ciclo repetitivo.
Para el caso del tipo de cambio, el cdigo fuente ser:

for 7in, iE!@ i=E!"@ iTT9 L
61s,em.ou,.prin,ln7iK$.59@
N

La inicializacin y la iteracin puede ser compuesta.
for 7in, iE"/ jE!"@ i=j@ iTT/ j--9 L
61s,em.ou,.prin,ln7j-i9@
N

Se pueden crear bucles infinitos.
for 7@@9 L
61s,em.ou,.prin,ln7MDola mundoXM9@
N

'!?!;! ERRORES COMUNES!
El transbordador espacial se encuentra a una altura de 10 Km y esta en fase de aterrizaje.
'' Caso !
in, al,ura E !"@
while 7al,ura ? "9@
61s,em.ou,.prin,ln7al,ura--9@
61s,em.ou,.prin,ln7MDemos a,erri3adoM9@
'' Caso (
in, al,ura E !"@
while 7al,ura ? "9
61s,em.ou,.prin,ln7al,ura9@
al,ura--@
61s,em.ou,.prin,ln7MDemos a,erri3adoM9@
'' Caso $
in, al,ura E !"@
for 7@ al,ura ? "@ al,ura--9@
61s,em.ou,.prin,ln7al,ura9@
61s,em.ou,.prin,ln7MDemos a,erri3adoM9@

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 34
Fundamentos de Java Julio 2008
'!?!?! LA SENTENC&A 9REAH
En todo bucle, la sentencia BREAK transfiere el control fuera del bucle. Son necesarias cuando se trata
de bucles infinitos.

EJEM6LO
Un empleado ha llegado a su edad de jubilacin (65) y ha trabajado desde los 25 aos. Su CTS se
deposita en un banco que le otorga interes por estos depositos. Un nuevo gobierno ha decretado que
esta liquidacin tendra un maximo de 250,000 soles

while 7edad =E 659 L
li0uidaci-n E 7li0uidaci-n T salario9K7!Tin,eres9@
if 7li0uidaci-n ?E (5"/"""9
+reak@
edadTT@
N

'!?!C! LA SENTENC&A CONT&NUE
Se usa solo en ciclos FOR.
Abandona la ejecucin del cuerpo y continua a la siguiente iteracin.

Mostrar todos los aos bisiestos del siglo XX.

for 7 in, anioE(""!@ anio =E $"""@ anioTT 9 L
if 7 7anio U !"" EE "9 ZZ 7anio U ."" XE "9 9
con,inue@
if 7anio U . EE "9
61s,em.ou,.prin,ln7anio9@
N

'!?!D EJERC&C&OS
E1e()+)+o '
Mostrar la conversin de 1 hasta 10 dlares en soles, dlar tras dlar, suponiendo que el tipo de cambio
es 3.50 soles/dolar.

C:\java>notepad Cambio.java
pu+lic class Cam+io L

pu+lic s,a,ic void main76,ringIJ args9 L
in, dolar E !@
while 7dolar=E!"9 L
61s,em.ou,.prin,ln7dolar TM dolares E M T dolarK$.5 TM solesM9@
dolarTT@
N
N
N

E1e()+)+o 2
Una persona desea invertir $1000.00 en un banco, el cual le otorga un 2% de inters mensual. Cual ser
la cantidad de dinero que esta persona tendr al cabo de un ao si todo el dinero lo reinvierte?.

pu+lic class :n,eres L

pu+lic s,a,ic void main76,ringIJ args9 L

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 35
Fundamentos de Java Julio 2008
dou+le dinero E !"""@
in, mes E !@

while 7mes=E!(9 L
dinero E dinero K !."(@
mesTT@
N
61s,em.ou,.prin,ln7dinero9@
N
N

E1e()+)+o 7
Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un da desde
las 00:00:00 horas hasta las 23:59:59 horas

pu+lic class >eloj L

pu+lic s,a,ic void main76,ringIJ args9 L

for 7in, hE"@ h =E ($@ hTT9
for 7in, mE"@ m =E 5P@ mTT9
for 7in, sE"@ s =E 5P@ sTT9
61s,em.ou,.prin,ln7h TMh MT m TMm MT sTMsM9@
N
N

E1e()+)+o ;
Una persona desea invertir $1000.00 en un banco, el cual le otorga un 2% de inters mensual. En
cuantos meses tendr mas de $1500, si reinvierte cada mes todo su dinero?.

pu+lic class 4inero L

pu+lic s,a,ic void main76,ringIJ args9 L

dou+le dinero E !"""@
in, mes E !@

for 7@@9 L
dinero E dinero K !."(@
if 7dinero ?E !5""9 +reak@
mesTT@
N
61s,em.ou,.prin,ln7mes9@
61s,em.ou,.prin,ln7dinero9@
N
N

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 36
Fundamentos de Java Julio 2008
Tema 2. PRINCIPIOS DE LA ORIENTACION A OBJETOS


Resumen
Se estudiara el paradigma de la orientaci"n a objetos y como se emplea en Java!

2.1. DEFINICION DE OBJETO.

2!'!'! Un nuevo ,a(ad+0ma

OO es un nuevo paradigma de diseo y programacin
OO se basa en modelar objetos del mundo real
OO crea programas reusables
Los objetos contienen en si mismo informacin y comportamiento.

Iue es un o.1etoA
*e?inici&n ?il!s&?ica7 s una entidad 3ue se puede rec!n!cer.
Para la tecn!l!$a de !"1et!s 7 s una a"stracci&n de un !"1et! del mund! real.
n t'rmin!s de ne$!ci!s7 s una entidad relevante al d!mini! del ne$!ci!.
n t'rmin!s de s!?tCare7 s una estructura 3ue as!cia dat!s ) ?unci!nes.

=l$un!s e1empl!s de !"1et!s en P%% s!n7 ClienteF 4acturaF C!ntrat!F Pelcula. ;n Cliente tiene
un n!m"reF direcci&nF cr'dit!. ;n Cliente p!dra al3uilar una pelculaF pa$ar una ?acturaF
dev!lver una pelcula.

Los objetos realizan operaciones.
;n !"1et! es Btil si tiene al$una ?unci&n ! c!mp!rtamient! en el sistema.
Cada c!mp!rtamient! se den!mina !peraci&n.

%"1et!7 Mi lapicer! aEul
%peraci&n7 scri"ir
%"1et!7 l ca1er! aut!m@tic! P5
%peraci&n7 ntre$ar diner!.

Los objetos tiene valores.
+!s !"1et!s c!n!cen cual es su estad! actual.
Cada c!n!cimient! del !"1et! se den!mina atri"ut!.

%"1et!7 Mi lapicer! aEul
=tri"ut!7 Cantidad de tinta
%"1et!7 l ca1er! aut!m@tic! P5
=tri"ut!7 *isp!ni"le en s!les.

2!2!2 Los o.1etos son una a.st(a))+8n
Todo depende del contexto.
Cuando se modela un objeto, solo se requiere modelar las operaciones y atributos que son relevantes
para el problema

%"1et!7 Mi lapicer! aEul
%peraci&n7 =puntar una piEarra.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 37
Fundamentos de Java Julio 2008
=tri"ut!s7 +!n$itudF Marca.

2.2. Encap!"a#$ent%
l encapsulamient! !culta c!m! las c!sas ?unci!nan dentr! de un !"1et!
0!l! n!s c!municam!s c!n el !"1et! a trav's sus m't!d!s
+!s m't!d!s s!n una inter?aE 3ue permite i$n!rar c!m! est@n implementad!s.
<! es p!si"le evadir el encapsulamient! en %%

l ca1er! aut!m@tic! P5 es un !"1et! 3ue entre$a diner!.
l ca1er! encapsula t!das las !peraci!nes a l!s tar1etaha"ientes.
vadir este encapsulamient! es un r!"! al ca1er!.
1ercici!
C!mplete c!n !peraci!nes ) atri"ut!s l! si$uiente7
Objeto Operaciones Atributos
Ca1er! aut!m@tic! P5
;niversidad
C!mputad!ra
=ut! de carreras
*V*
0at'lite

2.3. Re"ac$%ne ent&e %'(et%
Mensa1es entre !"1et!s.
+!s !"1et!s se c!munican un!s c!n !tr!s enviand! mensa1es.
l trasmis!r del mensa1e pide 3ue el recept!r realice una !peraci&n.
l recept!r e1ecuta el m't!d! c!rresp!ndiente.
n pr!$ramaci&n estructurada se inv!can ?unci!nes ! pr!cedimient!s.
n %% se enva un mensa1e a un !"1et! antes 3ue inv!carse un pr!cedimient!.
+!s m't!d!s presentan p!lim!r?ism!.



Cliente
!
9ransmis!r


Mensa1e
$etdad()
Pers!na
$etdad
$et<!m"re
$et*irecci!n
setdad
set<!m"re
set*irecci!n

dad
<!m"re
*irecci!n


2!7!' Aso)+a)+8n ent(e o.1etos

Para 3ue un !"1et! enve un mensa1e a !tr!F el recept!r de"e ser visi"le para el transmis!r.
sta visi"ilidad se da a trav's de enlaces.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 38
Fundamentos de Java Julio 2008
;n !"1et! enva mensa1es a !tr! inv!cand! sus m't!d!s.


/adar
en 9ierra
<ueva p!sici&n Cam"i! de
!r"ita
M!nit!rear
0at'lite


1empl!s7
l radar en tierra m!nit!rea el sat'lite. l sat'lite es m!nit!read! p!r el radar en tierra.
;n cliente tiene una cuenta de ah!rr!s. +a cuenta de ah!rr!s pertenece a un cliente.

2!7!2 Com,os+)+8n de o.1etos!
+!s !"1et!s est@n c!mpuest!s de !tr!s !"1et!s.
+!s !"1et!s s!n partes de !tr!s !"1et!s.
sta relaci&n entre !"1et!s se c!n!ce c!m! =$re$aci&n

l 2anc! de la <aci&n es un
!"1et!
l ca1er! aut!m@tic! P5 es
un !"1et!.
l ca1er! es del 2anc! de la
<aci&n.

l ca1er! aut!m@tic! P5 esta
c!mpuest! p!r !"1et!s
c!m!7
l teclad!
l dispensad!r de "illetes
l lect!r de la tar1eta


2.4. C"ae
;na clase es una m!lde para crear !"1et!s.
Para de?inir una clase se tiene 3ue indicar las !peraci!nes ) atri"ut!s
+!s !"1et!s s!n instancias de la clase.
Cuand! se cree un ca1er! aut!m@tic! P3 n! se re3uiere indicar sus !peraci!nes ) atri"ut!s.
0!l! se re3uiere indicar a 3ue clase pertenece.

Clase
=tri"ut!s
M't!d!s
Cliente
int edad
0trin$ n!m"re
0trin$ direcci&n
cam"iar*irecci!n()
Pelcula
0trin$ titul!
d!u"le preci!
0trin$ cate$!ria
cam"iarPreci!()

(denti?icaci&n de clases
/ec!n!cer una estructura ) c!mp!rtamient! c!munes entre vari!s !"1et!s.

%"1et! %peraci!nes =tri"ut!s
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 39

Fundamentos de Java Julio 2008
+apicer! r!1!
Escri%ir
"ecargar
Cantidad de tinta
C!l!r de tinta
Pluma ) tinta
scri"ir
/ecar$ar
Cantidad de tinta
C!l!r de tinta

E(e&c$c$%
= 3ue clase pertenecen est!s d!s !"1et!s6

Clases y Objetos.
+as clases s!n de?inici!nes est@ticas 3ue n!s permite entender t!d!s l!s !"1et!s de esa clase.
+!s !"1et!s s!n entidades din@micas 3ue eAisten en el mund! real ) en simulaci!nes del mund!
real.

2.5. )e&enc$a
ntre di?erentes clases pueden ha"er similitudes
+a herencia es una relaci&n entre clases d!nde una es padre de !tra.
+as pr!piedades c!munes de?inen la superclase. Clase padre.
+as su"clases heredan estas pr!piedades. Clase hi1!.
;n !"1et! hi1! es unGtip!Gde una superclase.
;n :elic&pter! es un tip! de <ave ='rea.


<ave ='rea

Jum"!
:elic&pter!
#l!"!

*iri$i"le

Ejercicio
(ndi3ue 3ue pr!piedades tiene la clase <ave ='rea.

2.*. P%"$#%&+$#%
0i$ni?ica 3ue la misma operacin se realiEa en las clases de diferente forma.
stas !peraci!nes tienen el mism! si$ni?icad!F c!mp!rtamient!.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 40
Fundamentos de Java Julio 2008
(nternamente cada !peraci&n se realiEa de di?erente ?!rma.


="!rdar pasa1er!s
2arc!
9ren
:elic&pter!

E1em,-os
nviar calcular(ntereses a !"1et!s c!m!7 Cuenta de =h!rr!sF Cuenta C90F Cuenta C!rriente.
n 1ava se representa c!m!7 cuen,a.calcular:n,ereses79@

E1e()+)+o
*etermine las clasesF m't!d!sF atri"ut!s ) as!ciaci!nes del si$uiente pr!"lema. Puede aplicar
herencia ! p!lim!r?ism!6

9ac!ra 4ilms esta en el ne$!ci! de al3uiler de pelculas a sus clientes. H ah!ra esta
aut!matiEand! el pr!ces! de al3uiler. l cliente esc!$e las pelculas en la tienda ) las lleva a la
ca1a para pr!ceder c!n el al3uiler. l emplead! de la tienda s!licita la 9ac!raCard al cliente para
identi?icarl! ) escanea el c&di$! de "arras de cada pelcula 3ue esta al3uiland!.

+!s clientes tienen 3ue ser s!ci!s de 9ac!ra 4ilm Clu" para p!der al3uilar pelculas. =l
suscri"irse al clu" entre$an dat!s c!m! n!m"reF direcci&nF tel'?!n!. 9ac!raCard tiene un Bnic!
nBmer! impres! 3ue identi?ica al cliente.

Cada al3uiler tiene un nBmer! Bnic! para identi?icarl! ) en el acuerd! se indica la ?echa de inici!
del al3uiler ) la lista de pelculas 3ue se est@n al3uiland!. <! se puede al3uilar m@s de 15
pelculas. <! se sa"e cuand! eAactamente el cliente dev!lver@ la pelcula.

l $erente de 9ac!ra est@ c!nsiderand! emplear el mism! pr!$rama para al3uilar !tr!s artcul!s
c!m! li"r!sF repr!duct!res de V:0 ) de *V*F C*s de 1ue$!s.

Cada artcul! tiene un preci! de al3uilerF nBmer! de das 3ue puede ser al3uilad!F el titul! de la
pelculaF una descripci&n "reveF el tip! de pelcula (4amiliarF =cci&nF C!media...)
2.,. CLASES EN JAVA
;na clase es un m!lde para crear mBltiples !"1et!s 3ue encapsula dat!s ) c!mp!rtamient!.
2!D!'! 6a/uetes
;n pa3uete es un c!ntened!r (a$rupad!r) de clases 3ue est@n relaci!nadas l&$icamente.
;n pa3uete tiene sus clases en un mism! direct!ri!
Varias clases pueden tener el mism! n!m"re per! en di?erente pa3uete.

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 41
Fundamentos de Java Julio 2008
Para el pr!"lema de l!s
al3uileres se encuentran las
clases7
Clase Pelicula
Clase C!ntrat!
Clase Cliente
Pa3uete7
al3uiler
Clases7
al3uiler.Pelicula
al3uiler.C!ntr
at!
al3uiler.Cliente
*irect!ri!7
C7Ial3uiler
=rchiv!s en C7Ial3uiler
Pelicula.1ava
C!ntrat!.1ava
Cliente.1ava

2!D!2! Mod+4+)ado(es de a))eso
Java c!ntr!la el acces! a las varia"les ) m't!d!s a trav's de m!di?icad!res de acces! c!m!7
privateF pu"lic ) pr!tected
;n element! pu"lic! puede inv!carse en cual3uier clase.
;n element! sin m!di?icad!r s!l! se puede inv!car desde la misma clase.
;n element! pr!te$id! s!l! se inv!car en clases heredadas
;n element! privad! n! puede ser inv!cad! p!r !tra clase.

Pa3uete al3uiler Pa3uete almacen

<%
private
<%

0%+%
0(
:/*=
pr!tected
0%+%
0(
:/*=

0(
pu"lic
0(

0( <%


2!D!7! C(ea)+8n de o.1etos!
1.Cada !"1et! es una instancia de al$una clase.

Pelicula
private 0trin$ titul!J
private 0trin$ tip!J
pu"lic v!id m!strar*etalles()
pu"lic v!id !"tener9itul!()



Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 42
l Padrin!
*rama
%disea 2551
Ciencia 4icci!n
Fundamentos de Java Julio 2008

2.+!s !"1et!s se crean c!n el !perad!r neC.

&elicula pelicula! E new &elicula79@
&elicula pelicula( E new &elicula79@

3.l !perad!r neC realiEa las si$uientes acci!nes7
G 0epara mem!ria para el nuev! !"1et!
G (nv!ca el m't!d! de inici! de la clase llamad! c!nstruct!r.
G /et!rna la re?erencia a un nuev! !"1et!.



&elicula pelicula! E
new
&elicula79@


pelicula1


+as varia"les primitivas
almacenan val!res.
+!s !"1et!s almacenan re?erencias
int i4
i


Pelicul
a
pelicul
a1J

pelicul
a1
int j 0 54
1Pelicula pelicula2 K
pelicula2
2!D!;! La (e4e(en)+a nu--

6 7os o%jetos inician en null
G 0e puede c!mparar un
!"1et! c!n null
6 8e puede li%erar la re&erencia
con null.

&elicula pelicula! E null@
if 7pelicula! EE null9
pelicula! E new &elicula79@
pelicula! E null@

2!D!?! As+0nando (e4e(en)+as
0e puede asi$nar una varia"le re?erencia a !tra resultad! en d!s re?erencias al mism! !"1et!.

&elicula pelicula! E new &elicula7MFe,,1 FlueM9@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 43
+a 0trada
*rama
5
nu
ll
3
*ias de /adi!
Fundamentos de Java Julio 2008
&el2cula pelicula( E pelicula!@

6. +as varia"les de instancia se declaran en la clase. st!s s!n atri"ut!s de la clase.

pu+lic class &elicula L
pu+lic 6,ring ,i,ulo@
pu+lic 6,ring ,ipo@
N

,. +as varia"les pu"licas de instancia se acceden c!n el !perad!r punt!.

&elicula pelicula! E new &elicula79@
pelicula!.,i,ulo E M5ramer vs 5ramerM@
if 7pelicula!.,i,ulo.e0uals7M)l plane,a de los simiosM9
pelicula!.,ipo E MCiencia `iccionM@

2.-. La'%&at%&$%. U% .e O'(et%
C!mplete ) realice el si$uiente pr!$rama.

&elicula.java
pu+lic class &elicula L
pu+lic 6,ring ,i,ulo@
pu+lic 6,ring ,ipo@
N

&rue+a&eliculas.java
pu+lic class &rue+a&eliculas L
pu+lic s,a,ic void main 76,ringIJ args9 L
&elicula pelicula!/ pelicula(@
...
pelicula!.,i,ulo E M<os sue_os de Akira 5urosawaM@
pelicula( E pelicula!@
pelicula(.,i,ulo E M42a de en,renamien,oM@
61s,em.ou,.prin,ln7M<a pelicula ! es MT ...9@
61s,em.ou,.prin,ln7M<a pelicula ( es MT ...9@
N
N

2./. 01t%.%
;n m't!d! es e3uivalente a una ?unci&n ! su"rutina de !tr!s len$ua1es.
+!s m't!d!s s!l! se de?inen dentr! de una clase.

modificador ,ipo4e>e,orno nom+re%e,odo 7<is,a4eArgumen,os9 L
'' desarrollo del mW,odo@
N

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 44
Fundamentos de Java Julio 2008
2!F!'! A(0umentos
n la de?inici&n del m't!d! se indica el tip! ) el n!m"re de l!s ar$ument!s del m't!d!.

pu+lic void se,Cipo 76,ring nuevoCipo9 L
,ipo E nuevoCipo@
N

Si el mtodo tiene varios argumentos, estos se separan por comas.
pu+lic void se,4a,os 76,ring nuevoCi,ulo/ 6,ring nuevoCipo9 L
,ipo E nuevoCipo@
,i,ulo E nuevoCi,ulo@
N

0i el m't!d! n! tiene ar$ument!sF se de1a s!l! l!s par'ntesis
pu+lic void mos,rar4e,alles79 L
61s,em.ou,.prin,ln7M)l ,i,ulo es MT,i,ulo9@
61s,em.ou,.prin,ln7M)l ,ipo es MT,ipo9@
N

2!F!2! #a-o(es de (eto(no!
Se aplica slo a las funciones m@s n! a l!s pr!cedimient!s (para est!s Bltim!s se usa v!id).
0e usa la sentencia return para salir del m't!d! ret!rnand! un val!r.
<! se re3uiere return si el tip! de ret!rn! es void.

pu+lic class pelicula L
priva,e 6,ring ,ipo@
''...
pu+lic 6,ring o+,enerCipo 79 L '' es una funci-n
re,urn ,ipo@
N
N
2!F!7! Re)u(s+v+dad
;n m't!d! recursiv! es a3uel 3ue directa ! indirectamente se llama a si mism!.
C!m! e1empl! Btil se puede presentar el c@lcul! de ?act!rial ) sumat!rias
4act!rial de 5 K 1
4act!rial de < K < L 4act!rial de < G 1

0umat!ria de 5 K 5
0umat!ria de < K < M 0umat!ria de < G 1

;n m't!d! recursiv! de"e tener al men!s un cas! n! recursiv! ) !tr!s cas!s recursiv!s 3ue se
apr!Aimen al cas! n! recursiv! para evitar la recursi&n in?inita.

>ecursion.java
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 45
Fundamentos de Java Julio 2008
pu+lic class >ecursion L
pu+lic s,a,ic void main 76,ringIJ args9 L
61s,em.ou,.prin,ln7 fac,orial759 9@
61s,em.ou,.prin,ln7 suma,oria759 9@
N
pu+lic s,a,ic in, fac,orial 7in, numero9 L
''`ac,orial@
N
pu+lic s,a,ic in, suma,oria 7in, numero9 L
''6uma,oria
N
N

2!F!;! &nvo)ando mBtodos
0e utiliEa el !perad!r punt! para inv!car el m't!d! de una claseF si el m't!d! es de la misma
claseF n! se re3uiere el cali?icad!r de la clase.

La.o(ato(+o
&elicula.java
pu+lic class &elicula L
priva,e 6,ring ,i,ulo/,ipo@
''...
pu+lic 6,ring ge,Cipo 79 L
re,urn ,ipo@
N
pu+lic 6,ring se,Cipo 76,ring nuevoCipo9 L
,ipo E nuevoCipo@
N
N
&rue+a&eliculas.java
pu+lic class &rue+a&eliculas L
pu+lic s,a,ic void main 76,ringIJ args9 L
&elicula pelicula! E new &elicula79@
pelicula!.se,Cipo7MComediaM9@
if 7pelicula!.ge,Cipo79.e0uals7M4ramaM99 L
61s,em.ou,.prin,ln7M<a pelicula es un dramaM9@
N
else L
61s,em.ou,.prin,ln7M<a pelicula no es un dramaM9@
N
N
N

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 46
Fundamentos de Java Julio 2008
2.12. Encap!"a#$ent%
1. +as varia"les de instancia de una clase de"eran ser declaradas c!m! privadas
0!l! un m't!d! de"era acceder a las varia"les privadas.
<! se de"e acceder a las varia"les de instancia directamenteF sin! a trav's de un m't!d!.

&elicula pelicula! E new &elicula79@
if 7pelicula!.,i,ulo.e0uals7M<os doce del pa,i+uloM99 L
pelicula!.se,Cipo7MAccionM9@
N

Cual de estas lneas n! cumple c!n el encapsulamient!6

2. C&di$! de una clase.

La.o(ato(+o
&elicula.java
pu+lic class &elicula L
priva,e 6,ring ,i,ulo@
priva,e 6,ring ,ipo@

pu+lic void se,Ci,ulo 76,ring nuevoCi,ulo9 L
,i,ulo E nuevoCi,ulo@
N

pu+lic void se,Cipo 76,ring nuevoCipo9 L
,ipo E nuevoCipo@
N
pu+lic 6,ring ge,Ci,ulo 79 L
re,urn ,i,ulo@
N

pu+lic 6,ring ge,Cipo 79 L
re,urn ,ipo@
N

pu+lic 6,ring ,o6,ring 79 L
re,urn M,i,ulo MT,i,uloTM ,ipo MT,ipo@
N
N

2.11. Pa% .e 3a&$a'"e a #1t%.%.

1. Cuand! el ar$ument! es una primitvaF se $enera una c!pia de la varia"le para el m't!d!.

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 47
Fundamentos de Java Julio 2008
La.o(ato(+o
9estPrimitivas.1ava
pu+lic class Ces,&rimi,ivas L
pu+lic s,a,ic void main 76,ringIJ args9
L
in, numero E !5"@
un%e,odo7numero9@
61s,em.ou,.prin,ln7numero9@
N

priva,e s,a,ic void un%e,odo7in, argumen,o9 L
if 7argumen,o = " YY argumen,o ? !""9 L
argumen,o E "@
61s,em.ou,.prin,ln7argumen,o9@
N
N
N

Due val!res muestra el pr!$rama anteri!r6

2. Cuand! se pasa c!m! ar$ument! un !"1et! re?erenciaF n! se $enera c!pia. l ar$ument!
re?erencia al !"1et! !ri$inal.
La.o(ato(+o
9est/e?erencias.1ava
pu+lic class Ces,>eferencias L
pu+lic s,a,ic void main 76,ringIJ args9
L
&elicula pelicula! E new &elicula79@
pelicula!.se,Ci,ulo7M)l >esplandorM9@
pelicula!.se,Cipo7M4ramaM9@
un%e,odo7pelicula!9@
61s,em.ou,.prin,ln7pelicula!.ge,Cipo799@
N

pu+lic s,a,ic void un%e,odo7&elicula referencia9 L
referencia.se,Cipo7MCerrorM9@
N
N

Due muestra el pr!$rama6

E1e()+)+o

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 48
Fundamentos de Java Julio 2008
1. Cree la clase Clien,e c!n l!s atri"ut!s c&di$!F n!m"reF direcci&nF tel'?!n! encapsulad!s
(m't!d!s set ) $et).
2. =$re$ue a la clase Cliente el m't!d! ,o6,ring 3ue muestre en pantalla t!d!s l!s dat!s de la
clase Cliente.
3. Cree la clase Pelicula c!n l!s atri"ut!s c&di$!F titul!F tip!F preci! de al3uiler. (nclu)a el
m't!d! ,o6,ring.
4. Cree un pr!$rama c!m! Cacora`ilms.java ) cree c!m! !"1et!s a d!s clientes c!n dat!s
de sus ?amiliares. (cliente1 ) cliente2)
5. =$re$ue al pr!$rama principal !"1et!s de d!s pelculas 3ue ha)a vist! recientemente.
(pelicula1F pelicula2)
6. Al final del programa coloque lo siguiente:

61s,em.ou,.prin,ln7clien,e!9@
61s,em.ou,.prin,ln7clien,e(9@
61s,em.ou,.prin,ln7pelicula!9@
61s,em.ou,.prin,ln7pelicula(9@

Due muestra el pr!$rama6

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 49
Fundamentos de Java Julio 2008
Tema 3. TRABAJANDO CON CLASES


Resumen
Se reali#ara un estudio sobre caracter$sticas avan#adas en la deinici"n de clases!

3.1. DEFINICIONES INICIALES.

El encapsulamiento se basa en los mtodos de instancia.
La sobrecarga de mtodos nos brinda una interfase mas legible.
Los constructores aseguran una consistente creacin de objetos
El Garbage Collector libera espacio en memoria.

7!'!'! So.(e)a(0a de mBtodos!
Algunos mtodos en una clase pueden tener el mismo nombre.
Estos mtodos deben contar con diferentes argumentos.
El compilador decide que mtodo invocar comparando los argumentos.
Se generara un error si los mtodos solo varian en el tipo de retorno.

pu+lic class &elicula L
priva,e floa, precio@
pu+lic void se,&recio79 L
precio E $.5"@
N
pu+lic void se,&recio7floa, nuevo&recio9 L
precio E nuevo&recio@
N
N

7!'!2! &n+)+a)+8n de va(+a.-es de +nstan)+a
Las variables de instancia se pueden iniciar en la declaracin.
Esta iniciacin ocurre cuando se crea un objeto.

pu+lic class &elicula L
priva,e 6,ring ,i,ulo@ '' implici,o
priva,e 6,ring ,ipo E M4ramaM@ '' explici,o
priva,e in, numero4eOscares@ '' implici,o
N

Las primitivas se inician implcitamente como:
char
+1,e/ shor,/ in,/ long
+oolean
floa,/ dou+le
>eferencia a O+je,o
R"R
"
false
"."
null

En forma explicita se puede indicar un valor inicial.
priva,e 6,ring ,ipo E M4ramaM@

Un constructor provee una iniciacin de variables de instancia ms compleja.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 50
Fundamentos de Java Julio 2008

7!'!7! Const(u)to(es
Para una adecuada iniciacin de variables de instancia, la clase debe tener un constructor.
Un constructor se invoca automticamente cuando se crea un objeto.
Se declaran de forma pblica.
Tiene el mismo nombre que la clase.
No retorna ningn valor.
Si no se codifica un constructor, el compilador crea uno por defecto sin argumentos que solo inicia las
variables de instancia.
La.o(ato(+o
&elicula.java
pu+lic class &elicula L
priva,e 6,ring ,i,ulo@
priva,e 6,ring ,ipo E M4ramaM@

pu+lic &elicula79 L
,i,ulo E M&elicula sin definir.M@
N

pu+lic &elicula76,ring nuevoCi,ulo9 L
,i,ulo E nuevoCi,ulo@
N

pu+lic &elicula76,ring nuevoCi,ulo/ 6,ring nuevoCipo9 L
,i,ulo E nuevoCi,ulo@
,ipo E nuevoCipo@
N

pu+lic 6,ring ge,Ci,ulo79 L
re,urn ,i,ulo@
N

pu+lic 6,ring ge,Cipo79 L
re,urn ,ipo@
N

N
Ces,Cons,ruc,ores.java
pu+lic class Ces,Cons,ruc,ores L
pu+lic s,a,ic void main 76,ringIJ args9 L
&elicula pelicula! E new &elicula79@
&elicula pelicula( E new &elicula7M<a lis,a de
6chindler.M9@
&elicula pelicula$ E new &elicula7M)l
dormilon.M/MComediaM9@
61s,em.ou,.prin,ln7pelicula!.ge,Ci,ulo79
Tpelicula!.ge,Cipo799@
61s,em.ou,.prin,ln7pelicula(.ge,Ci,ulo79
Tpelicula(.ge,Cipo799@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 51
Fundamentos de Java Julio 2008
61s,em.ou,.prin,ln7pelicula$.ge,Ci,ulo79
Tpelicula$.ge,Cipo799@
N
N

Que muestra el programa?

7!'!;! La (e4e(en)+a t<+s
Los mtodos de instancia reciben el argumento this implcitamente que se refiere al mismo objeto.

pu+lic class &elicula L
priva,e 6,ring ,i,ulo@
pu+lic void se,Ci,ulo76,ring ,i,ulo9 L
,his.,i,ulo E ,i,ulo@
N
N

Se puede compartir cdigo entre constructores usando la referencia this. Un constructor invoca a otro
pasandole los argumento que requiere.

La.o(ato(+o
&elicula.java
pu+lic class &elicula L
priva,e 6,ring ,i,ulo@
priva,e 6,ring ,ipo@

pu+lic &elicula79
L
,his7M&elicula sin definirM9@
N
pu+lic &elicula 76,ring ,i,ulo9 L
,his.,i,ulo E ,i,ulo@
N
pu+lic 6,ring ge,Ci,ulo79 L
re,urn ,i,ulo@
N
N
Ces,Chis.java
pu+lic class Ces,Chis L
pu+lic s,a,ic void main 76,ringIJ args9 L
&elicula pelicula! E new &elicula79@
&elicula pelicula( E new &elicula7MCodo so+re mi madreM9@
61s,em.ou,.prin,ln7pelicula!.ge,Ci,ulo799@
61s,em.ou,.prin,ln7pelicula(.ge,Ci,ulo799@
N
N

7!'!?! #a(+a.-es de )-ase
Las variables de clase comparte un nico valor entre todos las instancias de la clase.
Se declaran con el calificador stat+).
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 52
Fundamentos de Java Julio 2008

pu+lic Class &elicula L
'' iniciaci-n por defec,o
priva,e s,a,ic dou+le precio%inimo@
priva,e 6,ring ,i,ulo/ ,ipo@
N

Las variables de clase se pueden iniciar en la declaracin.
La iniciacin ocurre cuando se carga la clase en memoria.
Para una iniciacin compleja se usara un bloque s,a,ic

pu+lic Class &elicula L
'' iniciaci-n explici,a
priva,e s,a,ic dou+le precio%inimo E $.(P@
N

La.o(ato(+o
&elicula.java
impor, java.u,il.K@
pu+lic class &elicula L
priva,e s,a,ic in, numero4ias E $@
'' iniciaci-n compleja
priva,e s,a,ic dou+le precio%inimo@
s,a,ic L
4a,e ho1 E new 4a,e79@
if 7ho1.ge,4a179 EE "9 ''si es 4omingo
precio%inimo E 5.!"@
else
precio%inimo E $.(P@
N
pu+lic in, ge,8umero4ias79 L
re,urn numero4ias@
N
pu+lic dou+le ge,&recio%inimo79 L
re,urn precio%inimo@
N
N
Ces,6,a,ic.java
pu+lic class Ces,6,a,ic L
pu+lic s,a,ic void main 76,ringIJ args9 L
&elicula pelicula E new &elicula79@
61s,em.ou,.prin,ln7pelicula.ge,8umero4ias799@
61s,em.ou,.prin,ln7pelicula.ge,&recio%inimo799@
N
N

7!'!C! MBtodos de )-ase!
Estos mtodos son compartidos por todas las instancias.
Se usan estos mtodos principalmente en manipular variables de instancia.
Se les declara con el calificador s,a,ic
Se invoca a este mtodo de clase con el nombre de la clase o con el nombre de una instancia.

La.o(ato(+o
&elicula.java
pu+lic class &elicula L
priva,e s,a,ic floa, precio E $.5"f@
priva,e 6,ring ,i,ulo@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 53
Fundamentos de Java Julio 2008

pu+lic &elicula76,ring ,i,ulo9 L
,his.,i,ulo E ,i,ulo@
N
pu+lic 6,ring ge,Ci,ulo79 L
re,urn ,i,ulo@
N

pu+lic s,a,ic void se,&recio7floa, nuevo&recio9 L
precio E nuevo&recio@
N
pu+lic s,a,ic floa, ge,&recio79 L
re,urn precio@
N
N
Ces,6,a,ic(.java
pu+lic class Ces,6,a,ic( L
pu+lic s,a,ic void main 76,ringIJ args9 L
&elicula.se,&recio7$.P8f9@
&elicula oscar E new &elicula7MFen DurM9@
61s,em.ou,.prin,ln7oscar.ge,&recio799@
oscar.se,&recio7..P8f9@
61s,em.ou,.prin,ln7&elicula.ge,&recio799@

N
N

Que resultados se obtienen?

3.2 EJERCICIOS
E1e()+)+o '
Cree la clase Cliente que tendr los siguiente datos cdigo (in,) nombre, direccin, telfono (6,ring)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el cdigo (que inicia en 2000).
Otro que aceptara los datos nombre, direccin, telfono.
El cdigo del cliente debe ser automtico e incrementarse en uno cada vez que se cree una instancia.
Los cdigos inician en 2001
Agregue los mtodos se, y ge, para estos atributos.
Tambin agregue el mtodo ,o6,ring79 para mostrar los datos del cliente asi como el cdigo creado
automticamente.
Cree la clase Pelicula con los siguientes datos: codigo (in,) titulo, tipo (6,ring) precio (floa,)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el cdigo (que inicia en 9000).
Otro que aceptara los datos titulo, tipo, precio .
El cdigo de la pelicula debe ser automtico e incrementarse en uno cada vez que se cree una instancia.
Los codigos inician en 9001
Agregue los mtodos se, y ge, para estos atributos.
Tambin agregue el mtodo ,o6,ring79 para mostrar los datos de la pelicula incluido el cdigo
autogenerado.

Defina la clase BaseDeDatos donde creara 4 clientes (nombres familiares) y 6 pelculas (que haya visto
en cine o televisin).
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 54
Fundamentos de Java Julio 2008

Finalmente cree el programa TestClases que muestre toda la base de datos (haciendo uso de la ventaja
del mtodo toString() ). Tambin muestre el ultimo cdigo autogenerado tanto en clientes como en
pelculas que deber obtener directamente de sus clases.


Clien,e.java
pu+lic class Clien,e L
priva,e in, id@
''...
priva,e s,a,ic in, ul,imo:d E ("""@
''...
pu+lic Clien,e79 L
,his.id E ...
ul,imo:dTT@
N
pu+lic Clien,e76,ring nom+re...9 L
,his79@
,his.nom+re E ...
N

N

&elicula.java
pu+lic class &elicula L
priva,e in, id@
''...
priva,e s,a,ic in, ul,imo:d E P"""@
''...
pu+lic s,a,ic in, ge,;l,imo:d79 L
re,urn ul,imo:d@
N
N

Fase4e4a,os.java
pu+lic class Fase4e4a,os L
Clien,e clien,e! E new Clien,e7M4aneel OlivawM/M6olaria.M/M!!-(5.(M9@
''...
&elicula pelicula! E new Clien,e7M)l &adrinoM/M4ramaM/5.$"f9@
''...
N

Ces,Clases.java
pu+lic class Ces,Clases L
pu+lic s,a,ic void main 76,ringIJ args9 L

Fase4e4a,os +d E new Fase4e4a,os79@
61s,em.ou,.prin,ln7+d.clien,e!9@
61s,em.ou,.prin,ln7+d.clien,e(9@
''...
61s,em.ou,.prin,ln7+d.pelicula!9@
61s,em.ou,.prin,ln7+d.pelicula(9@
''...
61s,em.ou,.prin,ln7Clien,e.ge,;l,imo:d799@
61s,em.ou,.prin,ln7&elicula.ge,;l,imo:d799@
N
N


Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 55
Fundamentos de Java Julio 2008
E1e()+)+o 2
Cree la clase Vendedor con los siguientes atributos nombre, edad, ventas, sueldoFijo. La clase tambin
contara con un atributo esttico para contar la cantidad de vendedores que se vayan creando. La clase
cuenta con un constructor que recibe nombre, edad, ventas, sueldoFijo como argumentos. En este
constructor se incrementara el contador de vendedores creados.
Contara con un mtodo esttico que retornara la cantidad actual de vendedores creados getCantidad().
Otro mtodo retornara el sueldo del vendedor getSueldo(). El sueldo es el 0.25% de las ventas mas el
sueldo fijo.
Agregue otro constructor con dos argumentos como nombre y ventas nicamente.
En el programa AplicacionVendedor.java se encuentra lo siguiente:
...
Qendedor vendedorDari E new Qendedor7MDari 6eldonM/8"""9@
Qendedor vendedor6alvorE new Qendedor7M6alvor DardinM/$"/5"""/!$""9@
61s,em.ou,.prin,ln7Qendedor.ge,Can,idad799@
61s,em.ou,.prin,ln7vendedorDari.ge,6ueldo799@
61s,em.ou,.prin,ln7vendedor6alvor.ge,6ueldo799@
...



Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 56
Fundamentos de Java Julio 2008
Tema 4. TRABAJANDO CON ARREGLOS
Resumen
Se estudiara el uso de arreglos y cadenas en la soluci"n de problemas en Java!
4.1. DEFINICION DE ARRE4LOS
;!'!' De4+n+)+8n
Un arreglo es una coleccin de variables del mismo tipo.
La longitud de un arreglo es fijo cuando se crea.
Elemento 0 [0] Valor = 1
Elemento 1 [1] Valor = 2
Elemento 2 [2] Valor = 4
Elemento 3 [3] Valor = 8
1
2
4
8
Pasos de la creacin de arreglos de primitivas
Se declara el arreglo
nicialmente la variable referencia un valor nulo
in,IJ po,encias@ ''forma mas usada
in, po,enciasIJ@
po,encias-? null
Se crea el arreglo
Se requiere la longitud del arreglo
po,encias E new in,I.J@
En caso de variables primitivas se inician en 0 o false. Las
primitivas no se pueden operar con el valor null.
En caso de variables referencia se inician en null. No
referencian a ningn objeto.
po,encias-? "
"
"
"
Se inicia los valores del arreglo
Se asignan valores elemento por elemento
po,enciasI"J E !@
po,enciasI!J E (@
po,enciasI(J E .@
po,enciasI$J E 8@
Los arreglos pueden ser creados e iniciados al mismo tiempo
in,IJ po,encias E L!/(/./8N@
po,encias-? !
(
.
8
Los arreglos son muy usados para buscar datos, especialmente si se conocen sus valores cuando se
crean.
in,IJ dias%esesAnioFisies,o E L$!/(P/$!/$"/$!/$"/$!/$!/$"/$!/$"/$!N@
;!'!2! 6(a)t+)a Gu+ada
Los elementos de un arreglo inician con el valor por defecto de una primitiva.
La propiedad length del arreglo es su longitud.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 57
Fundamentos de Java Julio 2008
Cual es el resultado los siguientes bloques.
Encuentre 3 errores en el siguiente cdigo.
'' +lo0ue !
in,IJ numeros E new in,I5J@
61s,em.ou,.prin,ln7numeros.leng,h-!9@ '' .
'' +lo0ue (
in,IJ ,ruco E new in,I$J@
61s,em.ou,.prin,ln7,rucoI"J9@ '' "
'' +lo0ue $
in,IJ cu+os E L!/ 8/ (A/ 6./ !(5N@
in, indice E cu+os.leng,h@ '' 5
61s,em.ou,.prin,ln7cu+osIindiceJ9@ '' )rror el 2ndice va de ! a ./ n
,o
'' +lo0ue .
in,IJ pares E L(/ ./ 6/ 8/ !"/ !(/ !./ !6/ !8/ ("N@
in, can,idad E "@
while 7can,idad.leng,h = !"9 L ''while 7paresIcan,idadJ XE null9 L
can,idadTT@
N
'' +lo0ue 5
charIJ vocales@
61s,em.ou,.prin,ln7vocales.leng,h9@ '' `al,a iniciali3ar
Encuentre cuatro errores en el siguiente cdigo
!. in,IJ aE new in,I("J@
(. floa,IJ +E new floa,I!"J@
$. in, a( E new in,I("J@
.. in,IJ +( E new floa,I!"J@ '' 8o asigne floa, a in,
5. aI(J E -5@
6. aI.J E !"@
A. in, k E aI6J@
8. aIkJ E ("@
P. aI("J E "@ '' )l 2ndice va de " a !P: Arra1:ndexOu,OfFounds)xcep,ion
!". aI$J E !.!@ '' 8o asigne decimales a ncmeros en,eros
Errores:
Ocurre Arra1:ndexOu,OfFounds)xcep,ion cuando el ndice del arreglo es incorrecto.
Ocurre 8ull&oin,er)xcep,ion cuando se intenta acceder a un elemento no inicializado.
Una primitiva no se puede comparar o asignar con un valor null7aplica a o+je,os9.
Solo las referencias se comparan con null 7s-lo o+je,os9.
4.2. ARRE4LOS 0ULTIDI0ENSIONALES
Se trata de arreglos de arreglos y se declara de la siguiente forma:
,ipoIJIJ nom+reArreglo E
new ,ipoIcan,idad`ilasJIcan,idadColumnasJ@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 58
Fundamentos de Java Julio 2008
in,IJIJ ,a+la E new in,I.JI(J@
,a+laI"JI"J E !@
,a+la -?
I"J
I!J
I(J
I$J
,a+laI"J
,a+laI!J
,a+laI(J
,a+laI$J
-?
-?
-?
-?
! A
$ 5
. 8
" "
Definir una matriz de enteros colocando como valores la suma de su numero de fila y columna en la
matriz
L
in, nE !"@
in, pE ("@
dou+leIJIJ m E new dou+leInJIpJ@
for 7in, iE "@ i=n@ iTT9
for 7in, jE "@ j=p@ jTT9
mIiJIjJE iTj@
N
4.3. LABORATORIO
;!7!' E1e()+)+o
Se tiene en un arreglo las notas del examen parcial de 10 alumnos. Encuentre la mnima y mxima nota.
8o,as.java
package ejercicios@
pu+lic class 8o,as L
pu+lic s,a,ic void main76,ringIJ args9 L
in,IJ no,as E L!(/ "./ "A/ !8/ !"/ !5/ "5/ !6/ !8/ !!N@
in, i E !@
dou+le minE (".!@
dou+le maxE ""."@
while 7i = !"9 L
...
N
61s,em.ou,.prin,ln7max9@
61s,em.ou,.prin,ln7min9@
N
N
;!7!2! E1e()+)+o
Se cuenta con los arreglos siete y ocho
Multiplicar el primer elemento del arreglo siete con el primer elemento del arreglo ocho y as
sucesivamente. Almacenar el resultado en otro arreglo y mustrelo.
%a,ri3.java
package ejercicios@
pu+lic class %a,ri3 L
pu+lic s,a,ic void main76,ringIJ args9 L
in,IJ sie,e E LA/!A/(A/$A/.A/5A/6A/AA/8A/PA/!"AN@
in,IJ ocho E L8/!8/(8/$8/.8/58/68/P8/!"8/!!8/!P8N@
...
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 59
Fundamentos de Java Julio 2008
N
N
4.4. CADENAS.
;!;!'! De4+n+)+8n!
Una cadena es una secuencia de caracteres
La librera String (o clase String) se usa para definir todas las cadenas en Java.
Las cadenas se delimitan con comillas dobles.
''
61s,em.ou,.prin,ln7MDola %undo.M9@
6,ring camara E MCamaraM@
6,ring luces E camara TM AccionM@
6,ring vacio E MM@
''
;!;!2! Const(u))+on de )adenas!
Tambin se puede usar la siguiente sintaxis para construir cadenas.
'' con una cons,an,e
6,ring nom+re)mpleado E new 6,ring7M>. 4aneel OlivawM9@
'' con una cadena vacia
6,ring inicio E new 6,ring79@
'' copiando una cadena
6,ring copia)mpleado E new 6,ring7nom+re)mpleado9@
'' con un arreglo de char
charIJ vocales E LRaR/ReR/RiR/RoR/RuRN@
6,ring cadenaQocales E new 6,ring7vocales9@
;!;!7! Con)atena)+on!
Para concatenar cadenas puede usar lo siguiente:
'' ;sando el operador T
61s,em.ou,.prin,ln7M 8om+re E M T nom+re)mpleado 9@
'' &uede conca,enar primi,ivas 1 cadenas.
in, edad E ((@
61s,em.ou,.prin,ln7M )dad E M T edad 9@
'' %edian,e la funci-n conca,79
6,ring nom+re E M)lijah M@
6,ring apellidos E MFale1 M@
6,ring nom+reComple,o E nom+re.conca,7apellidos9@
4.5. OPERACIONES CON CADENAS.
;!?!'! Lon0+tud de una )adena!
6,ring nom+re E MDari 6eldonM@
in, longi,ud E nom+re.leng,h79@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 60
Fundamentos de Java Julio 2008
? !!
;!?!2! U.+)a( un )a(3)te( med+ante un +nd+)e
6,ring nom+re E MSladia 4elmarreM@
char c E nom+re.charA,7"9@
? S
;!?!7! E:t(ae( una su.)adena
'' "!($.56A8P"!($.5
6,ring nom+re E MFlisseno+iarellaM@
'' !($.56A8P"!($.56
6,ring su+Cadena E nom+re.su+s,ring7(/69@
? isse
;!?!;! Conve(t+( a ma5Js)u-as o m+nJs)u-as!
6,ring ,i,ulo E M6egunda `undacionM@
6,ring ma1usculas E ,i,ulo.,o;pperCase79@
6,ring minusculas E ,i,ulo.,o<owerCase79@
? 6)S;84A `;84AC:O8
? segunda fundacion
;!?!?! E-+m+na( es,a)+os de- +n+)+o 5 e- 4+na- de -a )adena!
6,ring au,or E M :saac Asimov M@
6,ring resal,ar E MKMTau,or.,rim79TMKM@
? K:saac AsimovK
;!?!C! U.+)a( una su.)adena desde una u.+)a)+8n!
'' "!($.56A8P"!(
6,ring alcalde E M6alvor DardinM@
in, u+icacion! E alcalde.indexOf7MvorM9@
in, u+icacion( E alcalde.indexOf7MrM/A9@
in, u+icacion$ E alcalde.indexOf7MhM9@
? $
? P
? "
;!?!D! Com,a(ando dos )adenas!
6,ring password E M`SD&;GM@
if password.e0uals7MfgD&;wM9
61s,em.ou,.prin,ln7MCorrec,oXM9@
)lse
61s,em.ou,.prin,ln7M)rrorXM9@
? )rrorX
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 61
Fundamentos de Java Julio 2008
6,ring password E M`SD&;GM@
if password.e0uals:gnoreCase7MfgD&;wM9
61s,em.ou,.prin,ln7MCorrec,oXM9@
else
61s,em.ou,.prin,ln7M)rrorXM9@
? Correc,oX
;!?!E! Com,a(ando (e0+ones de una )adena!
6,ring url E Mh,,p:''www.uni.edu.peM@
if 7url.endsGi,h7M.peM99
61s,em.ou,.prin,ln7M&agina 8acionalM9@
else
61s,em.ou,.prin,ln7M&agina )x,ranjeraM9@
6,ring parame,ro E Mip E !P(.!"".5!.(M@
if 7parame,ro.s,ar,sGi,h7MipM99
61s,em.ou,.prin,ln7M<a direccion MTparame,ro9@
else
61s,em.ou,.prin,ln7M)l par*me,ro no es una ipM9@
;!?!F! O.tene( )adenas desde -as ,(+m+t+vas!
Se utilizan funciones de la librera String
6,ring seven E 6,ring.valueOf7A9@
6,ring uno&un,o;no E 6,ring.valueOf7!.!9@
floa, pi E $.!.!5P(@
6,ring pi6,ring E 6,ring.valueOf7pi9@
''
;!?!'K! O.tene( ,(+m+t+vas desde -as )adenas!
Para esto se utilizan funciones de las libreras nteger y Float.
''
6,ring alfa E M!PAAM@
in, alfa:n,eger E :n,eger.parse:n,7alfa9@
''
6,ring +e,a E M!P.AAM@
floa, +e,a`loa, E `loa,.parse`loa,7+e,a9@
;!?!''! EJERC&C&OS
Cual es la respuesta de:
'' Flo0ue !
6,ring s E new 6,ring7MQiernesM9@
if 7sEEMQiernesM9
61s,em.ou,.prin,ln7M>espues,a AM9@
if 7s.e0uals7MQiernesM99
61s,em.ou,.prin,ln7M>espues,a FM9@
? ]
'' Flo0ue (
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 62
Fundamentos de Java Julio 2008
in, num! E !($.56A@
61s,em.ou,.prin,ln76,ring.valueOf7num!9.charA,7$99@
? ]
'' Flo0ue $
6,ring s! E M<unesM@
6,ring s( E M%ar,esM@
61s,em.ou,.prin,ln7s!.conca,7s(9.su+s,ring7./899@
? ]
'' Flo0ue .
'' s$ inicia con ( espacios 1 ,am+ien ,ermina con (.
6,ring s$ E M <unes M@
61s,em.ou,.prin,ln7s$.indexOf7MesM99@
61s,em.ou,.prin,ln7s$.,rim79.indexOf7MesM99@
4.*. ARRE4LOS DE CADENAS
;!C!'! De4+n+)+on
Un arreglo de cadenas tambin sigue los pasos de creacin de arreglos.

Declaracion 6,ring IJ ca,egor2as@
Creacin ca,egorias E new 6,ringI$J@
niciacin. ca,egoriasI"J E M4ramaM@
'' Creando una arreglo de cadenas vacias.
6,ring IJ arreglo E new 6,ring I.J@
for 7 in, i E "@ i = arreglo.leng,h@ iTT 9 L
arregloIiJ E new 6,ring79@
N
'' Creando e iniciando un arreglo.
6,ring IJ ca,egorias E LM4ramaM/ MComediaM/ MAccionMN@
'' Accesando los elemen,os del arreglo
6,ring IJ ca,egorias E LM4ramaM/ MComediaM/ MAccionMN@
61s,em.ou,.prin,ln7M Comedia E MT ca,egor2asI!J.leng,h79 9@
;!C!2! E1e()+)+os
Cual es el resultado de:
''
6,ring IJ ca,egorias E LM4ramaM/ MComediaM/ MAccionM/ M:nfan,ilMN@
in, indice E ca,egor2as.leng,h V (@
61s,em.ou,.prin,ln7ca,egor2asIindiceJ.leng,h79 9@
''
6,ring IJ ca,egorias E LM4ramaM/ MComediaM/ MAccionM/ M:nfan,ilMN@
in, indice E ca,egor2as.leng,h V (@
61s,em.ou,.prin,ln7ca,egor2asIindiceJ.leng,h79 9@
4.,. 0AIN
main() cuenta con un nico parmetro que es un arreglo de cadenas.
Este arreglo de cadenas son los parmetros de la linea de comandos.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 63
Fundamentos de Java Julio 2008
C:\? java )co Dola %undo
'' )co.java
package ejercicios@
pu+lic class )co L
pu+lic s,a,ic void main 76,ring IJ args9 L
if 7args.leng,h XE (9
61s,em.ou,.prin,ln7M;so: java )co Arg! Arg(M9@
else
61s,em.ou,.prin,ln7argsI"J T M M T argsI!J9@
N
N
4.- LABORATORIO
Cree la clase Cliente que tendra los siguiente datos codigo (in,) nombre, direccion, telefono (6,ring)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el cdigo (que inicia en cero).
Otro que aceptara los datos nombre, direccin, telfono.
El cdigo del cliente debe ser automtico e incrementarse en uno cada vez que se cree una instancia.
Los cdigos inician en 2001
Opcionalmente agregue los mtodos se, y ge, para estos atributos.
Tambin agregue el mtodo ,o6,ring79 para mostrar los datos del cliente as como el cdigo creado
automticamente.
Cree la clase Pelicula con los siguientes datos: codigo (in,) titulo, tipo (6,ring) precio (floa,),
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el codigo (que inicia en 1).
Otro que aceptara los datos titulo, tipo, precio .
El cdigo de la Pelicula debe ser automtico e incrementarse en uno cada vez que se cree una instancia.
Los cdigos inician en 9001
Opcionalmente agregue los mtodos se, y ge, para estos atributos.
Tambin agregue el mtodo ,o6,ring79 para mostrar los datos de la pelicula incluido el cdigo
autogenerado.
Clien,e.java
pu+lic class Clien,e L
priva,e in, id@
priva,e s,a,ic in, ul,imo:dE("""@
priva,e 6,ring nom+re@
priva,e 6,ring direccion@
priva,e 6,ring ,elefono@
pu+lic Clien,e79 L
,his.id E ul,imo:d@
ul,imo:dTT@
N
pu+lic Clien,e76,ring nom+re/ 6,ring nueva4ireccion/
6,ring nuevoCelefono9 L
,his79@
,his.nom+re E nom+re@
,his.direccion E nueva4ireccion@
,his.,elefono E nuevoCelefono@
N
pu+lic void se,8om+re76,ring nuevo8om+re9 L
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 64
Fundamentos de Java Julio 2008
nom+re E nuevo8om+re@
N
pu+lic void se,4ireccion76,ring nuevo4ireccion9 L
direccion E nuevo4ireccion@
N
pu+lic void se,Celefono76,ring nuevoCelefono9 L
,elefono E nuevoCelefono@
N
pu+lic in, ge,:d79 L
re,urn id@
N
pu+lic s,a,ic in, ge,;l,imo:d79 L
re,urn ul,imo:d@
N
pu+lic 6,ring ge,8om+re79 L
re,urn nom+re@
N
pu+lic 6,ring ge,4ireccion79 L
re,urn direccion@
N
pu+lic 6,ring ge,Celefono79 L
re,urn ,elefono@
N
pu+lic 6,ring ,o6,ring79L
re,urn 7MCodigo : MTidTM MTnom+reTM MTdireccionTM MT,elefono9@
N
N
''...
&elicula.java
pu+lic class &elicula L
priva,e in, id@
priva,e s,a,ic in, ul,imo:dEP"""@
priva,e 6,ring ,i,ulo@
priva,e 6,ring ,ipo@
priva,e floa, precio@
pu+lic &elicula79 L
,his.id E ul,imo:d@
ul,imo:dTT@
N
pu+lic &elicula76,ring nuevoCi,ulo/6,ring nuevoCipo9 L
,his79@
,his.,i,ulo E nuevoCi,ulo@
,his.,ipo E nuevoCipo@
N
pu+lic void se,Ci,ulo76,ring nuevoCi,ulo9 L
,i,ulo E nuevoCi,ulo@
N
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 65
Fundamentos de Java Julio 2008
pu+lic void se,Cipo76,ring nuevoCipo9 L
,ipo E nuevoCipo@
N
pu+lic void se,&recio7floa, nuevo&recio9 L
precio E nuevo&recio@
N
pu+lic 6,ring ge,Ci,ulo79 L
re,urn ,i,ulo@
N
pu+lic 6,ring ge,Cipo79 L
re,urn ,ipo@
N
pu+lic in, ge,:d79 L
re,urn id@
N
pu+lic floa, ge,&recio79 L
re,urn id@
N
pu+lic s,a,ic in, ge,;l,imo:d79 L
re,urn ul,imo:d@
N
pu+lic 6,ring ,o6,ring79 L
re,urn 7MCodigo : MTidTM MT,i,uloTM MT,ipo9@
N
N
Defina la clase BaseDeDatos con tres mtodos: en el primero creara 4 clientes (nombres familiares) y 6
peliculas (que haya visto en cine o televisin). Los clientes y las pelculas se encontraran en un arreglo.
El segundo devolvera el objeto cliente ingresando el id del cliente. El tercero realizara lo mismo con el id
de una pelicula.
Fase4e4a,os.java
package ,acora@
pu+lic class Fase4e4a,os L

priva,e s,a,ic Clien,eIJ clien,e E new Clien,eI.J@
priva,e s,a,ic &eliculaIJ pelicula E new &eliculaI.J@
pu+lic Fase4e4a,os79 L
clien,eI"J E new Clien,e7M4aneel OlivawM/M6olaria .M/
M5!!-A!!-(5.(M9@
''...
peliculaI"J E new &elicula7M8everlandM/M4ramaM/!"."f9@
''...
N
pu+lic s,a,ic Clien,e ge,Clien,e7in, id9 L
for 7...9 L
+reak@
N
re,urn clien,eIJ@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 66
Fundamentos de Java Julio 2008
N
pu+lic s,a,ic &elicula ge,&elicula7in, id9 ...
N
Cree la aplicacin Arreglos que permita Cargar la base de datos y mostrar los datos del cliente con
codigo 2002 y la pelicula con codigo 9003
CacoraArreglos.java
package ,acora@
pu+lic class CacoraArreglos L
pu+lic s,a,ic void main 76,ringIJ args9 L
in, clien,e:d@
in, pelicula:d@

if 7args.leng,h XE .9
61s,em.ou,.prin,ln7Mjava CacoraArreglos (""( P""$M9@
else L
clien,e:d E argsI"J@
pelicula:d E argsI!J@
N
Fase4e4a,os +d E new Fase4e4a,os79@
61s,em.ou,.prin,ln7+d.ge,Clien,e7clien,e:d 99@
61s,em.ou,.prin,ln7+d.ge,&elicula7pelicula:d99@
N
N
Se0unda 6a(te
Modifique la clase Pelicula y agregue el atributo: cliente (Clien,e) que sera quien alquile la pelicula,
implemente el mtodo set y get correspondientes.
Modifique la clase Cliente y agregue el atributo: importeAlquiler (floa,) implemente su mtodos set y
get correspondiente.
Modifique la clase BaseDeDatos y agregue un mtodo que permite calcular el importe de alquiler de un
cliente. La aplicacin debe permitir realizar el alquiler de 3 pelculas al cliente 2002 y muestre su costo.
&elicula.java
package ,acora@
pu+lic class &elicula L
priva,e Clien,e clien,e@
''...
pu+lic void se,Clien,e7Clien,e al0uilado&or9 L
clien,e E al0uilado&or@
N
N
Clien,e.java
package ,acora@
pu+lic class Clien,e L
priva,e floa, impor,eAl0uiler@
''...
N
Fase4e4a,os.java
package ,acora@
pu+lic class Fase4e4a,os L
''...
pu+lic s,a,ic floa, ge,:mpor,e7Clien,e clien,e9 L
&elicula pelicula E null@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 67
Fundamentos de Java Julio 2008
floa, impor,e E "@
for 7in, i E "@...9 L
if 7peliculaIiJ.ge,Clien,e79.ge,:d79 EE clien,e.ge,:d799 L
impor,e TE peliculaIiJ.ge,&recio79@
N
N
re,urn impor,e@
N
N
CacoraArreglos.java
package ,acora@
pu+lic class CacoraArreglos L
pu+lic s,a,ic void main 76,ringIJ args9 L

in, clien,e:d@
in, pelicula:d!@
in, pelicula:d(@
in, pelicula:d$@

if 7args.leng,h XE .9
61s,em.ou,.prin,ln7Mjava CacoraArreglos (""( P""! P""( P""$M9@
else L
clien,e:d E argsI"J@
pelicula:d!E argsI!J@
pelicula:d(E argsI(J@
pelicula:d$E argsI$J@
N
Fase4e4a,os +d E new Fase4e4a,os79@
Clien,e clien,e E +d.ge,Clien,e7clien,e:d9@
&elicula pelicula! E +d.ge,&elicula7pelicula:d!9@
pelicula!.se,Clien,e7clien,e9@
&elicula pelicula( E +d.ge,&elicula7pelicula:d(9@
pelicula(.se,Clien,e7clien,e9@
+d.ge,&elicula7pelicula:d$9.se,Clien,e7clien,e9@
61s,em.ou,.prin,ln7clien,e9@
61s,em.ou,.prin,ln7pelicula!9@
61s,em.ou,.prin,ln7pelicula(9@
61s,em.ou,.prin,ln7+d.ge,&elicula7pelicula:d$99@
61s,em.ou,.prin,ln7+d.ge,:mpor,e7clien,e99@
N
N
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 68
Fundamentos de Java Julio 2008
Tema 5. HERENCIA Y POLIMORFISMO
Resumen
Se estudiara el uso de la %erencia y el polimorismo en el reuso de clases!
5.1. )ERENCIA
?!'!' De4+n+)+8n
Permite a una clase compartir la misma estructura de datos y comportamiento de otra clase.
La herencia minimiza la necesidad de duplicar cdigo.
El Polimorfismo permite utilizar el mtodo de acuerdo al objeto heredado.
Superclase

Subclase

Que atributos tienen en comn las subclases?
Que atributos no tienen en comn las subclases?
Que mtodo no tienen en comn las subclases?
?!'!2! La <e(en)+a en Java
Una subclase se define indicando a que superclase extiende.
pu+lic class :,em L
'' 4efinici-n de la superclase :,em.
N
pu+lic class &elicula ex,ends :,em L
'' A,ri+u,os 1 mW,odos adicionales para dis,inguir una
'' pelicula de o,ros ,ipos de i,em
N
Una subclase hereda todas las variables instancia de la superclase.
Las variables de instancia deben ser private para que instancias de la subclase hereden sus valores.
pu+lic class :,em L
pro,ec,ed floa, precio E "@
pro,ec,ed 6,ring es,ado E M)xcelen,eM@
N
pu+lic class &elicula ex,ends :,em L
priva,e 6,ring ,i,ulo E MM@
priva,e in, duracion E "@
N
Una subclase no hereda ningn constructor de la superclase, debe declararse explcitamente.
Solo en caso no se declare explcitamente, se ejecutaran los constructores por defecto de las superclases y
finalmente de la subclase.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 69
(tem
Pelicula +i"r! 3uip!
(*V*F V:0)
Fundamentos de Java Julio 2008
&elicula pelicula E new &elicula 79@
'' :nicia varia+les de la clase :,em. Cons,ruc,or por defec,o.
'' :nicia varia+les de la clase &elicula. Cons,ruc,or por defec,o.
Defina las subclases Libro y Equipo.
Como declarara las clases:
Hombre > Homnido > Primate > Placentario
Perro > Canino > Carnivoro > Placentario
Placentario > Mamfero > Vertebrado > Animal > Ser Vivo.
?!'!7! La (e4e(en)+a su,e(
Se refiere a la clase padre
Se usa para invocar constructores de la clase padre
Debe ser la primera sentencia del constructor de la clase hijo
Esta referencia tambin se usa para invocar cualquier mtodo del padre.
pu+lic class :,em L
pro,ec,ed floa, precio E "@
:,em 7floa, precio9 L
,his.precio E precio@
N
N
pu+lic class &elicula ex,ends :,em L
priva,e 6,ring ,i,ulo E MM@
&elicula 7floa, precio/ 6,ring ,i,ulo9 L
super7precio9@
,his.,i,ulo E ,i,ulo@
N
N
?!'!;! MBtodos
La superclase define los mtodos para todas las subclases.
La subclase puede especificar mtodos propios.
:,em".java
pu+lic class :,em" L
pro,ec,ed floa, precio E "@

:,em" 7floa, precio9 L
,his.precio E precio@
N

pu+lic floa, ge,&recio79 L
re,urn precio@
N
N
&elicula".java
pu+lic class &elicula" ex,ends :,em"
L
priva,e 6,ring ,i,ulo E MM@
&elicula" 7floa, precio/ 6,ring ,i,ulo9 L
super7precio9@
,his.,i,ulo E ,i,ulo@
N
pu+lic 6,ring ge,Ci,ulo79
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 70
Fundamentos de Java Julio 2008
L
re,urn ,i,ulo@
N
N
Ces,6uper.java
pu+lic class Ces,6uper L
pu+lic s,a,ic void main 76,ringIJ args9 L

:,em" i,em E new :,em"7!.!f9@
61s,em.ou,.prin,ln7 i,em.ge,&recio79 9@
&elicula" pelicula E new &elicula"7(.(f/MdeligM9@
61s,em.ou,.prin,ln7 pelicula.ge,&recio79 9@
61s,em.ou,.prin,ln7 pelicula.ge,Ci,ulo79 9@
N
N
Que diferencia existe entre this y super?
Se puede reemplazar super7precio9@ por ,his.precio E precio@ ?
Que mtodos puede invocar una subclase?
La subclase hereda todos los mtodos del padre.
La subclase puede re-escribir un mtodo del padre.
:,em!.java
pu+lic class :,em! L
pu+lic floa, calcular:mpor,e7in, clien,e9 L
re,urn 5"@
N
N
&elicula!.java
pu+lic class &elicula! ex,ends :,em! L
pu+lic floa, calcular:mpor,e7in, clien,e9 L
if 7clien,e = 5""9
re,urn !"@
else
re,urn $"@
N
N
Ces,6o+rescri+ir.java
pu+lic class Ces,6o+rescri+ir L
pu+lic s,a,ic void main 76,ringIJ args9 L

:,em! i,em! E new :,em!79@
61s,em.ou,.prin,ln7 i,em!.calcular:mpor,e75PP9 9@
&elicula! pelicula! E new &elicula!79@
61s,em.ou,.prin,ln7 pelicula!.calcular:mpor,e7$PP9 9@
61s,em.ou,.prin,ln7 pelicula!.calcular:mpor,e75PP9 9@

N
N
Cual es la diferencia entre sobre-carga de mtodos y sobre-escritura de mtodos?
?!'!?! La (e4e(en)+a su,e(
Si una subclase sobrescribe un mtodo de la superclase; el mtodo de la superclase se puede invocar con la
referencia super.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 71
Fundamentos de Java Julio 2008
:,em(.java
pu+lic class :,em( L
pu+lic floa, calcular:mpor,e7in, clien,e9 L
re,urn 5"@
N
N
)0uipo(.java
pu+lic class )0uipo( ex,ends :,em( L
pu+lic floa, calcular:mpor,e7in, clien,e9 L
floa, seguro)0uipo E (5@
floa, al0uiler E super.calcular:mpor,e7clien,e9@
re,urn seguro)0uipo T al0uiler@
N
N
Ces,6uper(.java
pu+lic class Ces,6uper( L
pu+lic s,a,ic void main 76,ringIJ args9 L

:,em( ar,iculo E new :,em(79@
61s,em.ou,.prin,ln7 ar,iculo.calcular:mpor,e75PP9 9@
)0uipo( vhs E new )0uipo(79@
61s,em.ou,.prin,ln7 vhs.calcular:mpor,e75PP9 9@

N
N
5.2. P%"$#%&+$#%
Permite efectuar una misma operacin dependiendo del tipo de objeto.
Ejemplo
TacoraFilms inicia sus operaciones alquilando nicamente pelculas.
Tres meses despus amplia el alquiler a equipos, juegos y libros.
El alquiler de una pelicula es 2 soles por da de alquiler.
El alquiler de un equipo consta de un seguro de 50 soles adems de 5 soles por da.
El alquiler de juegos depende del fabricante. PlayStation 2soles/da Nintendo 1sol/da
Los libros no se alquilan, se prestan uno a la vez, mientras sean clientes de la tienda.
Explique por que se obtienen los resultados
Al0uiler$.java
pu+lic class Al0uiler$ L
priva,e in, dias@
pu+lic Al0uiler$7in, dias9 L
,his.dias E dias@
N
pu+lic in, ge,4ias 79 L
re,urn dias@
N
N
:,em$.java
pu+lic class :,em$ L
pro,ec,ed floa, calcular:mpor,e7Al0uiler$ con,ra,o9 L
re,urn "@
N
N
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 72
Fundamentos de Java Julio 2008
&elicula$.java
pu+lic class &elicula$ ex,ends :,em$ L
pro,ec,ed floa, calcular:mpor,e7Al0uiler$ con,ra,o9 L
in, impor,e E (Kcon,ra,o.ge,4ias79@
re,urn impor,e@
N
N
)0uipo$.java
pu+lic class )0uipo$ ex,ends :,em$ L
pro,ec,ed floa, calcular:mpor,e7Al0uiler$ con,ra,o9 L
in, seguro)0uipo E 5"@
in, impor,e E seguro)0uipo T 5Kcon,ra,o.ge,4ias79@
re,urn seguro)0uipo T impor,e@
N
N
uego$.java
pu+lic class uego$ ex,ends :,em$ L
6,ring fa+rican,e@
pu+lic uego$76,ring fa+rican,e9 L
,his.fa+rican,e E fa+rican,e@
N
pu+lic 6,ring ge,`a+rican,e79 L
re,urn fa+rican,e@
N
pro,ec,ed floa, calcular:mpor,e7Al0uiler$ con,ra,o9 L
6,ring fa+rican,e E ,his.fa+rican,e@
in, ,asa E "@
if 7fa+rican,e.e0uals7M&la16,a,ionM99 ,asa E (@
if 7fa+rican,e.e0uals7M8in,endoM99 ,asa E !@
in, impor,e E ,asaKcon,ra,o.ge,4ias79@
re,urn impor,e@
N
N
<i+ro$.java
pu+lic class <i+ro$ ex,ends :,em$ L
pro,ec,ed floa, calcular:mpor,e7Al0uiler$ con,ra,o9 L
re,urn "@
N
N
Ces,&olimorfismo.java
pu+lic class Ces,&olimorfismo L
pu+lic s,a,ic void main 76,ringIJ args9 L

Al0uiler$ con,ra,o E new Al0uiler$7!"9@

&elicula$ oscar E new &elicula$79@
61s,em.ou,.prin,ln7 oscar.calcular:mpor,e7con,ra,o9 9@
)0uipo$ vhs E new )0uipo$79@
61s,em.ou,.prin,ln7 vhs.calcular:mpor,e7con,ra,o9 9@

uego$ mu E new uego$7M8in,endoM9@
61s,em.ou,.prin,ln7 mu.calcular:mpor,e7con,ra,o9 9@
<i+ro$ agua E new <i+ro$79@
61s,em.ou,.prin,ln7 agua.calcular:mpor,e7con,ra,o9 9@
N
N
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 73
Fundamentos de Java Julio 2008
5.3. E" %pe&a.%& $ntance%+ 5 cat
El operador instanceof permite determinar la clase de un objeto en tiempo de ejecucin.
La operacin cast permite modificar la clase de un objeto.
pu+lic class Ces,Operador L
pu+lic s,a,ic void main 76,ringIJ args9 L
&elicula$ oscar E new &elicula$79@
)0uipo$ vhs E new )0uipo$79@
uego$ mu E new uego$7M8in,endoM9@
<i+ro$ agua E new <i+ro$79@

,es,Operador7oscar9@
,es,Operador7vhs9@
,es,Operador7mu9@
,es,Operador7agua9@
N
pu+lic s,a,ic void ,es,Operador 7:,em$ ar,iculo9 L
if 7ar,iculo ins,anceof uego$9 L
uego$ juego E 7uego$9 ar,iculo@
61s,em.ou,.prin,ln7juego.ge,`a+rican,e799@
N
else L
61s,em.ou,.prin,ln7M8o ,iene `a+rican,eM9@
N
N
N
5.4. At&$'!t%6 #1t%.% 5 c"ae +$na"
?!;!'! #a(+a.-es final
Una variable final es una constante
Una variable final no puede ser modificada
Una variable final debe ser iniciada
Una variable final por lo general es publica para que pueda ser accesada externamente.
pu+lic final s,a,ic 6,ring 8)S>O E M``````M@
pu+lic final s,a,ic floa, &: E $.!.!5P(f@
pu+lic final s,a,ic in, %Ae:%O#:C)%6 E !"@
?!;!2! MBtodos 4+na-
Un mtodo puede ser definida como final para evitar la sobre-escritura en una subclase.
Un mtodo final no se puede redefinir en una clase hijo.
pu+lic final s,a,ic 6,ring ge,Flanco79 L
re,urn M""""""M@
N
pu+lic final +oolean verificar&assword76,ring password9 L
if 7password.e0uals7...
N
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 74
Fundamentos de Java Julio 2008
?!;!7! C-ases 4+na-
Una clase final no puede ser padre de otra clase.
Una clase puede ser definida como final para evitar la herencia.
El compilador es mas eficiente con definiciones final por que no buscara estas clases o mtodos al tratar clases
heredadas.
pu+lic final class Color L
pu+lic final s,a,ic 6,ring 8)S>O E M``````M@
pu+lic final s,a,ic 6,ring ge,Flanco79 L
re,urn M""""""M@
N
N
Ejercicio: Realizar lo siguiente.
<i+rer2a.java
pu+lic final class <i+reria L
pu+lic final s,a,ic 6,ring F<A8CO E M""""""M@
pu+lic final s,a,ic floa, &: E $.!.!5P(f@

pu+lic final s,a,ic in, ge,%odulo!"7in, numero9
L
'' O+,iene el modulo !" de la suma de digi,os
if 7numero = "9 numero E -numero@
6,ring cadena E 6,ring.valueOf7numero9@
in, suma E "@
for 7in, iE!@ i = cadena.leng,h79@ iTT9 L
6,ring carac,er E cadena.su+s,ring7i-!/i9@
in, digi,o E :n,eger.parse:n,7carac,er9@
suma TE digi,o@
N
in, residuo E sumaU!"@
re,urn residuo@
N
N
Ces,<i+reria.java
pu+lic class Ces,<i+reria L
pu+lic s,a,ic void main 76,ringIJ args9 L
61s,em.ou,.prin,ln7<i+reria.F<A8CO9@
61s,em.ou,.prin,ln7<i+reria.&:9@
61s,em.ou,.prin,ln7<i+reria.ge,%odulo!"7!!99@
61s,em.ou,.prin,ln7<i+reria.ge,%odulo!"788"$8599@
N
N
5.5. E" #1t%.% +$na"$7e89
Cuando todas las referencias de un objeto se pierden, se marcan para que el Garbage Collector los recoja y libere
ese espacio en memoria.
&elicula pelicula E new &elicula7MdeligM9@
pelicula E null@
El objeto "delig" que estaba referenciado por pelicula ha perdido todas sus referencias.
Luego el Garbage Collector liberara el espacio ocupado por "delig"
El mtodo finalize es llamado justo antes que el Garbage Collector libere la memoria. En este instante se puede
aprovechar para realizar otras operaciones.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 75
Fundamentos de Java Julio 2008
pu+lic class &elicula. L
priva,e 6,ring ,i,ulo@
pu+lic &elicula.76,ring ,i,ulo9 L
,his.,i,ulo E ,i,ulo@
N
pu+lic void finali3e79
L
61s,em.ou,.prin,ln7M6e aca+o MT,i,ulo9@
N
N
pu+lic class Ces,`inali3e L
pu+lic s,a,ic void main 76,ringIJ args9 L

&elicula. glo+o E new &elicula.7MdeligM9@
glo+o E null@

N
N
5.*. E(e&c$c$%
Encuentre los errores en el siguiente cdigo.
:,em.java
!. package al0uiler@
(. pu+lic class :,em L
$. pu+lic final in, %Ae:%O E 5@
.. pu+lic 6,ring ge,8om+re79 re,urn MM@
5. priva,e 6,ring ge,Color79 re,urn MM@
6. pro,ec,ed 6,ring ge,:mpor,e79 re,urn MM@
A. 6,ring ge,Alias79 re,urn MM@
8. pu+lic final 6,ring ge,`a+rican,e79 re,urn MM@
P. N
&elicula.java
!. package al0uiler@
(. pu+lic class &elicula ex,ends :,em L
$. pu+lic final in, %Ae:%O E 5@
.. pu+lic 6,ring ge,8om+re79 re,urn super.ge,8om+re79@
5. priva,e 6,ring ge,Color79 re,urn super.ge,Color79@
6. pro,ec,ed 6,ring ge,:mpor,e79 re,urn super.ge,:mpor,e79@
A. 6,ring ge,Alias79 re,urn super.ge,Alias79@
8. pu+lic final 6,ring ge,`a+rican,e79
P. re,urn super.ge,`a+rican,e79@
!". N
ugue,e.java
!. package almacen@
(. pu+lic final class ugue,e L
$. :,em i,em E new :,em7MM9@
.. pu+lic 6,ring ge,8om+re79 re,urn i,em.ge,8om+re79@
5. pu+lic 6,ring ge,Color79 re,urn i,em.ge,Color79@
6. pro,ec,ed 6,ring ge,:mpor,e79 re,urn i,em.ge,:mpor,e79@
A. 6,ring ge,Alias79 re,urn i,em.ge,Alias79@
8. N
&elo,a.java
!. package almacen@
(. pu+lic final class &elo,a ex,ends ugue,e L
$. pu+lic 6,ring ge,8om+re79 re,urn super.ge,8om+re79@
.. pu+lic 6,ring ge,Color79 re,urn super.ge,Color79@
5. pro,ec,ed 6,ring ge,:mpor,e79 re,urn super.ge,:mpor,e79@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 76
Fundamentos de Java Julio 2008
6. 6,ring ge,Alias79 re,urn super.ge,Alias79@
A. N
5.,. La'%&at%&$%.
Cree una clase tem.java con los siguientes atributos: id (int); titulo, descripcin, ranking, categora (String) , precio
de alquiler por dia (double). Todos estos atributos seran protected.
Agregue un atributo entero privado esttico que inicia en 1000 para autogenerar el d del item.
Agregue un constructor sin parmetros que autogenere un id para el item en base al atributo esttico.
Agregue un segundo constructor con argumentos titulo, descripcin, precio, ranking y categora. Este constructor
invocara al primer constructor para asignar el id. Ademas asignara los argumentos a los atributos.
Agregue todos los mtodos set y get para cada atributo.
:,em.java
pu+lic class :,em L
priva,e s,a,ic in, siguien,e:d E !"""@
pro,ec,ed in, id@
...
pu+lic :,em79 L
,his.id E TTsiguien,e:d@
N
pu+lic :,em76,ring ,i,ulo... 9 L
,his79@
,his.,i,ulo E ,i,ulo...
N
pu+lic in, ge,:d79...
...
pu+lic void se,Ci,ulo76,ring ,i,ulo9...
pu+lic 6,ring ge,Ci,ulo79...
...
pu+lic s,a,ic in, ge,6iguien,e:d79...
N
La clase Cliente contara con 2 atributos, su id y su nombre. El id se generara automticamente.
Clien,e.java
pu+lic class Clien,e L
priva,e s,a,ic in, siguien,e:d E ("""@
pro,ec,ed in, id@
...
pu+lic Clien,e79 L
,his.id E TTsiguien,e:d@
N
pu+lic Clien,e76,ring nom+re9 L
,his79@
,his.nom+re...
N
pu+lic in, ge,:d79...
pu+lic 6,ring ge,8om+re79...
N
Cree una clase Pelicula.java que herede de tem.java con los siguientes atributos: duracion (int) y director (String).
Estos atributos seran privados.
Agregue un constructor con argumentos titulo, descripcin, precio, ranking, numero de dias, categora, duracin y
director. Este constructor invocara al constructor de la superclase y luego asignara los dos ultimos argumentos a sus
atributos privados.
Agregue todos los mtodos set y get para sus dos atributos privados.
Agregue el mtodo toString() que devuelva todos los atributos privados y heredados
&elicula.java
pu+lic class &elicula ex,ends :,em L
priva,e 6,ring direc,or@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 77
Fundamentos de Java Julio 2008
priva,e in, duracion@

pu+lic &elicula76,ring ,i,ulo ... in, duracion9 L
super7...9@
,his.direc,or E direc,or@
,his.duracion E duracion@
N
pu+lic void se,4irec,or...
pu+lic 6,ring ge,4irec,or...
pu+lic void se,4uracion...
pu+lic 6,ring ge,4uracion...
pu+lic 6,ring ,o6,ring...
N
Cree una clase Juego.java que herede de tem.java con los siguientes atributos: memoria (int) y tipo (String). Estos
atributos seran privados.
Agregue un constructor con argumentos titulo, descripcin, precio, ranking, numero de dias, categora, memoria y
tipo. Este constructor invocara al constructor de la superclase y luego asignara los dos ltimos argumentos a sus
atributos privados.
Agregue todos los mtodos set y get para sus dos atributos privados.
Agregue el mtodo toString() que devuelva todos los atributos privados y heredados
uego.java
pu+lic class uego ex,ends :,em L
priva,e in, memoria@
priva,e 6,ring ,ipo@

pu+lic uego76,ring ,i,ulo ... 6,ring ,ipo9 L
super7...9@
,his.memoriaE...@
,his.,ipoE...@
N
...se,%emoria...
...ge,%emoria...
...se,Cipo...
...ge,Cipo...
pu+lic 6,ring ,o6,ring...
N
En la base de datos se encontraran la lista de pelculas y los juegos.
Fase4e4a,os.java
pu+lic class Fase4e4a,os L
priva,e s,a,ic Clien,eIJ clien,e E new Clien,e I.J@
priva,e s,a,ic :,emsIJ i,em E new :,em I.J@

pu+lic Fase4e4a,os79 L
clien,eI"J E new Clien,e7M4aneel OlivawM9@
''...
i,emI"J E new &elicula7M<a caravana del valorM/...9@
i,emI!J E new &elicula7M)n las lunas de )ndorM/...9@
i,emI(J E new uego7M%u OnlineM/...9@
i,emI$J E new uego7MGar Craf,M/...9@
''...
N
pu+lic s,a,ic Clien,e ge,Clien,e7in, id9 L
for 7...9 L
+reak@
N
re,urn clien,eIJ@
N
pu+lic s,a,ic :,em ge,:,em7in, id9 ...
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 78
Fundamentos de Java Julio 2008
N
La clase Alquiler.java contara con los siguientes atributos: un arreglo de tems que se alquilaran (tem) el cliente que
alquila (Cliente) un numero de alquiler id (int), la cantidad de tems alquilados (int) y la cantidad de dias de alquiler
(int).
Un atributo de clase privado esttico entero ser el contador de id que iniciara en 500.
Una constante ser el mximo numero de tems a alquilar que es 10.
Una constante ser el impuesto del alquiler de 19%.
Un constructor asignara el cliente por argumento y el numero de dias de alquiler. Tambin creara el arreglo de tems,
y su numero de alquiler.
Un mtodo para agregar tems al arreglo de tems del alquiler.
Un mtodo imprimira todo el detalle del alquiler en pantalla.
Al0uiler.java
pu+lic class Al0uiler L
priva,e s,a,ic in, siguien,eAl0uiler:d E 5""@
priva,e in, al0uiler:d@
priva,e in, numero4ias@
priva,e in, clien,e:d@
priva,e in, can,idad:,ems@
priva,e in,IJ i,em:d@
priva,e final s,a,ic in, %Ae:C)%6 E !"@
priva,e final s,a,ic dou+le :%&;)6CO E ".!P@
...
pu+lic Al0uiler7in, clien,e:d/ in, numero4ias9 L
,his.al0uiler:d E ...
,his.clien,e:d E ...
...
i,em:d E new in,I%Ae:C)%6J@
N
pu+lic void agregar:,em7in, i,em9 L
if 7...9 L
i,em:dI...J E i,em@
can,idad:,emsTT@
N
else 61s,em.ou,.prin,ln7M4emasiados 2,emsXM9@
N
pu+lic void imprimir>epor,e79 L
'K
Clien,e :d: (""" 8om+re: 6alvor Dardin
4ias al0uiler: 5
4e,alle
!. )l &adrino &recio E !.!"
(. Odisea (""! &recio E (.("
$. Aeropuer,o AA &recio E $.$"
:mpor,e ven,a E $$.""
:mpor,e ,o,al E $P.(A
K'
N
N
El programa TacoraFilms realizara el alquiler
pu+lic class Cacora`ilms L
pu+lic s,a,ic void main76,ringIJ args9 L
Al0uiler al0uiler E new Al0uiler7(""!/59@
al0uiler.agregar:,em7!""!9@
al0uiler.agregar:,em7!""(9@
al0uiler.agregar:,em7!""$9@
al0uiler.imprimer>epor,e79@
N
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 79
Fundamentos de Java Julio 2008
N
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 80
Fundamentos de Java Julio 2008
Tema . CLASES ABSTRACTAS E INTERFASES

Resumen
Se estudiara el uso de clases abstractas, m&todos abstractos, interases, implementaci"n de interases

*.1. CLASES ABSTRACTAS
C-ases a.st(a)tas
Sirven para modelar objetos de alto nivel, no contienen cdigo, sino solo declaraciones. Todos sus
mtodos deben existir en sus clases hijas.
Una clase abstracta no puede ser instanciada (Crear un objeto a partir de ella).

MBtodos a.st(a)tos
Estos mtodos son parte de clases abstractas
Un mtodo abstracto debe ser redefinido en las subclases.
Cada subclase puede definir el mtodo de manera diferente.

Las clases abstractas pueden contener mtodos que no son abstractos.

La.o(ato(+o!
Que falta en el siguiente cdigo?
:,em.java
pu+lic a+s,rac, class :,em L
pro,ec,ed 6,ring ,i,ulo@
pro,ec,ed floa, precio E 5."f@
pu+lic a+s,rac, +oolean esAl0uila+le79@
pu+lic floa, ge,&recio79 L
re,urn precio@
N
N
&elicula.java
pu+lic class &elicula ex,ends :,em L
pu+lic +oolean esAl0uila+le79 L
re,urn ,rue@
N
N
<i+ro.java
pu+lic class <i+ro ex,ends :,em L
pu+lic floa, ge,&recio79 L
re,urn "."f@
N
N
A+s,rac,o.java
pu+lic class A+s,rac,o L

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 81
Fundamentos de Java Julio 2008
pu+lic s,a,ic void main 76,ringIJ args9 L

&elicula pelicula E new &elicula79@
<i+ro li+ro E new <i+ro79@

61s,em.ou,.prin,ln7pelicula.esAl0uila+le799@
61s,em.ou,.prin,ln7pelicula.ge,&recio799@
61s,em.ou,.prin,ln7li+ro.esAl0uila+le799@
61s,em.ou,.prin,ln7li+ro.ge,&recio799@

N

N
*.2. Inte&+ae
Una interfase es totalmente abstracta; todos sus mtodos son abstractos, sus atributos son pblicos
estticos y final.
Una interfase define los mtodos que otras clases pueden implementar pero no provee ninguna lnea de
cdigo.
Una clase solo puede heredar de una superclase.
Una clase puede implementar muchas interfases; por lo que las interfases permiten herencia mltiple.

Ejemplos de interfases:




Conducible



No Conducible





Las interfases describen la conducta que requiere muchas clases. El nombre de una interfase por lo
general es un adjetivo como Conduci+le/ Ordena+le/ ;+ica+le.
Aqu se diferencia de una clase que usualmente es un sustantivo como &elicula/ Clien,e/
Al0uiler
Las clases implementadas por una interfase pueden ser no tener ninguna relacin unas con otras.
A diferencia de las clases heredadas de una superclase tiene similitudes.
Las clases que implementan una interface deben definir todos los mtodos de la interface.
Conduci+le.java
pu+lic in,erface Conduci+le L
pu+lic s,a,ic final in, %Ae:%O#S:>O E .5@
pu+lic a+s,rac, void girar:30uierda7in, grados9@
pu+lic a+s,rac, void girar4erecha7in, grados9@

N

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 82
Fundamentos de Java Julio 2008
Tambin se puede definir la interfase sin los calificadores pu+lic s,a,ic final a+s,rac,, puesto
que son implcitos.
Para declarar que una clase que implementa una interfase se usa implemen,s
La.o(ato(+o
Que falta en el siguiente cdigo?
Conduci+le.java
pu+lic in,erface Conduci+le L
in, %Ae:%O#S:>O E P"@
void girar:30uierda7in, grados9@
void girar4erecha7in, grados9@
N

8aveArea.java
pu+lic class 8aveAerea L
pro,ec,ed char direccion@
pro,ec,ed in, al,ura@
pu+lic void se,4ireccion7char direccion9 L
,his.direccionE direccion@
N
pu+lic char ge,4ireccion79 L
re,urn ,his.direccion@
N
N
Slo+o.java
pu+lic class Slo+o ex,ends 8aveAerea implemen,s Conduci+le L
priva,e in, volumenSas@
pu+lic void se,QolumenSas7in, volumenSas9 L
,his.volumenSasE volumenSas@
N
pu+lic in, ge,QolumenSas79 L
re,urn ,his.volumenSas@
N
pu+lic void girar4erecha7in, grados9 L
if 7ge,4ireccion79EER8R ZZ gradosEEP"9 se,4ireccion7R)R9@
N
N

&a,in.java
pu+lic class &a,in implemen,s Conduci+le L
pu+lic void girar4erecha7in, grados9 L
61s,em.ou,.prin,ln7MSiro de MTgradosTM grados a la derechaM9@
N
pu+lic void girar:30uierda7in, grados9 L
61s,em.ou,.prin,ln7MSiro de MTgradosTM grados a la i30uierdaM9@
N
N

Ces,:n,erface.java
pu+lic class Ces,:n,erface L

pu+lic s,a,ic void main 76,ringIJ args9 L

Slo+o 3epelin E new Slo+o79@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 83
Fundamentos de Java Julio 2008
3epelin.se,4ireccion7R8R9@
3epelin.girar4erecha7P"9@
61s,em.ou,.prin,ln73epelin.ge,4ireccion799@

&a,in pa,in E new pa,in79@
pa,in.girar4erecha7P"9@

N

N

EJERC&C&O '

Crear la interfaz &uedeCan,ar (que es capaz de cantar), un interfaz muy simple que slo posee un
mtodo can,ar.

&uedeCan,ar.java
pu+lic in,erface &uedeCan,ar L
pu+lic void can,ar79@
N

Crear la clase Persona que implemente el interfaz Cantable y que cuando cante lo haga con las notas
musicales.

&ersona.java
pu+lic class &ersona implemen,s &uedeCan,ar L
pu+lic void can,ar79 L
61s,em.ou,.prin,ln7Mdo re mi fa sol la siM9@
N
N

Crear la clase Canario y Gallo que implemente el interfaz PuedeCantar y que muestre como cantan
Canario.java
... 61s,em.ou,.prin,ln7Mpio pio pioM9 ...
Sallo.java
... 61s,em.ou,.prin,ln7Mki ki ri kiM9 ...


Realice el programa que haga cantar a un canario y un tenor.

&rograma:n,erfa3.java
pu+lic class &rograma:n,erfa3 L
pu+lic s,a,ic void main76,ring argIJ9 L

&ersona pavaro,i E new &ersona79@
hacerCan,ar7pavaro,i9@
Canario piolin E new Canario79@
hacerCan,ar7piolin9@
Sallo claudio E new Sallo79@
hacerCan,ar7claudio9@
N

pu+lic s,a,ic void hacerCan,ar7&uedeCan,ar can,or9 L
can,or.can,ar79@
N

N
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 84
Fundamentos de Java Julio 2008

E1e()+)+o 2!
Algunos seres pueden caminar y puede nadar estas dos capacidades son interfases
(&uedeCaminar.java y &uede8adar.java). Los mamiferos son animales que pueden moverse
(%amifero.java). El gato es un mamifero que puede nadar y moverse (Sa,o.java).
Un Loro puede caminar pero no puede nadar.

&uedeCaminar.java
pu+lic in,erface &uedeCaminarL
pu+lic void caminar79@
N
&uede8adar.java
pu+lic in,erface &uede8adar L
pu+lic void nadar79@
N
%amifero.java
pu+lic class %amifero L
6,ring especie/ color@
pu+lic void caminar79 L
61s,em.ou,.prin,ln7M)l mam2fero caminaM9@
N
N
Sa,o.java
pu+lic class Sa,o ex,ends %amifero implemen,s &uedeCaminar/ &uede8adar L
priva,e in, numero&a,as E .@
pu+lic void nadar79 L
61s,em.ou,.prin,ln7M)l ga,o nadaM9@
N
N
<oro.java
pu+lic class <oro implemen,s &uedeCaminar...
...61s,em.ou,.prin,ln7M)l loro caminaM9@
...

:n,erfaces.java
pu+lic class :n,erfaces L
pu+lic s,a,ic void main76,ringIJ args9 L
Sa,o felix E new Sa,o79@
felix.caminar79@
felix.nadar79@
<oro pepe E new <oro79@
pepe.caminar79@
N
N

Por que no se requiere escribir todos los mtodos de las interfaces en la clase Gato?

E1e()+)+o ad+)+ona-!
Agregue al ejercicio anterior la interface PuedeVolar.java
Agregue la superclase Aves.java
Herede la clase Avestruz.java (solo caminan)
Herede la clase Loro.java (caminan y vuelan)
Herede la clase Murcilago.java (es un mamfero que vuela y camina)
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 85
Fundamentos de Java Julio 2008
Cree la clase Felino.java (es un mamifero que camina y puede nadar).
Modifique la clase Gato.java (es un Felino)
Cree la clase Tigre.java


Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 86
Fundamentos de Java Julio 2008
Tema !. COLECCIONES DE OBJETOS

Resumen
Se estudiara el uso de colecciones de objetos y una t&cnica de ordenaci"n mediante interaces!

,.1. LA CLASE OBJECT
Todas las clases en java heredan de la clase java.lang.Object.
Los siguientes mtodos se heredan de la clase Object

boolean equals(Object obj) ndica si otro objeto es igual a otro.
int hashcode() Proporciona un valor hashcode para el objeto (id)
String toString() Proporciona una representacin en cadena del objeto

Otros mtodos se encuentran en:

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html

D!'!'! Conve(t+( ,(+m+t+vas en (e4e(en)+as
Las primitivas no se comparan con null.
Las primitivas no pueden integrar una Coleccin.
Para cada primitiva java provee un clase para convertirlo en referencia y tratarlo como un objeto y
resolver los problemas previos.

in, precio @
61s,em.ou,.prin,ln7precio9@
precio E (@
61s,em.ou,.prin,ln7precio T 59@

:n,eger o+je,o&recio@
o+je,o&recio E new :n,eger7precio9@
61s,em.ou,.prin,ln7o+je,o&recio.,o6,ring799@
61s,em.ou,.prin,ln7o+je,o&recio9@
61s,em.ou,.prin,ln7o+je,o&recioT59@
61s,em.ou,.prin,ln7o+je,o&recio.in,Qalue799@
61s,em.ou,.prin,ln7o+je,o&recio.in,Qalue79T59@

,.2. COLECCIONES
Es un conjunto libreras para manipular y almacenar datos. Estas libreras se llaman colecciones.
Las colecciones se organizan en:
- nterfaces: Manipulan los datos independientemente de los detalles de implementacin.
- Clases: mplementan las interfaces.
Para programar con colecciones se debe:
- Elegir una interfaz adecuada a la funcionalidad requerida.
- Elegir una clase que implemente la interfaz
- Extender la clase si fuera necesario.

En que se diferencia una clase de una interface?
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 87
Fundamentos de Java Julio 2008

D!2!'! A(/u+te)tu(a!
http://java.sun.com/j2se/1.4.2/docs/api/java/util/package-tree.html
Las interfaces y las clases estn relacionadas en un armazn (framework) de colecciones para facilitar
su uso.
- nterfaces de colecciones que son definiciones abstractas de los tipos de colecciones.
- Clases que implementan las interfaces.
- Clases abstractas que implementan parcialmente las interfaces.
- Mtodos estticos que son algoritmos (por ejemplo ordenar una lista).
- nterfaces de soporte para las colecciones. (una infraestructura).



D!2!2! &nte(4a)es de )o-e))+ones
http://java.sun.com/j2se/1.4.2/docs/api/java/util/package-tree.html
&nte(4a)e
Collection Representa un grupo de objetos. Sin implementaciones directas, agrupa
la funcionalidad general que todas las colecciones ofrecen.

Set Coleccin que no puede tener objetos duplicados.

SortedSet Set que mantiene los elementos ordenados

List Coleccin ordenada que puede tener objetos duplicados

Map Coleccin que enlaza claves y valores; no puede tener claves
duplicadas y cada clave debe tener al menos un valor.

SortedMap Map que mantiene las claves ordenadas.


D!2!2!'! La +nte(4a)e Co--e)t+on
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html

MBtodos de -a +nte(4a)e
add(Object) Aade el objeto en la coleccin
addAll(Collection) Aade la coleccin.
clear() Quita todos los elementos de la coleccin.
contains(Object) El objeto se encuentra en la coleccin?
containsAll(Collection) Todos esos elementos estn en la coleccin?
equals(Object) Es igual esta coleccin al argumento?
isEmpty() La coleccin est vaca?
terator iterator() Devuelve un iterador para la coleccin.
remove(Object) Elimina una aparicin del objeto
removeAll(Collection) Elimina todos esos objetos
retainAll(Collection) Se queda slo con los objetos del argumento
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 88
Fundamentos de Java Julio 2008
size() Nmero de elementos en la Coleccin
toArray() Devuelve un arreglo con los objetos de la coleccin.


D!2!2!2! La +nte(4a)e L+st
http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html
Colecciones ordenadas (secuencias) en las que cada elemento ocupa una posicin identificada por un
ndice. El primer ndice es el 0. Las listas admiten duplicados.

MBtodos de -a +nte(4a)e
add(int, Object) Aade el objeto en la posicin indicada
add'(bject) Aade el objeto al final de la lista
addAll(int, Collection) Aade la coleccin en la posicin
add*ll'+ollection) Aade la coleccin al final
clear') Quita todos los elementos de la lista.
contains'(bject) El objeto se encuentra en la lista?
contains*ll'+ollection) Todos esos elementos estn en la lista?
equals(Object) Es igual la lista con el argumento?
get(int) Devuelve el objeto en la posicin.
indexOf(Object) Devuelve la 1ra posicin en la que est el objeto
is,mpty') La lista est vaca?
-terator iterator') Devuelve un iterador para la coleccion.
lastndexOf(Object) Devuelve la ltima posicin del objeto
Listterator listterator() Devuelve un iterador de lista
Listterator listterator(int) Devuelve un iterador de lista para la sublista que inicia en int
remove(int) Quita de la lista el objeto en esa posicin
remove'(bject) Elimina una aparicin del objeto en la lista
remove*ll'+ollection) Elimina todos esos objetos
retain*ll'+ollection) Se queda slo con los objetos del argumento
set(int, Object) Reemplaza el objeto en esa posicin por el objeto
que se proporciona
si#e') Nmero de elementos en la Coleccin
List subList(int, int) Devuelve la sublista que comienza en el ndice del primer
argumento hasta el indice del segundo argumento.
to*rray') Devuelve un arreglo con los objetos de la coleccin.

D!2!2!7! La +nte(4a)e Ma,
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html
Son pares de datos(clave, valor). No puede haber claves duplicadas y cada clave se corresponde con al
menos un valor.

MBtodos de -a +nte(4a)e
clear() Elimina todos los pares del mapa
containsKey(Object) La clave proporcionada se encuentra en el mapa?
containsValue(Object) Hay algn par con el valor proporcionado?
equals(Object) Es igual este mapa y el proporcionado?
get(Object) Devuelve el objeto que se corresponde con la clave dada.
isEmpty() La lista est vaca?
put(Object clave, Object valor) Asocia la clave proporcionada con el valor proporcionado
putAll(Map) Agrega los pares de ese mapa
remove(Object) Quita la clave del mapa junto con su correspondencia.
size() Devuelve el nmero de pares que hay en el mapa.

,.3. E(e#p"% .e c"ae $#p"e#enta.a. L$t

Las interfases L+stL Set 5 So(tedSet son descendientes de la interfase Co--e)t+on
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 89
Fundamentos de Java Julio 2008
El concepto de Polimorfismo aplica para todas las clases que implementan estas interfases.
Las clases que implementan la interfase L+st son: A((a5L+st y L+nMedL+st
Las clases que implementan la interfase Set son: as<Set y L+nMedas<Set
La clase que implementa la sub-interfase So(tedSet es: T(eeSet.

D!7!'! De4+n+endo una )-ase
Para manipular las colecciones usaremos la clase Producto compuesta por dos atributos, un constructor
y un mtodo get.
&roduc,o.java
pu+lic class &roduc,o L

priva,e 6,ring nom+re@
priva,e in, can,idad@

pu+lic &roduc,o76,ring s/ in, i9 L
nom+re E s@
can,idad E i@
N

pu+lic 6,ring ,o6,ring79L
re,urn 7M8om+re: MTnom+reTM Can,idad: MTcan,idad9@
N

pu+lic 6,ring ge,8om+re79 L
re,urn ,his.nom+re@
N

N

D!7!2! Most(a( -os e-ementos de una )o-e))+8n! A((a5L+st
En el ejemplo crearemos una lista del mercado y mostraremos sus elementos.
- Primero se importan las libreras de java.util.* donde se concentran la gran mayora de las Clases del
"Collection Framework".
- Se inicia la declaracin de la clase seguido de su mtodo principal main.
- Se definen 5 instancias con el constructor de la clase Producto.
- Agregamos estas instancias al ArrayList con el mtodo add
- Mostramos el nmero de objetos de la coleccin mediante el mtodo size.
- Se declara una instancia terator la cual facilita la extraccin de objetos de la coleccin.
- Se extrae los objetos del ArrayList y se muestran en pantalla.
- Se elimina el objeto con indice 2. Se muestra la lista nuevamente.
- Se eliminan todos los objetos mediante el mtodo clear.

impor, java.u,il.K@
pu+lic class %ercado<is,a
L
pu+lic s,a,ic void main76,ring argsIJ9
L
'' 4efinir 5 ins,ancias de la Clase &roduc,o
&roduc,o pan E new &roduc,o7M&anM/ 69@
&roduc,o leche E new &roduc,o7M<echeM/ (9@
&roduc,o man3anas E new &roduc,o7M%an3anasM/ 59@
&roduc,o +rocoli E new &roduc,o7MFrocoliM/ (9@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 90
Fundamentos de Java Julio 2008
&roduc,o carne E new &roduc,o7MCarneM/ (9@

'' 4efinir un Arra1<is,
Arra1<is, lis,a E new Arra1<is,79@

'' Colocar :ns,ancias de &roduc,o en Arra1<is,
lis,a.add7pan9@
lis,a.add7leche9@
lis,a.add7man3anas9@
lis,a.add7+rocoli9@
'' :ndica el indice de insercion
lis,a.add7!/ carne9@
lis,a.add7carne9@

'' :mprimir con,enido de Arra1<is,s
61s,em.ou,.prin,ln7M <is,a del mercado con M T lis,a.si3e79 T
M produc,osM9@

'' 4efinir :,era,or para ex,raer e imprimir sus valores

:,era,or i, E lis,a.i,era,or79@
while 7 i,.has8ex,79 9 L
O+jec, o+je,o E i,.nex,79@
&roduc,o produc,o E 7&roduc,o9o+je,o@
61s,em.ou,.prin,ln7produc,o9@
N

'' )liminar elemen,o de Arra1<is,
lis,a.remove7(9@
61s,em.ou,.prin,ln7M <is,a del mercado con M T lis,a.si3e79 T
M produc,osM9@
'' 4efinir :,era,or para ex,raer e imprimir valores

:,era,or i,( E lis,a.i,era,or79@
while 7 i,(.has8ex,79 9 L
&roduc,o produc,o E 7&roduc,o9i,(.nex,79@
61s,em.ou,.prin,ln7produc,o9@
N

'' )liminar ,odos los valores del Arra1<is,
lis,a.clear79@
61s,em.ou,.prin,ln7M <is,a del mercado con M T lis,a.si3e79 T
M produc,osM9@
N
N

D!7!7! Ev+ta( o.1etos du,-+)ados! as<Set
- Primero modificamos la clase Producto agregando dos mtodos equals y hashCode
- El mtodo equals desarrolla como se comparan dos objetos
- El mtodo hashCode devuelve un identificador nico.

&roduc,o.java
pu+lic class &roduc,o L

priva,e 6,ring nom+re@
priva,e in, can,idad@

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 91
Fundamentos de Java Julio 2008
pu+lic &roduc,o76,ring s/ in, i9 L
nom+re E s@
can,idad E i@
N

pu+lic 6,ring ,o6,ring79L
re,urn 7M8om+re: MTnom+reTM Can,idad: MTcan,idad9@
N

pu+lic 6,ring ge,8om+re79 L
re,urn ,his.nom+re@
N

pu+lic +oolean e0uals7 O+jec, o+je,o 9 L
if 7o+je,o EE null9 re,urn false@

&roduc,o produc,o E 7&roduc,o9o+je,o@
if 7,his.ge,8om+re79 EE produc,o.ge,8om+re79 9 re,urn ,rue@

re,urn false@
N

pu+lic in, hashCode79 L
re,urn ,his.ge,8om+re79.hashCode79@
N

N

- Aun cuando se agregaron 6 elementos, la lista solo cuenta con 5. Set no permite duplicados.
- La evaluacion de duplicidad de objetos se realiza mediante los mtodos equals y hashCode.
- Un Set no cuenta con indice, por lo que para eliminar un elemento se indica el objeto.

%ercadoDash6e,.java
impor, java.u,il.K@
pu+lic class %ercadoDash6e,
L
pu+lic s,a,ic void main76,ring argsIJ9
L
'' 4efinir 5 ins,ancias de la Clase &roduc,o
&roduc,o pan E new &roduc,o7M&anM/ 69@
&roduc,o leche E new &roduc,o7M<echeM/ (9@
&roduc,o man3anas E new &roduc,o7M%an3anasM/ 59@
&roduc,o +rocoli E new &roduc,o7MFrocoliM/ (9@
&roduc,o carne E new &roduc,o7MCarneM/ (9@
&roduc,o res E new &roduc,o7MCarneM/ $9@

'' 4efinir un Dash6e,
Dash6e, lis,a E new Dash6e,79@
lis,a.add7pan9@
lis,a.add7leche9@
lis,a.add7man3anas9@
lis,a.add7+rocoli9@
lis,a.add7carne9@
lis,a.add7res9@

'' :mprimir con,enido de Dash6e,
'' Aun0ue son inser,ados 6 elemen,os/ el Dash6e, solo con,iene 5
'' 6e de+e a 0ue un 6e, no permi,e elemen,os duplicados.

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 92
Fundamentos de Java Julio 2008
61s,em.ou,.prin,ln7M <is,a del mercado con M T lis,a.si3e79 T
M produc,osM9@

'' 4efinir :,era,or para ex,raer e imprimir valores

for7 :,era,or i, E lis,a.i,era,or79@ i,.has8ex,79@ 9 L
O+jec, o+je,o E i,.nex,79@
&roduc,o produc,o E 7&roduc,o9o+je,o@
61s,em.ou,.prin,ln7produc,o9@
N

'' 8o es posi+le eliminar elemen,os por indice
'' )n un Dash6e, solo se elimina por valor de O+je,o

lis,a.remove7man3anas9@
61s,em.ou,.prin,ln7M <is,a del mercado con M T lis,a.si3e79 T
M produc,osM9@
for7 :,era,or i,( E lis,a.i,era,or79@ i,(.has8ex,79@9 L
&roduc,o produc,o E 7&roduc,o9i,(.nex,79@
61s,em.ou,.prin,ln7produc,o9@
N

'' )liminar ,odos los valores del Arra1<is,
lis,a.clear79@
61s,em.ou,.prin,ln7M <is,a del mercado con M T lis,a.si3e79 T
M produc,osM9@
N
N

D!7!;! Mane1a( )o-e))+ones o(denadas! T(eeSet
- Primero modificamos la clase Producto implementando un comparador para el ordenamiento.
- La clase implementa Comparable
- El mtodo compareCo de la interfase Compara+le indica que atributos se usaran para comparar.

impor, java.u,il.K@
pu+lic class &roduc,o implemen,s Compara+le L

priva,e 6,ring nom+re@
priva,e in, can,idad@

pu+lic &roduc,o76,ring s/ in, i9 L
nom+re E s@
can,idad E i@
N

pu+lic 6,ring ,o6,ring79L
re,urn 7M8om+re: MTnom+reTM Can,idad: MTcan,idad9@
N

pu+lic 6,ring ge,8om+re79 L
re,urn ,his.nom+re@
N

pu+lic +oolean e0uals7 O+jec, o+je,o 9 L
'' :ndica en +ase a 0ue a,ri+u,os se iguala el o+je,o
if 7o+je,o EE null9 re,urn false@
&roduc,o produc,o E 7&roduc,o9o+je,o@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 93
Fundamentos de Java Julio 2008
if 7,his.ge,8om+re79 EE produc,o.ge,8om+re79 9 re,urn ,rue@

re,urn false@
N

pu+lic in, hashCode79 L
'' re,orna un iden,ificador unico del o+je,o.
re,urn ,his.ge,8om+re79.hashCode79@
N

pu+lic in, compareCo7 O+jec, o+je,o 9 L
'' :ndica en +ase a 0ue a,ri+u,os se compara el o+je,o
'' 4evuelve T! si ,his es ? 0ue o+je,o
'' 4evuelve -! si ,his es = 0ue o+je,o
'' 4evuelve " si son iguales

&roduc,o produc,o E 7&roduc,o9o+je,o@
6,ring nom+reO+je,o E produc,o.ge,8om+re79.,o<owerCase79@
6,ring nom+reChis E ,his.ge,8om+re79.,o<owerCase79@

re,urn7 nom+reChis.compareCo7 nom+reO+je,o 9 9@
N
N

- Un TreeSet no permite elementos duplicados.
- Un TreeSet mantiene la lista ordenada.
- El elemento a comparar debe contar con mtodos equals, hashCode y compareTo.

%ercadoCree6e,.java
impor, java.u,il.K@
pu+lic class %ercadoCree6e,
L
pu+lic s,a,ic void main76,ring argsIJ9
L
'' 4efinir 5 ins,ancias de la Clase &roduc,o
&roduc,o pan E new &roduc,o7M&anM/ 69@
&roduc,o leche E new &roduc,o7M<echeM/ (9@
&roduc,o man3anas E new &roduc,o7M%an3anasM/ 59@
&roduc,o +rocoli E new &roduc,o7MFrocoliM/ (9@
&roduc,o carne E new &roduc,o7MCarneM/ (9@
&roduc,o res E new &roduc,o7MCarneM/ $9@

'' 4efinir un Cree6e,
Cree6e, lis,a E new Cree6e,79@
lis,a.add7pan9@
lis,a.add7leche9@
lis,a.add7man3anas9@
lis,a.add7+rocoli9@
lis,a.add7carne9@
lis,a.add7res9@

'' :mprimir con,enido de Cree6e,
'' Aun0ue se agregan 6 elemen,os/ el Cree6e, solo con,iene 5
'' Cree6e, no permi,e elemen,os duplicados/
'' Cree6e, de,ec,a 0ue el elemen,o MCarneM es,a duplicado
'' 8o,ese 0ue el orden del Cree6e, refleja un orden ascenden,e
mos,rar<is,a7lis,a9@

'' 8o es posi+le eliminar elemen,os por indice
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 94
Fundamentos de Java Julio 2008
'' ;n Cree6e, solo elimina por valor de O+je,o
lis,a.remove7man3anas9@
mos,rar<is,a7lis,a9@

'' )liminar ,odos los valores del Cree6e,
lis,a.clear79@
mos,rar<is,a7lis,a9@
N

pu+lic s,a,ic void mos,rar<is,a7Collec,ion lis,a9 L
61s,em.ou,.prin,ln7M <is,a del mercado con M T lis,a.si3e79 T
M produc,osM9@
for7 :,era,or i, E lis,a.i,era,or79@ i,.has8ex,79@9 L
&roduc,o produc,o E 7&roduc,o9i,.nex,79@
61s,em.ou,.prin,ln7produc,o9@
N

N
N


D!7!?! O(dena( 5 .us)a( en Co-e))+ones! Co--e)t+ons!
- La clase Collections (que no es la interface Collection) nos permite ordenar y buscar elementos en
listas.
- Se usaran los mtodos sort y binarySearch
- Los objetos de la lista deben tener mtodos equals, hashCode y compareTo adecuados.

%ercadoCollec,ions.java
impor, java.u,il.K@
pu+lic class %ercadoCollec,ions
L
pu+lic s,a,ic void main76,ring argsIJ9
L
'' 4efinir 5 ins,ancias de la Clase &roduc,o
&roduc,o pan E new &roduc,o7M&anM/ 69@
&roduc,o leche E new &roduc,o7M<echeM/ (9@
&roduc,o man3anas E new &roduc,o7M%an3anasM/ 59@
&roduc,o +rocoli E new &roduc,o7MFrocoliM/ (9@
&roduc,o carne E new &roduc,o7MCarneM/ (9@

'' 4efinir un Arra1<is,
Arra1<is, lis,a E new Arra1<is,79@

'' Colocar :ns,ancias de &roduc,o en Arra1<is,
lis,a.add7pan9@
lis,a.add7leche9@
lis,a.add7man3anas9@
lis,a.add7+rocoli9@
lis,a.add7!/carne9@

'' :mprimir con,enido de Arra1<is,
mos,rar<is,a7lis,a9@

'' Ordenar elemn,os de Arra1<is,
Collec,ions.sor,7lis,a9@

'' :mprimir con,enido de Arra1<is,
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 95
Fundamentos de Java Julio 2008
mos,rar<is,a7lis,a9@

'' Fuscar un elemen,o 0ue se compare con &an de ,ipo 6,ring
6,ring +uscar E M&anM@
in, indice E Collec,ions.+inar16earch7lis,a/+uscar9@

61s,em.ou,.prin,ln7+uscarTM es el elemen,o MTindice9@

N

pu+lic s,a,ic void mos,rar<is,a7Collec,ion lis,a9 L
61s,em.ou,.prin,ln7M <is,a del mercado con M T lis,a.si3e79 T
M produc,osM9@
in, iE"@
for7 :,era,or i, E lis,a.i,era,or79@ i,.has8ex,79@ iTT9 L
&roduc,o produc,o E 7&roduc,o9i,.nex,79@
61s,em.ou,.prin,ln7iTM-MTproduc,o9@
N

N
N

&roduc,o.java
impor, java.u,il.K@
pu+lic class &roduc,o implemen,s Compara+le L

priva,e 6,ring nom+re@
priva,e in, can,idad@

pu+lic &roduc,o76,ring s/ in, i9 L
nom+re E s@
can,idad E i@
N

pu+lic 6,ring ,o6,ring79L
re,urn 7M8om+re: MTnom+reTM Can,idad: MTcan,idad9@
N

pu+lic 6,ring ge,8om+re79 L
re,urn ,his.nom+re@
N

pu+lic +oolean e0uals7 O+jec, o+je,o 9 L
'' :ndica en +ase a 0ue a,ri+u,os se iguala el o+je,o
if 7o+je,o EE null9 re,urn false@
&roduc,o produc,o E 7&roduc,o9o+je,o@
if 7,his.ge,8om+re79 EE produc,o.ge,8om+re79 9 re,urn ,rue@

re,urn false@
N

pu+lic in, hashCode79 L
'' re,orna un iden,ificador unico del o+je,o.
re,urn ,his.ge,8om+re79.hashCode79@
N

pu+lic in, compareCo7 O+jec, o+je,o 9 L
'' :ndica en +ase a 0ue a,ri+u,os se compara el o+je,o
'' 4evuelve T! si ,his es ? 0ue o+je,o
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 96
Fundamentos de Java Julio 2008
'' 4evuelve -! si ,his es = 0ue o+je,o
'' 4evuelve " si son iguales

'' 4ependera del argumen,o como comparar los a,ri+u,os.
6,ring nom+reO+je,o@
if 7o+je,o ins,anceof &roduc,o 9 L
&roduc,o produc,o E 7&roduc,o9o+je,o@
nom+reO+je,o E produc,o.ge,8om+re79.,o<owerCase79@
N
else
if 7o+je,o ins,anceof 6,ring9 L
6,ring produc,o E 76,ring9o+je,o@
nom+reO+je,o E produc,o.,o<owerCase79@
N
else L
nom+reO+je,o E MM@
N

6,ring nom+reChis E ,his.ge,8om+re79.,o<owerCase79@

re,urn7 nom+reChis.compareCo7 nom+reO+je,o 9 9@
N

N


,.4. E(e#p"% .e c"ae $#p"e#enta.a. 0ap

La clase que implementan la interfase Ma, es as<Ma,.
La clase que implementa la sub-interfase So(tedMa, es T(eeMa,.

D!;!'! E1em,-o de as<Ma,
- Se define una instancia de la clase HashMap
- Se colocan 9 pares clave-valor con el mtodo put.
- Se muestra el contenido mediante un iterador que extrae los valores del HashMap.
- Se define un arreglo de String con tres claves para eliminar de la agenda.
- Se elimina las claves de la agenda

Ejercicio: Verifique si permite duplicados

AgendaDash%ap.java
impor, java.u,il.K@
pu+lic class AgendaDash%ap
L
pu+lic s,a,ic void main76,ring argsIJ9
L
'' 4efinir un Dash%ap
Dash%ap agenda E new Dash%ap79@

'' Agregar pares MclaveM-MvalorM al Dash%ap
agenda.pu,7M4oc,orM/ M7T5(9-."""-5"""M9@
agenda.pu,7MCasaM/ M78889-.5""-$.""M9@
agenda.pu,7MDermanoM/ M75A59-(".(-$($$M9@
agenda.pu,7MCioM/ M7.(!9-!"!"-""("M9@
agenda.pu,7M6uegrosM/ M7$$.9-6!"5-.$$.M9@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 97
Fundamentos de Java Julio 2008
agenda.pu,7MOficinaM/ M7$".9-5("5-8.5.M9@
agenda.pu,7MA+ogadoM/ M7A569-!("5-$.5.M9@
agenda.pu,7M&apaM/ M7559-P555-$(A"M9@
agenda.pu,7MCiendaM/ M78A.9-(.""-86""M9@

'' 4efinir :,era,or para ex,raer'imprimir valores
mos,rar%apa7agenda9@

'' 4efinir un arreglo con valores de,erminados
6,ring personasIJ E LMCioM/ M6uegrosM/ MA+ogadoMN@

'' )liminar los valores con,enidos en el arreglo
for7in, i E "@ i = personas.leng,h@ iTT9 L
agenda.remove7personasIiJ9@
N
mos,rar%apa7agenda9@
N

pu+lic s,a,ic void mos,rar%apa7%ap agenda9 L
61s,em.ou,.prin,ln7M Agenda con M T agenda.si3e79 T
M ,elefonosM9@
for7 :,era,or i, E agenda.ke16e,79.i,era,or79@ i,.has8ex,79@9 L
6,ring clave E 76,ring9i,.nex,79@
6,ring valor E 76,ring9agenda.ge,7clave9@
61s,em.ou,.prin,ln7clave T M : M T valor9@
N
N
N


D!;!2! E1em,-o de T(eeMa,
- En un TreeMap los elementos estan ordenados por la clave
- Luego se definen dos referencias de la interfase SortedMap
- En la primera se colocan las claves que se encuentran entre A y O. Metodo submap("A", "O")
- La segunda almacena las claves desde la P hacia el final.
- Estas comparaciones se han hecho con la clase String.
- Otras clases debern definir sus propios mtodos compareTo, equals y hashCode.

AgendaCree%ap.java
impor, java.u,il.K@
pu+lic class AgendaCree%ap
L
pu+lic s,a,ic void main76,ring argsIJ9
L
'' 4efinir un Cree%ap
Cree%ap agenda E new Cree%ap79@

'' Agregar pares MclaveM-MvalorM al Dash%ap
agenda.pu,7M4oc,orM/ M7T5(9-."""-5"""M9@
agenda.pu,7MCasaM/ M78889-.5""-$.""M9@
agenda.pu,7MDermanoM/ M75A59-(".(-$($$M9@
agenda.pu,7MCioM/ M7.(!9-!"!"-""("M9@
agenda.pu,7M6uegrosM/ M7$$.9-6!"5-.$$.M9@
agenda.pu,7MOficinaM/ M7$".9-5("5-8.5.M9@
agenda.pu,7MA+ogadoM/ M7A569-!("5-$.5.M9@
agenda.pu,7M&apaM/ M7559-P555-$(A"M9@
agenda.pu,7MCiendaM/ M78A.9-(.""-86""M9@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 98
Fundamentos de Java Julio 2008

'' 8o,ese 0ue el orden del Cree%ap refleja un orden ascenden,e
'' en sus elemen,os independien,emen,e del orden de insercion.
'' 4e+ido al uso de 6,ring se refleja un orden alfa+e,ico
mos,rar%apa7agenda9@

'' 4efinir dos Cree%ap nuevos
6or,ed%ap agendaAO E agenda.su+%ap7MAM/ MOM9@
6or,ed%ap agenda&d E agenda.,ail%ap7M&M9@

61s,em.ou,.prin,ln7M---- Agenda A-O ----M9@
mos,rar%apa7agendaAO9@

61s,em.ou,.prin,ln7M---- Agenda &-d ----M9@
mos,rar%apa7agenda&d9@

N

pu+lic s,a,ic void mos,rar%apa7%ap agenda9 L
61s,em.ou,.prin,ln7M Agenda con M T agenda.si3e79 T
M ,elefonosM9@
for7 :,era,or i, E agenda.ke16e,79.i,era,or79@ i,.has8ex,79@9 L
6,ring clave E 76,ring9i,.nex,79@
6,ring valor E 76,ring9agenda.ge,7clave9@
61s,em.ou,.prin,ln7clave T M : M T valor9@
N
N
N

,.5. EJERCICIO
pu+lic class &elicula6 L
priva,e in, codigo@
priva,e 6,ring ,i,ulo@
priva,e floa, precio@
priva,e 6,ring ,ipo@
&elicula7in, codigo/ 6,ring ,i,ulo/ floa, precio/ 6,ring ,ipo9 L
...
N
...
N
pu+lic class Ces,Car,elera L
pu+lic s,a,ic void main 76,ringIJ args9 L
...
N
N
En la clase pelicula agregue los mtodos compareTo, equals y hashCode.
En el programa TestCartelera.java cree una lista ordenada (TreeSet) de 5 pelculas y muestrelas en
orden alfabetico. Muestrelas en orden inverso tambin.
Agregue dos pelculas mas y muestre las pelculas.
Coloque las 7 peliculas en una mapa (TreeMap) el objeto pelicula ser la clave y su valor ser un String
que almacena el nombre del cliente que lo alquila.

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 99
Fundamentos de Java Julio 2008
Tema ". MANEJO DE E#CEPCIONES.

Resumen
Se estudiara conceptos bsicos para el manejo de e.cepciones!

-.1. E:CEPCIONES
E!'!'! De4+n+)+ones
Iue es una e:)e,)+8nA
Es un evento que interrumpe la ejecucin de un programa
- Usar un ndice fuera de los limites de un arreglo
- Dividir entre cero
- Realizar mtodos de objetos nulos.
Iue es un e((o(A
En java es cuando la situacin es irrecuperable y termina el programa.
- No hay memoria para correr JVM
- Errores internos en JVM
Cua- es -a d+4e(en)+aA
Una excepcin se puede controlar en el programa. Un error no.
E!'!2! Ca(a)te(*st+)as de- Java
Cuando ocurre una excepcin en un mtodo, Java lanza (throws) una excepcion (Exception).
El objeto Exception generado contiene el tipo de excepcin, y el estado del programa cuando ocurri el
error.

Se,a(ando e- mane1o de e((o(es
El manejo de excepciones en java permite separarlos del algoritmo principal.
El resultado es un cdigo mas legible y menos propenso a errores de programacin.

Manejo tradicional de errores.

in, leer>egis,roArchivo79 L
in, errorCode E "@
a+rirArchivo79@
if 7errorA+rirArchivo9 L
errorCode E O&)8#)>>O>@
N
else L
leerArchivo79@
if 7error<eerArchivo9 L
errorCode E >)A4#)>>O>@
N
cerrarArchivo79@
if 7errorCerrarArchivo9 L
errorCode E C<O6)#)>>O>@
N
N
re,urn errorCode@
N
Manejo de excepciones en Java.

leer>egis,roArchivo79 L
,r1 L
a+rirArchivo79@
leerArchivo79@
cerrarArchivo79@
N
ca,ch 7errorA+rirArchivo9 L
manejar)rrorA+rirArchivo@
N
ca,ch 7error<eerArchivo9 L
manejar)rror<eerArchivo@
N
ca,ch 7errorCerrarArchivo9 L
manejar)rrorCerrarArchivo@
N
N


Java separa los detalles del manejo de errores del cdigo principal, obtenindose un cdigo mas legible
y menos propenso a errores de codificacin.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 100
Fundamentos de Java Julio 2008

E!'!7! E:)e,)+ones
Devo-v+endo -a e:)e,)+8n <asta e- mane1ado( de e:)e,)+ones!
No se requiere que cada mtodo invocado maneje la excepcin, sino nicamente lo har el primer
manejador de excepciones de la lista de mtodos invocados.


Maneo Tradicional de errores


Excepciones en Java


El mtodo4 retorna el cdigo de error al
mtodo3.
El mtodo3 retorna el cdigo de error al
mtodo2
El mtodo2 retorna el cdigo de error al
metodo1
El metodo1 maneja el error.
El metodo4 lanza una excepcin
El metodo1 captura la excepcin y la maneja


Las e:)e,)+ones no ,ueden +0no(a(se
Una vez que un mtodo lanza un error no puede ignorarse a diferencia de la programacin tradicional
donde se debe controlar en cada punto de invocacin.

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 101
Metodo9
Manejo de errores
Metodo:
Metodo5
Metodo;
digo de error
digo de error
digo de error
Metodo9
Manejo de e<cepciones
Metodo:
Metodo5
Metodo;
E<cepcion
Fundamentos de Java Julio 2008
Maneo Tradicional de errores


Excepciones en Java



E!'!;! T<(oNa.-e

Todos los errores y excepciones heredan de la clase Chrowa+le




E((o(es!
Heredan de la clase )rror; estos se generan cuando ocurren errores fatales para el programa como por
ejemplo: cuando la memoria esta llena o cuando es imposible encontrar una clase requerida.

E:)e,)+ones no )ont(o-adas
Heredan de la clase >un,ime)xcep,ion.
Estas ocurren cuando por ejemplo se divide entre cero o se intenta acceder a un elemento del arreglo
fuera de sus limites.
Mediante cdigo se puede capturar, manipular o ignorar estas excepciones.
Si no maneja el error, el java terminara el programa indicando el estado del error.

E:)e,)+ones )ont(o-adas
Heredan de la clase )xcep,ion.
Estas deben ser capturadas y manejadas en algun lugar de la aplicacin.
Las excepciones creadas por el programador seran heredadas de la clase )xcep,ion.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 102
Metodo9
Manejo de e<cepciones
Metodo:
Metodo5
Metodo;
E<cepcion
Metodo9
Manejo de errores
Metodo:
Metodo5
Metodo;
digo de error
3*ro=a%le
Error
"untimeE<ception
E<ception
Errores
)rrecupera%les
E<cepciones
ontroladas
E<cepciones
no ontroladas
#run6time$
Fundamentos de Java Julio 2008

E!'!?! Iue se ,uede <a)e( )on una E:)e,)+8nA

E:)e,)+ones )ont(o-adas
Se puede:
- Capturar la excepcin y manipularla
- Pasar la excepcin al mtodo invocador.
- Capturar la excepcin y lanzar una excepcin diferente.

E:)e,)+ones no )ont(o-adas
No necesitan ser controladas en el cdigo.
El JVM terminara el programa cuando las encuentra.
Si no desea que el programa termine tendr que manejarlas.

-.2. E:CEPCIONES CON JAVA

E!2!'! Como )a,tu(a( 5 mane1a( una e:)e,)+8n

- Encierre el cdigo del mtodo en un bloque
try
- Maneje cada exception en un bloque catch.
- Cualquier proceso final realcelo en un
bloque finally. Este bloque siempre se
ejecutara, ocurra o no una excepcin.




,r1 L
'' c-digo del mW,odo
N
ca,ch 7excep,ion!9 L
'' manejar la excepci-n!
N
ca,ch 7excep,ion(9 L
'' manejar la excepci-n(
N
...
finall1 L
'' cual0uier o,ro proceso final
N


La documentacin del java indicara que excepciones lanza los mtodos del java.

Clase : java.io.`ile:npu,6,ream
%W,odo: pu+lic `ile:npu,6,ream76,ring name9
,hrows `ile8o,`ound)xcep,ion
%W,odo: pu+lic in, read79 ,hrows :O)xcep,ion

http://java.sun.com/j2se/1.4.2/docs/api/java/io/FilenputStream.html


E!2!2! Ca,tu(ando una e:)e,)+8n!

Este ejemplo convierte una cadena en un entero

in, can,idad@
6,ring cadena E M5M@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 103
Fundamentos de Java Julio 2008
,r1 L
can,idad E :n,eger.parse:n,7cadena9@
N
ca,ch 7 8um+er`orma,)xcep,ion e9 L
61s,em.err.prin,ln7cadena T M no es un en,eroM9@
N

Laboratorio:
Pruebe este ejemplo en un programa Ces,)xcep,ion.java. Cambie la cadena por "cinco", "1.1", "2f".
E!2!7! Ca,tu(ando mJ-t+,-es e:)e,)+ones

Este ejemplo convierte una cadena en un entero y realiza una division.

pu+lic class Ces,%ul,i)xcep,ion L

pu+lic s,a,ic void main 76,ringIJ args9 L

in, can,idadE "@
in, divisor E "@
6,ring cadena E M5M@
,r1 L
can,idad E :n,eger.parse:n,7cadena9@
61s,em.ou,.prin,ln7can,idad9@
in, resul,ado E can,idad ' divisor@
61s,em.ou,.prin,ln7resul,ado9@
N
ca,ch 7 8um+er`orma,)xcep,ion e9 L
61s,em.err.prin,ln7cadena T M no es un en,eroM9@
N
ca,ch 7 Ari,hme,ic)xcep,ion e9 L
61s,em.err.prin,ln7M)rror en MTcan,idadTM'MTdivisor9@
N
N
N

Laboratorio:
Pruebe este ejemplo en un programa Ces,%ul,i)xcep,ion.java. Cambie la cadena por "cinco",
"1.1", "5" y divisor cambie por 0, 1, 500

E!2!;! E1e)u)+8n de- .-o/ue 4+na--5
El bloque finally siempre se ejecuta dependiendo como se termina el bloque try.
- Hasta terminar la ultima sentencia del bloque try.
- Debido a sentencias return o break en el bloque try.
- Debido a una excepcin.

pu+lic class Ces,`inall1 L

pu+lic s,a,ic void main 76,ringIJ args9 L

in, can,idadE "@
in, divisor E "@
6,ring cadena E M5M@
,r1 L
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 104
Fundamentos de Java Julio 2008
if 7cadena.e0uals7M5M99
re,urn@
can,idad E :n,eger.parse:n,7cadena9@
61s,em.ou,.prin,ln7can,idad9@
in, resul,ado E can,idad ' divisor@
61s,em.ou,.prin,ln7resul,ado9@
N
ca,ch 7 8um+er`orma,)xcep,ion e9 L
61s,em.err.prin,ln7cadena T M no es un en,eroM9@
N
ca,ch 7 Ari,hme,ic)xcep,ion e9 L
61s,em.err.prin,ln7M)rror en MTcan,idadTM'MTdivisor9@
N
finall1 L
61s,em.err.prin,ln7M6e ,ra+ajo con MTcadenaTM 1
MTdivisor9@
N
N
N

Laboratorio:
Pruebe este ejemplo, cambie la cadena por "cinco", "1.1", "5" y divisor cambie por 0, 1, 500

E!2!?! Como ,asa( -a e:)e,)+8n a- mBtodo +nvo)ado!

Para pasar el mtodo al invocador, se declara con la declaracin ,hrows.
La excepcin se propaga al mtodo que lo invoco.
En el ejemplo, las excepciones de los mtodos se manejan en el mtodo invocador.

pu+lic void me,odo:nvocador79 L
,r1 L
mi%e,odo79@
ge,>esul,ado79@
N
ca,ch L
N
finall1 L
N
N
pu+lic in, mi%e,odo79 ,hrows )xcep,ion L
'' c-digo 0ue podria lan3ar la )xcep,ion
N
pu+lic in, ge,>esul,ado79 ,hrows 8um+er`orma,)xcep,ion L
'' c-digo 0ue podria lan3ar la excep,ion 8um+er`orma,)xcep,ion
N
Ces,Chrows.java
pu+lic class Ces,Chrows L

pu+lic s,a,ic void main 76,ringIJ args9 L

6,ring cadena E Ma+cdeM@
in, posicion E 6@
char le,ra E R R@
,r1 L
le,ra E ge,<e,ra7cadena/posicion9@
61s,em.ou,.prin,ln7le,ra 9@
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 105
Fundamentos de Java Julio 2008
N
ca,ch 7:ndexOu,OfFounds)xcep,ion e9 L
61s,em.err.prin,ln7M)rror en MTcadenaTM MTposicion9@
N
N
pu+lic s,a,ic char ge,<e,ra76,ring cadena/ in, posicion9
,hrows :ndexOu,OfFounds)xcep,ion
L
char c E cadena.charA,7posicion9@
re,urn c@
N
N

Laboratorio. Cambie posicin 6 por 1, 0, 1

E!2!C! Como -anOa( una e:)e,)+8n
Para lanzar una excepcin use las declaraciones ,hrows y ,hrow
Puede crear excepciones para manejar posibles problemas en el cdigo.

pu+lic 6,ring ge,Qalor7in, indice9 ,hrows :ndexOu,OfFounds)xcep,ion L
if 7indice = " YY indice ? !""9 L
,hrow :ndexOu,OfFounds)xcep,ion79@
N
N

E!2!D! Como )(ea( una e:)e,)+8n
Para crear su propia excepcin tiene que heredarla de la clase Exception.
Puede ser usado en caso quiera tratar cada problema en el cdigo en forma diferente.
Por ejemplo el manejo del archivo1 puede tratarlo con una excepcin1. El manejo de un archivo2 puede
tratarlo con una excepcion2. Cada archivo tendria su propia excepcin.

;ser`ile)xcep,ion.java
pu+lic class ;ser`ile)xcep,ion ex,ends )xcep,ion L
pu+lic ;ser`ile)xcep,ion 76,ring mensaje9 L
super7mensaje9@
N
N
E!2!E! Como )a,tu(a( una e:)e,)+8n 5 -anOa( ot(a d+4e(ente!
En el ejemplo si ocurre un problema de O (entrada/salida) se captura la excepcin y se lanza una
excepcin propia.

pu+lic void >ead;ser`ile ,hrows ;ser`ile)xcep,ion L
,r1 L
'' c-digo 0ue manipula un archivo
N
ca,ch 7:O)xcep,ion e9 L
,hrow new ;ser`ile)xcep,ion7e.,o6,ring799@
N
N

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 106
Fundamentos de Java Julio 2008
-.3. LABORATORIO
Ensaye este ejemplo

pu+lic class Cerrado)xcep,ion ex,ends )xcep,ion L
pu+lic Cerrado)xcep,ion 79 LN
pu+lic Cerrado)xcep,ion 76,ring msg9 L
super7msg9@
N
N

pu+lic class Ces,Cerrado)xcep,ion L

pu+lic s,a,ic void main76,ringIJ args9 L
,r1 L
a+rir<a&uer,a79@
N ca,ch7Cerrado)xcep,ion e9 L
'' prin,6,ackCrace mues,ra la ,ra3a de la excepcion.
e.prin,6,ackCrace761s,em.err9@
N
,r1 L
a+rir<aQen,ana79@
N ca,ch7Cerrado)xcep,ion e9 L
'' 61s,em.err es el s,ream de salida de errores
'' similar a 61s,em.ou,.
e.prin,6,ackCrace761s,em.err9@
N
N

pu+lic s,a,ic void a+rir<a&uer,a79 ,hrows Cerrado)xcep,ion L
61s,em.ou,.prin,ln7Ma+rir<a&uer,a79] ,iene candadoXM9@
,hrow new Cerrado)xcep,ion 7MOriginado en a+rir<a&uer,a79M9@
N

pu+lic s,a,ic void a+rir<aQen,ana79 ,hrows Cerrado)xcep,ion L
61s,em.ou,.prin,ln7Ma+rir<aQen,ana79] )s,a con cerrojoXM9@
,hrow new Cerrado)xcep,ion 7MOriginado en a+rir<aQen,ana79M9@
N

N

-.4. EJERCICIO
Agregue los siguientes mtodos al programa Ces,)xcepcionCeclado.java. Cree excepciones para
su control.

'' mW,odo 0ue lea solo un car*c,er.
pu+lic s,a,ic char readChar76,ring e,i0ue,a9...

'' mW,odo 0ue lea un decimal con en,eros 1 decimales.
pu+lic s,a,ic floa, read8um+er76,ring e,i0ue,a/ in, en,eros/ in, decimales9...

'' mW,odo 0ue lea una direcci-n :& xxx.xxx.xxx.xxx
'' " =E xxx =E (55
pu+lic s,a,ic 6,ring read:&76,ring e,i0ue,a9...

'' mW,odo 0ue lea un codigo valido de alumno ;8:
pu+lic s,a,ic 6,ring readCodigo;8:76,ring e,i0ue,a9...
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 107
Fundamentos de Java Julio 2008

'' mW,odo 0ue lea una fecha valida
'' forma,o dd'mm'1111
pu+lic s,a,ic 6,ring read4a,e76,ring e,i0ue,a9

Ces,)xcepcionCeclado.java
impor, java.io.K@
pu+lic class Ces,)xcepcionCeclado L

pu+lic s,a,ic void main 76,ringIJ args9 L
,r1 L
6,ring nom+re E read6,ring7M:ngrese un nom+re: M9@
61s,em.ou,.prin,ln7M6u longi,ud es MTnom+re.leng,h799@

in, en,ero E read:n,7M:ngrese un en,ero: M9@
61s,em.ou,.prin,ln7M)l cuadrado es MTen,eroKen,ero9@
N
ca,ch 78um+er`orma,)xcep,ion e9 L
61s,em.ou,.prin,ln7M)xcepcion numericaM9@
e.prin,6,ackCrace761s,em.err9@
N
ca,ch 7Ari,hme,ic)xcep,ion e9 L
61s,em.ou,.prin,ln7M)xcepcion ar,ime,icaM9@
e.prin,6,ackCrace761s,em.err9@
N
ca,ch 7:ndexOu,OfFounds)xcep,ion e9 L
61s,em.ou,.prin,ln7M)xcepcion de arreglosM9@
e.prin,6,ackCrace761s,em.err9@
N
ca,ch 7)xcep,ion e9 L
61s,em.ou,.prin,ln7M)xcepcionM9@
e.prin,6,ackCrace761s,em.err9@
N

N

pu+lic s,a,ic 6,ring read6,ring76,ring e,i0ue,a9
,hrows )xcep,ion
L
61s,em.ou,.prin,7e,i0ue,a9@
6,ring cadenaEMM@
Fuffered>eader in E new Fuffered>eader7new
:npu,6,ream>eader761s,em.in99@
cadena E in.read<ine79@
re,urn cadena@
N

pu+lic s,a,ic in, read:n,76,ring e,i0ue,a9
,hrows )xcep,ion
L
in, en,ero E "@
6,ring cadena E read6,ring7e,i0ue,a9@
:n,eger en,ero:n,eger E new :n,eger7 cadena.,rim799@
en,ero E en,ero:n,eger.in,Qalue79@
re,urn en,ero@
N

N

Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 108
Fundamentos de Java Julio 2008
Tema $. A%&'(a(')*e+ ()* Ba+e+ ,e ,a-)+ e* Ja.a

Resumen
Se estudiara conceptos de cone.i"n a bases de datos mediante dierentes m&todos de cone.i"n y luego
poder crear aplicaciones /ue usen una o ms bases de datos a la ve#!

/.1. C%nect$3$.a. JDBC
F!'!'! De4+n+)+ones +n*)+a-es
JDBC es para Java lo que ODBC es para Windows.
Windows en general no sabe nada acerca de bases de datos, pero define el estndar
ODBC consistente en un conjunto de priitivas que cualquier driver o fuente ODBC debe ser
capa! de entender " anipular.
#os prograadores que a su ve! deseen escribir prograas para anejar bases de datos
gen$ricas en Windows utili!an las llaadas ODBC.
Con JDBC ocurre lo iso% JDBC es una especificaci&n de un conjunto de clases " $todos
de operaci&n que periten a cualquier prograa Java acceder a sisteas de bases de datos
de fora 'oog$nea.
(&lo que JDBC no se liita al Windows sino que se puede utili!ar en cualquier sistea
operativo o platafora.
#&gicaente, al igual que ODBC, la aplicaci&n de Java debe tener acceso a un driver JDBC
adecuado. )ste driver es el que ipleenta la funcionalidad de todas las clases de acceso a
datos " proporciona la counicaci&n entre el *+, JDBC " la base de datos real.


Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 109
Fundamentos de Java Julio 2008
-oda la conectividad de bases de datos de Java se basa en sentencias (.#, por lo que se
'ace iprescindible un conociiento adecuado de (.# para reali!ar cualquier clase de
operaci&n de bases de datos.
Casi todos los entornos de desarrollo Java ofrecen coponentes visuales que proporcionan
una funcionalidad suficienteente potente sin necesidad de que sea necesario utili!ar (.#,
aunque para usar directaente el JD/ se 'aga iprescindible.
#a especificaci&n JDBC requiere que cualquier driver JDBC sea copatible con al enos el
nivel 0de entrada1 de *2(, (.# 34 5ANSI SQL 92 Entry Level6.
F!'!2! A))eso JD9C a .ase de datos
)l *+, JDBC soporta dos odelos diferentes de acceso a Bases de Datos, los odelos de dos
" tres capas.
Modelo de dos capas
)ste odelo se basa en que la cone7i&n entre la aplicaci&n Java o el applet que se ejecuta
en el navegador, se conectan directaente a la base de datos.
)sto significa que el driver JDBC espec8fico para conectarse con la base de datos, debe
residir en el sistea local. #a base de datos puede estar en cualquier otra quina " se
accede a ella ediante la red. )sta es la configuraci&n de t8pica Cliente/Servidor% el
prograa cliente env8a instrucciones (.# a la base de datos, $sta las procesa " env8a los
resultados de vuelta a la aplicaci&n.
Modelo de tres capas
)n este odelo de acceso a las bases de datos, las instrucciones son enviadas a una capa
interedia entre Cliente " (ervidor, que es la que se encarga de enviar las sentencias (.# a
la base de datos " recoger el resultado desde la base de datos. )n este caso el usuario no
tiene contacto directo, ni a trav$s de la red, con la quina donde reside la base de datos.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 110
Fundamentos de Java Julio 2008
)ste odelo presenta la ventaja de que el nivel interedio antiene en todo oento el
control del tipo de operaciones que se reali!an contra la base de datos, " ades, est la
ventaja adicional de que los drivers JDBC no tienen que residir en la quina cliente, lo cual
libera al usuario de la instalaci&n de cualquier tipo de driver.
F!'!7! T+,os de d(+ve(s
9n driver es una librer8a .jar por lo general, la que engloba clases totalente escritas en
Java las que periten conectarse a una base de datos " trabajar con ellas.
9n driver JDBC puede pertenecer a una de cuatro categor8as diferentes en cuanto a la fora
de operar.
1. Puente JDBC-ODBC
2. Java Binario
3. Java Protocolo Nativo
4. Java Protocolo ndependiente

Todos estos drivers deben usarse referencindose la librera .jar en el proyecto Java que los utilice.
/.2. P!ente 1. JDBC;ODBC
:sta priera categor8a de drivers es la utili!ada por (un inicialente para populari!ar JDBC
" consiste en aprovec'ar todo lo e7istente, estableciendo un puente entre JDBC " ODBC.
)ste driver convierte todas las llaadas JDBC a llaadas ODBC " reali!a la conversi&n
correspondiente de los resultados.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 111
Fundamentos de Java Julio 2008
F!2!' #enta1as
Java dispone de acceso inediato a todas las fuentes posibles de bases de datos
2o 'a" que 'acer ninguna configuraci&n adicional aparte de la "a e7istente.
F!2!2 Desventa1as
#a a"or8a de los drivers ODBC a su ve! convierten sus llaadas a llaadas a una
librer8a nativa del fabricante DB;(
o #a lentitud del driver JDBC<ODBC puede ser e7asperante, al llevar dos capas
adicionales que no a=aden funcionalidad alguna
)l puente JDBC<ODBC requiere una instalaci&n ODBC "a e7istente " configurada.
#o anterior iplica que para distribuir con seguridad una aplicaci&n Java que use
JDBC 'abr8a que liitarse en prier lugar a entornos Windows 5donde est definido
ODBC6
(e debe proporcionar los drivers ODBC adecuados " configurarlos correctaente.
F!2!7 Resumen
)sto 'ace que este tipo de drivers est$ descartado en el caso de aplicaciones coerciales, e
incluso en cualquier otro desarrollo, debe ser considerado coo una soluci&n transitoria,
porque el desarrollo de drivers totalente en Java 'ar innecesario el uso de estos puentes.

/.3. Ja3a B$na&$%
)ste driver salta la capa ODBC " usa directaente la librer8a nativa del fabricante del gestor
de base de datos 5coo pudiera ser DB-Library para ;icrosoft (.# (erver o CT-Lib para
("base (.# (erver6.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 112
Fundamentos de Java Julio 2008
)ste driver es un driver 100% ava pero a>n as8 necesita la e7istencia de un c&digo binario
5la librer8a DB;(6 en la quina del cliente, con las liitaciones " probleas que esto
iplica.
F!7!' #enta1as
,gualente, dependiendo de la fora en que est$ prograado el driver, puede no
necesitar ninguna clase de configuraci&n por parte del usuario
2o 'a" que 'acer ninguna configuraci&n adicional aparte de la "a e7istente.
F!7!2 Desventa1as
)l cliente est ligado a un servidor DB;( concreto.
(e debe proporcionar los drivers ODBC adecuados " configurarlos correctaente.
F!7!7 Resumen
)sto 'ace que este tipo de drivers se use apliaente en casos en que se va a trabajar con
un >nico gestor base de datos, sin ebargo en casos de tener que cabiar de gestor 'abr
que conseguir el driver de dic'o gestor " se resuelve la dificultad de una anera
relativaente sencilla.

/.4. Ja3a P&%t%c%"% $n.epen.$ente
)sta es la opci&n s fle7ible, se trata de un driver 100% ava / !roto"olo inde#endiente,
que requiere la presencia de un interediario en el servidor.
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 113
Fundamentos de Java Julio 2008
)n este caso, el driver JDBC 'ace las peticiones de datos al interediario en un protocolo de
red independiente del servidor DB;(.
)l interediario a su ve!, que est ubicado en el lado del servidor, convierte las peticiones
JDBC en peticiones nativas del sistea DB;(.
F!;!' #enta1as
)l prograa que se ejecuta en el cliente
#os drivers son 100% ava
,ndependencia respecto al sistea de bases de datos que se encuentra en el
servidor.
F!;!2 Desventa1as
(er8a el costo del servidor de base de datos " no del iso dirver.
F!;!7 Resumen
8i una empresa distri%uye una aplicacin Java para que sus usuarios puedan
acceder a su servidor M8 8>7 8erver y posteriormente decide cam%iar el servidor
por ?racle, My8ql, Post@res o DA:, no necesita volver a distri%uir la aplicacin, sino
que Bnicamente de%e recon,gurar la aplicacin residente en el servidor que se
encarga de trans&ormar las peticiones de red en peticiones nativas.
/.5. L$ta .e .&$3e& 5 .e ca.ena .e c%nex$<n
BM DB2
jdbc:db2://<HOST>:<PORT>/<DB>
COM.ibm.db2.jdbc.app.DB2Driver
JDBC-ODBC Bridge (Access, FoxPro, Excel, Paradox, etc.)
jdbc:odbc:<DB>
sun.jdbc.odbc.JdbcOdbcDriver
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 114
Fundamentos de Java Julio 2008
Microsoft SQL Server
jdbc:weblogic:mssqlserver4:<DB>@<HOST>:<PORT>
weblogic.jdbc.mssqlserver4.Driver
Oracle Thin
jdbc:oracle:thin:@<HOST>:<PORT>:<SD>
oracle.jdbc.driver.OracleDriver
PointBase Embedded Server
jdbc:pointbase://embedded[:<PORT>]/<DB>
com.pointbase.jdbc.jdbcUniversalDriver
Cloudscape
jdbc:cloudscape:<DB>
COM.cloudscape.core.JDBCDriver
Cloudscape RM
jdbc:rmi://<HOST>:<PORT>/jdbc:cloudscape:<DB>
RmiJdbc.RJDriver
Firebird (JCA/JDBC Driver)
jdbc:firebirdsql:[//<HOST>[:<PORT>]/]<DB>
org.firebirdsql.jdbc.FBDriver
DS Server
jdbc:ids://<HOST>:<PORT>/conn?dsn='<ODBC_DSN_NAME>'
ids.sql.DSDriver
nformix Dynamic Server
jdbc:informix-sqli://<HOST>:<PORT>/<DB>:NFORMXSERVER=<SERVER_NAME>
com.informix.jdbc.fxDriver
nstantDB (v3.13 and earlier)
jdbc:idb:<DB>
jdbc.idbDriver
nstantDB (v3.14 and later)
jdbc:idb:<DB>
org.enhydra.instantdb.jdbc.idbDriver
nterbase (nterClient Driver)
jdbc:interbase://<HOST>/<DB>
interbase.interclient.Driver
Hypersonic SQL (v1.2 and earlier)
jdbc:HypersonicSQL:<DB>
hSql.hDriver
Hypersonic SQL (v1.3 and later)
jdbc:HypersonicSQL:<DB>
org.hsql.jdbcDriver
Microsoft SQL Server (JTurbo Driver)
jdbc:JTurbo://<HOST>:<PORT>/<DB>
com.ashna.jturbo.driver.Driver
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 115
Fundamentos de Java Julio 2008
Microsoft SQL Server (Sprinta Driver)
jdbc:inetdae:<HOST>:<PORT>?database=<DB>
com.inet.tds.TdsDriver
Microsoft SQL Server 2000 (Microsoft Driver)
jdbc:microsoft:sqlserver://<HOST>:<PORT>[;DatabaseName=<DB>]
com.microsoft.jdbc.sqlserver.SQLServerDriver
MySQL (MM.MySQL Driver)
jdbc:mysql://<HOST>:<PORT>/<DB>
org.gjt.mm.mysql.Driver
Oracle OC 8i
jdbc:oracle:oci8:@<SD>
oracle.jdbc.driver.OracleDriver
Oracle OC 9i
jdbc:oracle:oci:@<SD>
oracle.jdbc.driver.OracleDriver
PostgreSQL (v6.5 and earlier)
jdbc:postgresql://<HOST>:<PORT>/<DB>
postgresql.Driver
PostgreSQL (v7.0 and later)
jdbc:postgresql://<HOST>:<PORT>/<DB>
org.postgresql.Driver
Sybase (jConnect 4.2 and earlier)
jdbc:sybase:Tds:<HOST>:<PORT>
com.sybase.jdbc.SybDriver
Sybase (jConnect 5.2)
jdbc:sybase:Tds:<HOST>:<PORT>
com.sybase.jdbc2.jdbc.SybDriver
/.*. E(e#p"% .e !na c%n!"ta enc$""a
E<isten una serie de operaciones y procesos que son muy comunes contra una ta%la
en una %ase de datos en disco, la m's comBn es desplegar todos los registros de la
ta%la que est'n en la %ase de datos, a este proceso le llamaremos 8E7E)?C,
consulta o despliegue.
omo se indic anteriormente la comunicacin con la %ase de datos se tendr'n que
dar usando el lenguaje especialiDado de %ases de datos llamado 8>7 #structured
query language$, la instruccin 8>7 que se usa para resolver este pro%lema tiene el
siguiente &ormato!
8E7E3 Elista de campos, F o (77G ."?M 3(A7(4
El procedimiento que se intenta seguir cuando se construya un programa jsp que
tenga que manipular una ta%la en disco de%er' seguir los siguientes pasos!
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 116
Fundamentos de Java Julio 2008
9.6 rear una cone<in o enlace a la %ase de datos.
:.6 (%rir la cone<in a la %ase de datos.
5.6 rear el enlace y cargarlo con la instruccin 8>7
;.6 rear el "E8+738E3 y cargarlo
H.6 argar un o%jeto ta%le de I3M7 con el "E8+738E3
J.6 Procesar el ta%le de I3M7
K.6 errar resultset, statement, driver o cone<in
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 117
Fundamentos de Java Julio 2008
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 118
Fundamentos de Java Julio 2008
Ventana de Acceso: jfrmAcceso
ise!o de la interfaz
"ersonalizacin de Objetos
J4rame jfrmAcceso
title =cces! al sistema
J+a"el jlbl#suario
teAt ;suari!
displa)edMnem!nic ;
J+a"el jlblClave
teAt Clave
displa)edMnem!nic v
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 119
1t:tUsua(+oL
basado en
JTe:tF+e-d
1,NdC-aveL
basado en
J6assNo(dF+e-d
1.tnA)e,ta(L
basado en
J9utton
1.tnCan)e-a(L
basado en
J9utton
1-.-Usua(+oL
basado en
JLa.e-
1-.-C-aveL
basado en
JLa.e-
Fundamentos de Java Julio 2008
J9eAt4ield jt$t#suario
teAt
JPassC!rd4ield jp%dClave
teAt
J2utt!n jbtnAceptar
teAt =ceptar
mnem!nic =
t!!l9ip9eAt (niciar la validaci&n
J2utt!n jbtnCancelar
teAt Cancelar
mnem!nic C
t!!l9ip9eAt Cerrar la Ventana
"lan de Eventos
Control Evento Actividades
jbtnCancelar
action"erformed Cerrar la ventana
jbtnAceptar action"erformed
G Veri?icar 3ue se ha)a in$resad! el ;suari!
G Veri?icar 3ue se ha)a in$resad! la Clave
G 2uscar la clave del usuari! usand! c!m! dat! el
usuari! in$resad!
G 0i se encuentra el usuari!
! Veri?icar 3ue la clave in$resada c!rresp!nda c!n
la clave enc!ntrada
! 0i c!rresp!nde car$ar la ventana jfrm"rincipal )
lue$! cerrar la ventana jfrmAcceso
! 0i n! c!rresp!nde la clave m!strar el mensa1e
Clave &ncorrecta
G 0i n! se encuentra el usuari! en la ta"la de usuari!
m!strar el mensa1e #suario 'o autorizado
Codificacin y "ro(ramacin de Eventos
1. (mp!rtand! li"reras antes del inici! de la clase
import 1ava.s3l.LJ II Para tra"a1ar c!n 2ases de dat!s
import 1avaA.sCin$.LJ II Para tra"a1ar c!n c!ntr!les de ventana
2. *eclarand! varia"les despu's del inici! de la clase
C!nnecti!n !C!neAi!nKnullJII!"1et! c!neAi!n
0tatement !(nstrucci!nKnullJII!"1et! instrucci!n
/esult0et !9a"laKnullJII!"1et! resultset
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 120
Fundamentos de Java Julio 2008
II0trin$ strC!neAi!nK N1d"c7micr!s!?t7s3lserver7IIl253pc1371433J*ata2ase<ameKVentasNJ
0trin$ str2aseO*at!s K 0)stem.(et"roperty(Nuser.dirN) M NIVentas.md"NJ
0trin$ strC!neAi!n K N1d"c7!d"c7*riverKPMicr!s!?t =ccess *river (L.md")QJ*2DKN M str2aseO*at!sJ
3. /ealiEand! la c!neAi&n en el m't!d! C!nstruct!r de la clase
public 1?rm=cces!() P
initC!mp!nents()JIIinicialiEar dat!s de"a1! de esta linea
try
P
II/e$istra la clase de c!neAi!n
Class.for'ame(Nc!m.micr!s!?t.1d"c.s3lserver.0D+0erver*riverN)J
!C!neAi!n K *riverMana$er.(etConnection(strC!neAi!nFNsaNFNN)J
!(nstrucci!n K !C!neAi!n.createStatement(/esult0et.9HPO0C/%++O0<0(9(VF
/esult0et.C%<C;/O;P*=9=2+)J
QII 4in de tr)
II Captura de eAcepci!nes
catc) (1ava.lan$.Class<!t4!undAcepti!n e)P
II 0i la clase a re$istrar n! eAiste
J%pti!nPane.s)o%*essa(eialo((t)isF e.(et*essa(e()F
NClase n! ;"icadaNF J%pti!nPane.//%/OM00=#)J
Q
catch (0D+Acepti!n e) P
II 0i ha !currid! al$Bn err!r de c!neAi&n c!n la "ase de dat!s
J%pti!nPane.s)o%*essa(eialo((t)isF e.(et*essa(e()F
N4all& la c!neAi&nNF J%pti!nPane.//%/OM00=#)J
QJ II 4in tr)Gcatch
Q II 4in del c!nstruct!r
4. (mplementand! l!s event!s de l!s "!t!nes jtnCancelar ) jbtnAceptar.
Para implementar el event! clic en el "!t&n jbtnCancelar de clic derech! en 'l ) lue$! eli1a
EventsF se$uid! de Actions ) ?inalmente eli1a actionPerformed. C!m! se aprecia en la
?i$ura7
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 121
Fundamentos de Java Julio 2008
+ue$! se $enera de manera aut!m@tica el event! jbtnCancelarActionPerformed.
private void j+tnCancelarAction"erformed(1ava.aCt.event.=cti!nvent evt) P
II 9%*% add )!ur handlin$ c!de here7
t)is.setVisible,false)J
Q
+a instrucci&n7
t)is.setVisible(false)J
:ace invisi"le la ventana.
5. Para implementar el event! clic en el "!t&n jbtnAceptar de clic derech! en 'l ) lue$!
eli1a EventsF se$uid! de Actions ) ?inalmente eli1a actionPerformed. C!m! en el cas!
del "!t&n anteri!r.
private void j+tnAceptarAction"erformed(1ava.aCt.event.=cti!nvent evt) P
II 9%*% add )!ur handlin$ c!de here7
0trin$ str;suari!K19At;suari!.(et-e$t()J II Capturand! usuari!
0trin$ strClaveK1PCdClave.(et-e$t()J II Capturand! clave
0trin$ strClaveO2*J II Clave a capturar de la 2ase de dat!s
try
P
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 122
Fundamentos de Java Julio 2008
0trin$ str0D+K N0+C9 Clave 4/%M ;suari!s 8:/ ;suari!KRN M
str;suari! M NRNJ
!9a"la K !(nstrucci!n.e$ecute.uery (str0D+)J
II Validand! dat! del usuari! in$resad!
if (S!9a"la.ne$t())P
// El usuario no E$iste en la tabla de usuarios
J%pti!nPane.sh!CMessa$e*ial!$(thisF
Nn! eAiste el usuari! in$resad!NF
N=tenci!nNF
J%pti!nPane.//%/OM00=#)J Q
elseP
// El usuario fue ubicado en la tabla de usuarios
strClaveO2*K!9a"la.(etStrin((1)J
if(strClave.e0uals(strClaveO2*))P
// La clave in(resada le corresponde al usuario in(resado
1?rmPrincipal !?rmKne% 1?rmPrincipal()J
!?rm.setVisible(true)J
this.setVisible(false)J
Q
elseP
// La clave in(resada no le corresponde al usuario in(resado
J%pti!nPane.sh!CMessa$e*ial!$(thisF
NClave (nc!rrectaNF
Nrr!rNF
J%pti!nPane.//%/OM00=#)J QJ
QII 4in de i?Gelse
QII 4in de tr)
catc)(0D+Acepti!n e)
PJ%pti!nPane.s)o%*essa(eialo((t)isFe.(et*essa(e()FNrr!r de c!neAi!nNF
J%pti!nPane.//%/OM00=#)J
QII?in tr)Gcatch
Q
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 123
Fundamentos de Java Julio 2008
Pas!s para usar una "ase de dat!s %racle Apress (#ratuita)
http7IICCC.!racle.c!mItechn!l!$)Ipr!ductsIdata"aseIAeIindeA.html
(r a la p@$ina inicial
=utenticarse al %racle
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 124
Fundamentos de Java Julio 2008
(r a administraci&n
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 125
Fundamentos de Java Julio 2008
n administraci&n ir a Usua(+os 9ase Datos
Crear nuev! usuari!
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 126
Fundamentos de Java Julio 2008
*ec!nectarse
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 127
Fundamentos de Java Julio 2008
V!lver a c!nectarse
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 128
Fundamentos de Java Julio 2008
Crear una ta"la del usuari! Ventas7
G *ar clic al Apl!rad!r de %"1et!s
G Crear una nueva ta"la
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 129
Fundamentos de Java Julio 2008
Crear la Clave Principal de la ta"la de usuari!s (Primar) >e))7
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 130
Fundamentos de Java Julio 2008
Crear claves a1enas (4!rein$ >e))7
<! vam!s crear nin$una
Crear /estricci!nes (C!nstraints)7
<! vam!s crear nin$una
9erminar
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 131
Fundamentos de Java Julio 2008
(ntr!ducir dat!s
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 132
Fundamentos de Java Julio 2008
(n$resa l!s dat!s
Creand! !tr! usuari!
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 133
Fundamentos de Java Julio 2008
4inaliEam!s
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 134
Fundamentos de Java Julio 2008
*escar$and! el c!nect!r Java de %racle
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 135
Fundamentos de Java Julio 2008
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 136
Fundamentos de Java Julio 2008
*escar$ar el *river apr!piad!
Clic a =ccept
;tiliEand! el *river
G Crear una carpeta libs
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 137
Fundamentos de Java Julio 2008
G
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 138
Fundamentos de Java Julio 2008
(mp!rtar el c!ntr!lad!r de %racle al inici! del pr!$rama
imp!rt 1ava.s3l.LJ II Para tra"a1ar c!n 2ases de dat!s
imp!rt 1avaA.sCin$.LJ II Para tra"a1ar c!n c!ntr!les de ventana
imp!rt !racle.1d"c.%racle*riverJ
*e?iniend! la cadena de c!neAi&n
0trin$ strC!neAi!n K N1d"c7!racle7thin7T15.15.15.12-715227UNJ
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 139
Fundamentos de Java Julio 2008
/e$istrand! la clase para c!nectarse c!n el %racle
Class.?!r<ame(N!racle.1d"c.driver.%racle*riverN)J
C!nect@nd!se a la "ase de dat!s %racle
II!C!neAi!n K *riverMana$er.$etC!nnecti!n(strC!neAi!n)J
!C!neAi!n K *riverMana$er.$etC!nnecti!n(strC!neAi!nF
NVentasNF N123N)J
C&di$! c!mplet! del "!t&n =ceptar
neC Pelicula()J
Autor !n". #n"el Chata $. Revisado por Jos Canchcucaja V. 140

Você também pode gostar