Anda di halaman 1dari 22

mdttr4rc

Javar ha revolucionado el desarrollo del software mediante el cdigo orientado objetos independiente de la
plataforma, con NU intensivo de multimedlu, para uplicnc!oncs busudt en Intemct, intrauets o emanrts. Estu
qdnm ediciri del libro de texto sobre Java ms utilizado a nivel mundial, explica cmo utilizar las exlranrdinu,
rias henamientas de este software.
La obm contiene una vasta coleccin de ejemplos, ejercicios y proyectos que prop01cionan la oportunidiul de
resolver problemas reales. El contenido se concentm en los principios de In buena ingenierfu de sotlwarc, haciendo
hincapi en la claridad de los programas. Todos lbs ejemplos de cdigo lum sido probados.
Entre los temas clave que se tratan aqu, se encuentan:
Aplicrciones/Applcts
GUI Swing/Manejo de eventos
Clases/Objetosllnterfaces
POOIHerenci:fpolimorfismo
Grficos/Java 2D'" IImagenes/Animacinl Audio
Excepciones/Subproces;tmicnto mltiple
DOO/UML/Patroncs de diseo
Cmo programar 6java, quinta ediciu incluye extensas caractersticas pedngeicas:
Cientos de prognumL en cdigo activo (Ltve-CooE'"l con capturas de pantallas que muc::traulos resultados
obtenidos
Unn gran cantidud de recursos en Internet y Web pura impulsar al lectnr u que investigue mt: sobre los Id|
de su inters
cientps de tips, prcticas recomendada y precauciones, Todos identifcados con su r,;spectivn iconn:
J||ct|c\ Oh.111n'dune\' Tip; Je Tiude Ob.r1nracilill fips de pntthu l|rn
{|r'|||1 dt '1}'0l|||4 i|t' |r1J||r1|J cr|l|||c10 .tictlpal'ieuda )1:|c|^1 rc|l1rJl
} ' __ __ _
En el sitio Wcb .pearsoneducacicn.net/deitel cnconlrar< los ejemplos de cdigo del libro
C informacin para mncstros, estudiamcs y profesionnles.
Sin d11du, ste es el libro rni'1 completo para aprender Java.
El CD incluye:
Archivos de texto en espmiui no incluidos en el libro
Todo el cdigo fuente utilizado en los ejercicios del libro
Programas para ejecutar Java, como JavaTM 2 PlatfoiTO Software
Development Kit y Apache Tomcat v.4.1.12, y mucho ms
@
Vstenos en:
www.peursoneducuclon.net
ISBN 970-26-0518-0
90000
..
| ucuw. j
r\wu

r
_ 0 0|!fN0
.

0C'
SE!VE'I',
]!r'
a+._ ,

000
con _

y!oS
PXJ80Ni50f0I5fS0
;08L,ikV

iJ,]i
i
U
l

LTALulci08
L0H0IR0CRAR!
JAVA
LNTAEDCl0N
L0H0IR0CRARL
JAVA
H\cyB. Dc|cl

e'
c|cl& Assoca|cs,uc.
IaulJ.Dc|cl
c|cl& Assoca|cs,uc.
TRAUCCIN
AlfonSo Vida! Romero Elzondo
Ingeniero en Sistemas Electrnicas
Instituto Tecnolgica y de Estudias Superiores de Monterrey
Campus Monterrey
REVISIN TCNICA
M. en C. Gabriela Azucena Campos Garca
Profesora de tiempo completo
Departamento de Sistemas de Infannacin
Divisin de Profesional y Graduados
Insti/llto Tecnolgico y de Estudios Superiores de Monterrey
Campus Estado de Mxico
M. en C. Sergio Fuenlabrada Velzquez
Ing. Mario Alberto Sesma Martnez
M.C.I. Edna Martba Miranda Chvez
Profesores investigadores
Academia de complllacin
Unidad Profesional Interisciplinaria de Ingeniera y
Ciencias Sociales y Administrativas
Instituto Politcnica Nacional


M. en C. Jess Muoz Bauza
Profesor investigador
Departame/llo de Computacin
Divisin de Profesional y Graduados
Instituto Tecnolgico y de Estudios Superiores
de Monterrey
Campus Ciudad de Mixico

Mxico Argentna Brasil Colombia Costa Rica Chile Ecuador
Espaa Guatemala Panam Per Puerto Rico Uruguay Venezuela
_Dalos dc catalogacin bibliogrficu
DEITEL, HAVEY M. y DEIEL, PAU J
Quinta edicin
Cmo programar tJava
PEARSON EDUCACIN, Mxico, 2004
ISBN: 970-26-0518-0
ron: Univcrsilnrios
Fomtuto: 20 X 25.5 cn1 Pginas: 1268
Autol'ized translution lrom te English language edition, entitled Java Haw la Pmgram, Fil Ed1o11, by Horvey M. Delc/ uml'aul J
Deite/, puhlished by Penrson Education. lnc., publishing us PRENTICE HALL, INC .. Copyright 2003. AH rights resercd.
ISBN 0-13-101621-0
Traduccin autorizada de la edicin en idioma ingls, titulada Ja\a 0Bl0 Pmgrm, Fitl Edtiv11, por Harvc M. Deiel Paul J Deie/,
publicada por Pearson Education, Inc., ublicada como PRENT1CE HALL iNC., Copyright 2003. Todos los derechos reservados.
Esta edicin en espaol es la nica autorizada.
Edicin en 05[0B0l'
Editor:
Editor de desarrollo:
Supervisor de produccin:
Edicin en lngl.:
Guillermo Trujano Mendoza
e-mail: guillermo.trujano@peursoned.com
Miguel B. Gutirez Hemnde7
Enrique Treja Herndez
Vice President und Editorinl Director, ECS: Marcia J, Hurtan
Acquisitions Editor. Petra J. Recter
Assistnnt Editor. Sarai Par/r
Project Manager: Jermier Cuppello
Vice Presiuont Ul\11 Director of Production and Manufacturing, ESM: David \V Riccnrd
Exccutive Mmaging Editor: Vnce O'Brien
tanaging Editor: Tom Mnm/reck
Productlon Hditor: Jo/111 1 Lave//
Director of Creailve Servlces: Pan/ Belfanli
Creutive Director: Cara/e \mon
Chuptur Opener and Cover Designer. Tomara Newnam, Dr. Harvcy Deite/
Interior De,ign Assistance: Geofrey Cassar
Manufacturiug Mnnager: Trudy Pciotti
Manufacruring Buyer: Lisa McDowell
Marketing Manager. Pamela Siafer
Marketing Assistant: Barrie Ren/wld
QUINTA EDICIN, 2004
P.R. 2004 p0r Pearson Educacin de Mxico, S.A. de C. V.
Atlacomulco 500-So. piso
Col. Industrial Atoto
53519, Nnucalpan de Jurez, Edo. de Mxico
e-mnil: editorial.universidades@pearsoned.com
Cmara Nacional de la Industia Editoral Mexicana.
Reg. mm. 1031.
Prentice Hall es una marca registrada de Pearson Educaci<in de Mxico, S.A. de C.V.
Reservados todos los derechos. Ni la totalidad ni parte de esta publicacin pueden reproducirse, registrarse 0 transmitirse, por un sistema
de recuperacin de informacin, en ninguna forma ni por ningn medio, sea electrnico, mectinico, fotoqumico, magntico Uelcctmpti
co, por fotocopia, grabacin o cualquier otro, sin permiso previo por escrito del editor.
El prstumo, ulquilcr o cualquier otra forma de cesin de uso de este ejemplar requerir tambin !8 autorizacin del editor de SI\H repre
Mentnntt!H.

ISBN 970-26-05I8-0
Impreso en Mxico. Prillled in M/co.
12345 67 8 90-05 0403
i

PARA:
Terell Hull y James Huddleston:
Por constante dedicacin a lu excelencia en la enseanza
y ul escribir sobre Java y la tecnologa de objetos.
Por sus extruordinnrias contribuciones como revisores
y por insistir en que "lo hiciramos bien".
Gracias por ser nuestros mentores, colegas y amigos.
Es un privilegio trabajar con profesionales consumados
en el software.
Harve y Paul Deitel
Contenido
Prefacio xvii
Introduccin a las computadoras, Internet /Web
1.1 Introduccin 2
1.2 Qu es una computudora? 4
1.3 Organizacin de las computadoras 4
1.4 Evolucin de los sistemas operativos 5
1.5 Computacin pcrsonul, distribuida y cliente/servidor 6
1.6 Lenguajes mquiJm, lenguajes ensambladores y lenguajes de alto nivel 6
1.7 Historia de C++ 7
1.8 Historia de Java 8
1.9 Bibliotecas de clases de Java 8
1.10 FORTRAN, COBOL, Pascal y Adn 9
1.11 BASIC, Visual Basic, Visual C+t, C/ y .NET 10
1.12 Interet y Wor!d Widc Web 11
1.13 Fundamentos de un entoro tpico en Java 11
1.14 Generalidades nccrca de Java y este libro 14
1.15 Acerca de los objetos: Introduccin u la tecnologa de objetos
y el Lenguaje Unificado de Modelado 16
1.16 Descubrimiento de patrones de diseo: Introduccin 19
Z Introduccin a las aplicaciones en Java 27
2.1 Introduccin 28
2.2 Su primer programa en Java: Imprimir una lfnca de texto 28
2.3 Modifcacin de nuestro prmer programa en Java 34
2.4 Cmo mostrar texto en un cuadro de dilogo 36
2.5 Otra aplicacin en Java: Suma de enteros 40
2.6 Conceptos acerca de la memoria 45
2.7 Aritmtica 46
2.8 Toma de decisiones: Operadores de iguuldnd y relacionales 49
2.9 (Ejemplo prctico opcional) Acerca de los objetos: Cmo examinar el enunciado
de un problema 55
vlli
Contenido Contenido
lx
J Introduccin a los applets de Java
71
6.8 Ejemplo: Un juego de azar
203
3.1 Introduccin
72
6.9 Alcance de las declaraciones
211
3.2 Applets de muestra incluidos en el Kit de desarrollo de software para Java 2
72
6.!0 Mtodos de la clase JApplet
214
3.3 Applet simple en Java: Cmo dibujar una cadena
78
6.11 Sobrecarga de mtodos
215
3.4 Cmo dibujar cadena y lneas
85
6,12 Recursividad
217
3.5 Cmo agregar nmeros de punto flotante
87
6,13
Ejemplo del uso de la recursividad: La seria de Fibonacci
220
3.6 Recursos en Internet y Web relacionados con los appleLI de Java
93
6.14 Comparacin entre recursividad e iteracin
225
3.7 (Ejemplo prctico opcional) Acerca de los objetos: Identifcacin de las clases en d enunciado 6.15 (Ejemplo prctco opcional) Acerca de los objetos:
de un problema
94
Cmo identifcar las operaciones de las clases
226
Arreglos
245
4 Instrucciones de control: Parte 1
103
7.1 Introduccin
246
4.1 Introduccin
104
7.2 Areglos
246
4.2 Algortmos
104
7.3 Declaracin y creacin de arreglos
247
4.3 Scudocdigo
105
7.4 Ejemplos acerca del uso de areglos
248
4.4 Estructuras de control
105
7.5 Referencias y parmetros de referencia
258
4.5 Estmctura de seleccin if simple
108
7.6 Cmo pasar arreglos u los mtodos
258
4.6 Estt1Jctura de seleccin if 4 . 4 el se
109
7.7 Ordenamiento de arreglos
261
4.7 Estmctura de repeticin while
113
7.8
Bsqueda en arreglos: Bsqueda lineal y bsqueda binaria
263
4.8 Cmo formular algoritmos: Ejemplo prctico l (repeticin contolada por un contador) 114
7.9 AJTeglos multidimcnsionales
270
4.9 Cmo formular algoritmos mediante el mejoramiento de arriba a abajo, puso a paso:
7.10
(Ejemplo prctico opcional) Acerca de los objetos: Colaboracin entre los objetos
277
Ejemplo prctico 2 (repeticin controlada por un centinela)
118
Programacin basada en objetos
301
4.10 Cmo formular algoritmos mediante el mejoramiento de arriba a abujo, paso a paso: d
Ejemplo prctico 3 (estructuras de control anidadas)
125
8.1 Introduccin
302
4.11 Operadores de asignacin compuestos
129
8.2
Implementacin de un tipo de dato abstracto con una clase
303
4.12 Operadores de incremento y decremento
129
8.3 Alcance de las clases
310
4.13 Tipos prmitivos
1
8.4 Control del acceso a los miembros
310

4.14 (Ejemplo prctico opcional) Acerca de los objetos: Cmo identifcar los ;tributos 8,5
Referencias a los miembros del objeto actual mediante this
311
de las cluses
133
| 8.6
Inicializacin de los objetos de una clase: Constructores
313

H.7 U so de constructores sobrecargados


314
Instrucciones de control: Parte 2
145 ' 8.8
Uso de los mtodos set (establecer) y get (obtener)
318
5.1 Introduccin
146 '
8.9 Composicin
326
5.2 Fundamentos de la repetcin controlada por contador
146
8.10 Recoleccin de basura
329
5.3 Instruccin de repeticin f or
148
8.11 Miembros de clase estticos
330
5.4 Ejemplos sobre el uso de la instruccin for
151
8.12 Variables de instancia fnales
334
5.5 Instruccin de repeticin do. s while
156
8.13 Creacin de paquetes
336
5.6 Instruccin de seleccin mltiple switch
158
8.14 Acceso a los paquetes
341
5.7 Instrucciones break y cont:nue
162
8.15 Reutilizacin de software
343
5.8 Instrucciones break y cont:nue etiquetadas
164
8.16 Abstraccin de datos y encapsulamiento
344
5.9 Operadores lgicos
167
8.17
(Ejemplo prctico opcional) Acerca de los objetos: Cmo empezar
5.10 Resumen sobre programacin estructurada
172
a programar las clases para lu simulacin del elevador
345
5.11 (Ejemplo prctico opcional) Acerca de los objetos: Cmo identifcar los estados
y actividades de los objetos
l77
x Programacin orientada a objetos: Herencia
355
9.1 Introduccin
356
0 Mtodos
187
9.2 Superclascs y subclases
357
6.1 Introduccin
188
9.3 Miembros protected
358
6.2 Mdulos de programas en Java
188
9.4 Relacin entre las supercluses y las subclases
359
6.3 Mtodos de lu clase Ma th
189
9.5
Ejemplo prctico: Jerarqua de herencia de tes niveles
377
6.4 Declaraciones de mtodos
190
9.6 Constructores y finalizudores en lus subclases
380
6.5 Promocin de argumentos
197
9.7 Ingeniera de sofwale mediante lu herenciu
385
6,6 Paquetes de lu API de Juvn
198
6.7 Generacin de nmeros aleatorios
198
X
Contenido
Contenido xl
JJ Programacin orientada a objetos: Polimorfismo 389
12 Grficos /Java2D 509
!0.1 Introduccin
390
12.1 Introduccin 510
10.2 Relaciones entre los objetos en una jerarqua de herencia
391
12.2 Contextos de grficos y objetos de grfcos 511
1 0.2.1 Invocacin de los m todos de supcrclases desde objetos de subclases
392
12.3 Control de colores 513
10.2.2 Uso de referencias a superclascs con variables tipo subclase
393
12.4 Control de tipos de letra 519
10.2.3 Llamadas a mtodos de subclases mediante variables tipo superclasc 394
12.5 Dibujo de Jfneus, rectngulos y valos 524
10.3 Ejemplos de polimorfsmo
396
12.6 Dibujo de arcos 527
10.4 Clases y mtodos abstractos
397
12.7 Dibujo de polgonos y polilneas 527
10.5 Ejemplo prctico: Herencia de interfa y de implementacin 399
12.8 La API Java2D 532
I0.6 Mtodos y clases final
407
12.9 (Ejemplo prctico opcional) Acerca de los objetos: Diseo. de interfaces con UML 538
10.7 Ejemplo prctico: Sistema de nmina utilizando polimorfsmo 407
I0.8 Ejemplo prctico: Creacin y uso de interlitces
417
JJ Componentes de la interfaz grfica de usuario: Parte 1 547
10.9 Clases anidadas
421
I3.I Intoduccin 548
10.10 Clases de tipo de envoltum para los tipos primitivos
433
13.2 Genralidadcs de Jos componentes de S wing 549
10.11 (Ejemplo prctico opcional) Acerca de los objetos: Cmo incorpomr
13.3 JLabel 551
la herencia a la simulacin del elevador
434
13.4 Manejo de eventos 554
10.12 (Opcional) Descubrimiento de patrones de diseo: Introduccin
a los patrones de diseo de creacin, estructura y comportamiento 440
13.5 Campos de texto 556
10.12.1 Patrones de diseo de creacin
441
13.6 Cmo funciona el manejo de eventos 559
10.12.2 Patrones de diseo de estructura
443
13.7 JButton 561
10.12.3 Patrones de diseo de comportamiento
444
ll JCheckBo: y JRadioButton 563
l 0.12.4 Conclusin
445
13.9 JComboBo: 568
l 0.12.5 Recursos en Internet y World Widc Web
446 13.10 JList 571
JJ Cadenas /caracteres
13.11 Listas de seleccin mltiple 573
451 13.12 Manejo de eventos de ratn 575
11.1 Introduccin
452
13.13 Clases adaptadoras 579
11,2 Fund;mentos de los camctcrcs y las cadenas
452
13.14 Manejo de ventas de teclas 584
11.3 La clase String
453
13.15 Administradores de esquemas 587
11.3.1 Constructores de String
453
1 1.3.2 Mtodos lengtb, cbarArt y getCbars de String 455
[3.15.1 FlowLayout 587
11.3.3 Comparacin entre cadenas
456
13.]5.2 BorderLayout 590
11.3.4 Localizacin de caracteres y subcadenus en las cadenas
461
!3.15.3 GridLa
:
out 593
11.3.5 Cmo extraer subcadenas de las cadenus
463
13.16 Paneles 595
11.3.6 Concatenacin de cadenas
463
13.17 (Ejemplo prctico opcional) Acerca de los objews: Casos de uso 596
1 1.3.7 Mtodos varios de String
464
Componentes de la interfaz grfica de usuario: Parte 2 11.3.8 El mtodo valueof de String
466
J4 607
11.4 La clase StringBuffer
467
14.1 Introduccin 608
11.4.I Constructores de StringBuffer
468
14.2 JTe:tArea 609
11.4.2 Los mtodos length, capacity, setLengtb y ensureCapacity 14.3 Creacin de una subclase personalizada de JPanel 612
de StringBuffer
468
14.4 Subclase de Jlanel que maneja sus propios eventos 615
11.4.3 Los mtodos charAt, aetCharAt, etChars 14.5 JSlider 620
y reverse de StringBuffer
470
14.6 Ventanas: Observaciones adicionales 624
11.4.4 Los mtodos append de StringBuffer
470
14.7 Uso de mens con marcos 625
11.4.5 Los mtodos insert y delete de StringBuffer 473
14.8 JPopupMenu 632
11.5 La clase Character
474
14.9 Apariencia visual adaptable 635
11.6 La clase StringTokenizer
479
14.10 JDesktopPane y JinternalFrame 638
11.7 Simulacin para barajar y repurtir curtas
482
14.11 JTabbedlane 642
11.8 Expresiones regulares, la ciase Pattern y la clase Matcber 486
!4.12 Administradores de esquemas: BoxLayout y GridBagLayout 64
11.9 (Ejemplo prctico opcional) Acerca de los objetos: Manejo de eventos
495
14.13 (Ejemplo prctico opcional) Acerca de los objetos: Modelo-vista-controlador 655
!4.14 (Opcional) Descubrimiento de los patrones de diseo: Patrones de diseo
utilizados en los paquetes java. awt y j avax. swing 663
14.14. I Patrones de diseo de creacin 663
14.14.2 Patrones de diseo de estructura 664
l
xli
Contenido
I
Contenido
XIII

14.14,3 Patrones de diseo de comportamiento 666


|
Interucitn ente cliente/servidor mediante conexiones de socket de flujo
837
|
18.6
14.14.4 Conclusin 669
'
18.7
Interaccin entre cliente/servidor sin conexin mediante datagramas
849
18.8 Juego de tres en raya (galo) tipo cliente/servidor, utilizando un servidor con
l Manejo de excepciones 675
l
subprocesamiento mltiple
856
15.1 lntroduccidn 676 18.9 La seguridad y lu red
868
15.2 Generalidades acerca del manejo de excepciones 676 18.10 Servidor y cliente pam conversaciones DcitelMessenger
870
15.3 Ejemplo de manejo de excepciones: Divisin entre cero 680
I
18.10.1 ServidorDei telMessenger y las clases de soporte
870
15.4 Jerurqua de excepciones en Juvu 683 18.10.2 Cliente DeitelMessenger y las cluses de soporte
878
15.5 Volver a lanzar unu excepcin 685

18.11
Generalidades acerca del trabajo en red con NIO
897
.15.6 Clusula finally 685 18.12
(Opcional) Descubrimiento de los patrones de diseo: Patrones de diseo
15.7 Limpieza de la pila 688
'
utilizados en los paquetes java. io y java. net
908
15.8 printStackTrace, getStackTrace y getMessage 690 . 18.12.1 Patrones de diseo de creacin
908
15.9 Excepciones encadenadas 692
' 18.12.2 Patrones de diseo de estmctura
909
15.10 Decluracin de nuevos tipos de excepciones 694
|
18.12.3 Patrones de arquitectura
910
15.11 Constructores y manejo de excepciones 695

18.12.4 Conclusin
912
l0 Subprocesamiento mltiple

Multimedia: Imgenes, animacin / audio


91 9
699

lx
16.1 Introduccin 700

19.1 Introduccin
920
16.2 Estados de los subprocesos: Ciclo de vida de un subproceso .702 19.2 Cmo cargar, mostrur y escalar imgenes
921
16.3 Prioridades y programacin de subprocesos
703
1
19.3 Animacin de una serie de imgenes
923
16.4 Creacin y ejecucin de subprocesos 705 19.4 Mapas de imgenes
927
!
930
16.5 Sincronizacin de subprocesos 708
1
19.5
Carga y reproduccin de clips de audio
16.6 Relacin productor/consumidor sin sincronizucin 709

19.6 Recursos en Internet y World Wide Wcb


932
16.7 Relacin productor/consumidor con sincronizacin 715 19.7
(Ejemplo prctiw opcional) Acerca de los objetos: Animacin y sonido en la vista
933
16.R Relacin productor/consumidor: Bfer circular 722
16.9 Subprocesos tipo Hdacmon" 732
16.10 Interfz Runnable 733
J Estructuras de datos
951
16.11 (Ejemplo prctico opcionul) Acerca de los objetos: Subprocesamiento mltiple 738
\
20.] Introduccin
952
16.12 (Opcional) Desctiblimiento de los patrones de diseo: Patrones de diseo de
20.2 Clases autmrcferenciudus
952
concurrencia
742
20.3 Asignacin dimimica de memoriu
953
I
954
20.4 Listas enlazadas
l Archivos /flujos 749
20.5 Pilas
963
`.`
17.1 Introduccin 750 ;:
20.6 Colas
967
17.2 Jerarqu de datos
751
i
20.7

rboles
970
.,
17.3 Archivos y t1ujos
752
17.4 La clase File
755
J Paquete de utileras de Java / manipulacin de bits 997
17.5 Creacin de un archivo de acceso secuencial 760
21.1 Introduccin
998
17.6 Cmo leer datos desde un archivo dacceso secuencial 776
21.2 La clase Vector y In interfaz Enueration
998
17.7 Actualizacin de urchivos de acceso secuencial 782
21.3 La clase Stack del paquete java. u til
1002
17.8 Archivos de acceso aleatoro 782
21.4 La clase Hashtable
1005
17,9 Creacin de un archivo de acces0 aleatorio
783
21.5 La Clase Propertiea
1009
17.10 Cmo escribir datos en forma aleatoria, en un urchivo de acceso aleatorio 788
21.6 Manipulacin de bits y operadores ' nivel de bits
1015
17.11 Cmo leer datos en forma secuencial, de un archivo de acceso aleatorio 793
21.7 La clase Bi tSet
1028
17.12 Ejemplo prctico: Un programa para procesar transacciones 797
17.13 Nuevas AP!s de ES pura la plataforma Java 809
Colecciones
1 037
22.1 Introduccin
1038
ld Redes
825
22.2 Generalidades acerca de las colecciones
1039
18.1 lntroduccirn 826
22.3 La cla.e lrrays
1039
18.2 Manipulacin de URLs
827
22.4 La interaz Collection y la clase Collections
1043
18.3 Cmo leer un archivo en un servidor Web
832
.
22.5 Objetos !ist
!044 ~
18.4 Cmo establecer un servidor simple utilizando sockets de flujo 835
j
22.6 Algoritmos
1050
18.5 Cmo establecer un cliente simple utilizando sockets de flujo 837
22.6.1 El algorito sort
1050
xlv
Contenido

Contenido

22.6.2 El algoritmo shuffle


1054

25.3
Nuestro primer ejemplo de JavaServer Page
1151
22.6.3 Los algoritmos reversa, fill, copy, max y min 1056 25.4 Objetos implcitos
1153
22.6.4 El algoritmo binarySearch
1
1058
9
25.5 Secuencias de comandos
1154
22.7 Conjuntos

1060
25.5.1 Componentes de las secuencias de comandos
1155
22.8 Mupas
i
1063
G 25,5.2 Ejemplo de secuencia de comandos
1155
22.9 EnvolturaN de sincronizacin
1066 25.6 Acciones estndar
1158
22.10 Envolturas no modifcables
1066
l
25.6.1 La accin <j ap: include:
1159
22.11 Implementaciones ubstructas
1067 1 25,6.2 La accin <j ap: forward:
1164
22.12 (Opcional) Descubl'irento de los patrones de diseo: Patrones de diseo

25.6.3 La accin <j sp :useBean:


1167
utilizados en el paquete java , u til 1067

25.7 Directivas
1170
22.12.1 Patones de diseo de creacin 1067
25.7.1 La directiva page
1171
22.12.2 Patrones de diseo de comportamiento 1067
25.7.2 La directiva include
1173
22.12.3 Conclusin
1068 25.8 Ejemplo prctico: Libro de visitantes
1175

25.9 Recursos en Internet y World Widc Web


1185
ZJ Conectividad de bases de datos en Java con JDBC 1 073
23.1 Introduccin
1074
23.2 Bases de datos relacionales
23.3
Generalidades acerca de las bass de datos relacionales: La base de datos libros
1075

1076 Apndices
23.4 SQL 1079
23.4.1 Consulta b<sica SELECT 1080 1

Tabla de precedencia de los operadores


1 1 91
23.4.2 La clusula WHERE
1081
:j
23.4.3 La clusula ORDER BY
1082 B Conjunto de caracteres ASCII
1 193
23.4.4 Cmo fusionar datos de varias tablas: INNER JOIN 1084

23.4.5 La instruccin lNSERT


1085
23.4.6 La instuccin UPDATE 1086

Disponible en el CD-ROM:
23.4.7 La instruccin DELETE
`|
23.5 Creacin d lu bnse de datos libros en Cloudscape
1086

C Sistemas numricos
1 1 95
1087

23.6 Manipulacin de bases de datos con JDBC 1088

C.1 Introduccin
1196
23.6.1 Cmo conectarse y realizar consultas en una base de datos
1088

C,2 Abreviatura de los nmeros binados como nmeros octales


23.6.2 Consultas en la base de datos libros 1093
y hexadccimules
1199
23.7 Procedimientos almacenados
--
C.3 Conversin de nmeros octales y bcxadecimules a binarios
1200
ll04
23,8 Recursos en Internet y World Wide Web
1104

C.4 Conversin de un nmero binario, octal o hexadecimal a decimal 1200


C.5 Conversin de un nmero decimal a binario, octul o hexadecimal 1200
4 Servlets
1 1 1 1

C.6 . Nmeros binmos negativos: Notacin de complemento a dos 1202


24.1 Introduccicn
1112
24.2 Generalidades y arquitectura de los servlets
lll 4
D Eventos e interaces de escucha del elevador 1 207
24.2.1 La interfaz Servlet y el ciclo de vida de un servlet

D. l Intoduccin
1207
24.2.2 La ciase HttpServlet
lli5
D.2 Eventos
1207
1116

24.2.3 La interfaz HttpServletRequest


1117
DJ Componentes de escucha
12ll
24.2.4 La interfaz HttpServletResponse
lll8
D.4 Repaso de los artefactos
1213
24.3 ManejQ de las peticiones get de HTIP 1118

24.3.1 Contiguracin del servidor Apache Tomcat 1122


E Modelo del elevador
1 21 5
24.3.2 Despliegue de unu aplicacin Web
1124
E.1 Introduccin
1215
24.4 Manejo de peticiones get de HIP que contienen datos
E.2 La clase SimulacionElevador
1:15
1127 :
24.5 Manejo de las peticiones post de HIP
1130
EJ Las clases Ubicacion y Piso
1222
24.6 Redireccin de peticiones a otros recursos
E.4 Las clases Puerta y PuertaElevador
1225
24.7 Aplicaciones multinivel: Uso de JDBC desde un servlet
1133 "
E.5 La clase Botan
1230
1136
.
24.8 Rcc

rsos en Interet y Wurld Wide Web


ll43
E.6 La clase ConductoElevador
1231
E.7 Las clases Luz y Timbre
1238
d JavaServer Pages (JSP)
1 1 49
E.8 La clase Elevador
1241
25.1 Introduccin
1150
E.9 La clase Persona
1249
25.2 Generalidades acerca de lus J<wuServer Pages
1150
E. !O Repaso de los artefactos
1256
E.ll Conclusin
!257
XVI
La vista del Elevador (en CD)
F! Introduccin
F.2 Los objetos de la clase
F.3 Las constantes de la clase
F4 El constructor de la clase
F S Manejo de eventos
F5.1 Los tipos de eventos EventoMoverElevador
F5.2 Los tipos de eventos EventoMoverPersona
FS.3 Los tipos de eventos EventoPuerta
F.5.4 Los tipos de eventos EventoBoton
P.5.5 Los tipos de eventos EventoTimre
P5.6 Los tipos de eventos EventoLuz
F6 Repaso de los artefactos
F.7 Conclusin
G Unicode
G.l Introduccin
G.2 Formatos de transformacin de U nicode
GJ Caracteres y glifos
G.4 Ventajas/Desventajas de Unicode
G.5 Sio Web del consorcio U nicode
G.6 U so de U nicode
G.7 Rangos de caracteres
Bibliografa
ndice
Contenido
1 259
1259
1275
1277
1278
1280
1280
1280
1281
1281
1282
1282
1282
1283
1 285
1286
1287
1287
1288
1289
1290
1291
1 295
1 299
Prefacio
Bienvenido a Java! En Deitel & Associates escribimos libros de texto sobre lenguajes de programacin, tanto
de nivel universitario como profesional, y nos esforzamos por mantener nuestros libros actualizados. Escribir
esta quinta edicin fue un placer. Este libro y el material de apoyo incluyen todo lo que necesitan los profe
sores y estuiiuntcs para obtener una experiencia educativa interesante, informativa, retadora y entretenida con
Java. Esta publicacin concuerda con la ltima versin <e Java [lataforma Java 2, Standard Edition (J2SE),
versin1.4.1/ y con el diseo orienmdo a objetos, utilizando la versin ms reciente de UML (Lenguaje Uni
fcado de Modelado) desarrollado por el Objcct Managcment Group (OMG). Pusimos a tono la escritura, la
pedagoga, nuestro estilo de codifcucin, el paquete de accesoros del libro, y adems incluimos un anlisis
importante del desarrollo de aplicaciones de bases de dtllos basadas en Interet y Web. Pasamos el Paseo por
el libro al pret'ucio. Este paseo ayudar a los profesores, estudiantes y profesionales u tener una idea ms clara
ue la extensa cobertura que proporciona este libro, en relucin con la programucin orientada a objetos en Java,
el diseo orientado a objetos con UL y el desarrollo de aplicaciones basadas en Interet y Web.
Ya sea usted profesor, estudiante, profesional experimentado o programador novato, este libro tiene mucho
que ofrecerle. Java es un lenguaje de programacin de clase mundial que se utiliza para desa!1'ollar aplicaciones
computacionales de uso industial, para dispositivos que van desde telfonos celulares y PDAs, hasta los servi
dores emprcsuriales ms grandes. Nosotros auditamos cuidadosamente el manuscrito, comparndolo con la
Especiicacin de/lenguaje Java
1
, que define a este lengu*. Como resultado, los programas que usted cree al
estudiar este texto debern funcionar con cualquier plataforma Java que sea compatible con la J2SE 1.4.1.
En este prefacio veremos la extensa suite de materiales educavos de Cmo progrmar en Java, 5" edicin,
los cuales ayudarn a los profesores a maximizar la expe1iencia de aprendizaje de sus estudiantes en cuanto a
Java. Explicamos las convenciones que ulizamos, como la presentacin de la sintaxis del cdigo de los ejem
plos, para "lavar cdigo" y para resaltar segmentos importantes de ste, lo que ayuda a los estudiantes a enfo
car su atencin en los conceptos clave que se introducen en cada captulo. Daremos un vistazo general a las
nuevas caractersticas de Cmo programar en Java, 5" edicin, incluyendo nuestra adaptacin mejorada sobre
la programacin orientada a objetos, el desarrollo de aplicaciones Web con servlets y JSP, el ejemplo prctico
opcional mejorado de diseo orientado a objetos (DOO) con UML sobre la simulacin de un elevador, el
vistazo general a los patrones de diseo y el uso extensivo de diagramas de UML que se han actualizado a los
estndares de la versin 1.4 de U.
El libro incluye un CD con el texto del Kit de desarmllo de software J2SE 1.4.1 (J2SDK) de SunMicrosys
tems, junto con Sun ONEStudio 4 (Commzmity Edition), el entoro integrado de desarrollo (!DE) de Sun. Para
un muyor apoyo a los programadores novatos, ofrecemos varias publicaciones gratuitas de la Serie DlVE
fTT, lus cuales explican cmo compilar, ejecutar y depurar programas en Juva utilizando el Kit J2SDK, Sun
l. Exislen copias electnicas en formato HTM y IDF de la E.pecifcacill delfonguajf. Java, las cualeH estn disponibles en
forma glluitu en el sitio Web sobre Jvu de S un MicrosystemH en java. 8U. com/cocs/books/j ls/inde.html.
XVIII
Pretoclo
ON Studio (Community Edition) y el software JBi/der de Borland, PerJonal edition. Todo este material se
encuenta en ingls y est disponible en la pgina w.deitel. com/books/dowloads . html o en
ww . pearsoneducacion. net/ dei tel, junto con otros recursos para este libro.
Adems, en este sitio ofrcemos un panorama general del paquete completo de materiales adicionnles pura
profesores y estudiantes que utilicen este libro como texto en un curso. Entre otros materales, tambin en in
gls, se incluye un CD llamudo Insmu:tor's Resource, con soluciones a ht mayora de los ejercicios plunteados
en los cuptulos del libro, as como un urchivo llamado Test-ltem que contiene cientos de preguntas de opcin
mltiple y sus respuestus correspondientes. Los profesores que desen mantener sesiones cerradas de laborato
rio (o asignar tareas altamente estructuradas), pueden adquirir un mtmual de laboratorio, Java in the Lah. Esta
publicacin incluye <tctividades previas al laboratorio, ejercicios de laboratorio y actividades posteriores, que
han sido cuidadosamente elaboradas pura este fn.
Este prefacio tambin analiza la quinta edicin de Tlze Java 2 Multimedia Cyber ClasJmom 5'1 ed., que es
In versin multimedia, en ingls, de la versin original de este libro. Esta herramienta de aprendizaje propor
ciona extensas caractersticas de intcractividad, incluyendo hipervnculos, bsqueda de texto, "recorridos" con
audio a travs de los programas, unimaciones en Flash y cientos de ejercicios y sus soluciones.
Analizaremos tambin varias herramientas DE!TEtrM de aprendizaje en lnea, incluyendo una explicacin
del contenido de Blackboard, CozmeCompass y WebCT de la serie Course Managemem Syste1n1, cada uno de
los cuales apoya el material de este libro.
La cuarta edicin de este libro fe revisada por 35 distnguidos acadmicos y profesionales del rumo. Despus
de aplicar sus comentarios, el manuscrito para Cmo pmgramar en Java, 5" edicin, fue revisado nuevamente por
4 distinguidos acadmicos y profesionales. En los reconocimientos mencionamos los nombres de los revisores y
en dnde luborun. El prcfucio concluye con informacin acerca de los autores y de Dei te! & Associates, Inc. Si
u! leer este libro surge alguna pregunta, por favor enve un correo electrnico a dei tel@dei tel. com; le
responderemos inmediatamente. Visite con regularidad nuestro sitio Web, ww. dei tel. com, e inscrbase en
el boletn de correo electrnico DiifELTM Buz ONUNE en ww. deitel. com/newsletter subscribe.
html. Utilizamos el sitio Web y el boletn para mantener a nuestros lectores actualizados en cuanto a las pu
blicaciones y servicios de DEIELT
M
,
Nuevas caractersticas en Cmo programar en Java, 59 edicin
Estu edicin contiene muchas nuevas caractersticas y mejoras, incluyendo:
Resaltado de cdigo
En este libro hemos arregado mucho cdigo resultado (con pantalla). A revisar nuestro cdigo eliminamos la
mayora de los fragmentos "redundantes" que aparecan en ediciones anterores. Dichos fragmentos los mantuvi
mos en la primera parte de! libro como una herramienta pedaggica que ayudura u los principiuntes. Queremos
que el lector vea, en contexto, las nuevas caractersticas del cdigo, por lo cual, a partir del captulo 4, nuestras
revisiones al cdigo simplemente hurn referencia a los mlmcros de lea de los nuevos segmentos de cdigo
en los progrnus fente. Pura facilitar a los lectores el detectur los segmentos presentados, los hemos resaltado.
Esto ayuda a los estudiantes a revisar el material rpidamente cuando se preparen para algn examen.
"Lavado de cdigo"
Lavado de cdigo es el trmino que utilizamos pura aplicar comentarios extensos, para utilizar identifcadores
importantes, para aplicar sangra y usur espaciado vertical pura sepurar las unidades importantes de un progra
ma. Este proceso da como resultado programas que son mucho ms fciles de leer y que sirven como uutodo
cumentacin. Hemos realizado un amplio "lavado" u todo el cdigo de los programas de fuente de este texto,
del manual de laboratorio, del material auxiliar y del Cyber Classmom.
El proceso par poner a pu11to la programacin orientada a objetos en los captulos 9 y 10
sta es una de las mejoras ms importantes de estu nueva edicin. Hemos realizado una actuulizacin muy pre
cisa del captulo 9 de Cmo programar en lava, 4" edicin, y lo dividimos en dos captulos. Las mejoras hacen
el material ms claro y accesible pam los estudiantes y profesionales, especialmente puru los que estudian la
prognunacin orientada a objetos por prmera vez.
Prefacio xlx
Capulo 9 "Programacin orie11tada a objetos: hermcia". El captulo 9 lleva cuidadosamente al lector u
travs de una secuencia de cinco ejemplos que muestran los datos privados (priva te), protegidos (protec
ted} y la reutilizacin de software por medio de la herencia. Comenzamos mostrando una clase con variables
de instancia privada y mtodos pblicos para manipular esos datos. Luego implementamos una segunda clase
con vurias capacidades adicionales. Pnra esto, duplicumos gran parte del cdigo del primer ejemplo. En nuesto
tercer ejemplo empezamos nuestra eplicacin sobre lu herencia y !u reutilizacin de software; utilizamos la
clase del primer ejemplo como una supercluse y heredamos sus datos y su fncionalidad en una nueva subcluse.
Este ejemplo introduce el mecanismo de la herencia y demuestra que una subclase no puede acceder a los
miembros privados de su supcrclase directamente. Esto motiva nuestro cuarto ejemplo, en el cual introdujimos
datos protegidos en la superclasc y demostnos que la subclase puede acceder a los datos protegidos que
hereda de la superclase. El ltimo ejemplo en la secuencia demuestra la ingeniera de software adecuada al de
finir los datos de la supercluse como privados y al utilizur los mtodos pblicos de la superc!ase (que fueron he
redados por !u subclase) pura munipulur, desde la subclase, los datos privados de la supercluse. Seguimos la intro
duccin de cinco partes con una jernrqua de cluses de tres niveles, la cual emplea las tcnicas de ingeniera de
software que se introducen en la primera parte de este captulo. El captulo cierra con una discusin de la inge
niera de software con la herencia.
Captulo 1 O "Programacin orie11tada a objetos: polimorfsmo". El nuevo captulo 1 O se basa en los con
ceptos de herencia que presentamos en el captulo 9, y se enfoca en las relaciones existentes entre las clases de
una jerurqua de clases. El captulo 1 O utiliza una secuencia de tres ejemplos para presentar tus poderosas capa
cidades de procesanriento que se permiten en este tipo de relaciones. Comenzamos con un ejemplo que ilustra
la relacin "es un" entre un objeto de una subclase y su tipo de superclase. Esta relacin permite que el objeto
de !u subclase sea tratado como un objeto de su supercluse. Mostramos que podemos asignar una referencia de
un objeto de la subclase a una variable de la superclase, e invocur los mtodos de la superclusc en ese objeto.
Este ejemplo utiliza el polimorfismo, que permite a un programa procesar objetos de cluscs relacionadas por
una jerarqua de clases, como objetos de su tipo de superclase. Cuando un mtodo se invoca por medio de una
variable de la superclase, se invoca la versin de ese mtodo que es especlica de la subclase. En nuestro segundo
ejemplo demostramos que lo inverso no se aplica (el objeto de una superclase no se considera como un objeto
de su tipo de subclase} y tambin mostramos que se producen errores de compilncin si un programa intenta
manipulur un objeto de la supcrclasc en esta !'orma. Nuestro tercer ejemplo demuestra que los nicos mtodos
que pueden invocarse |Itravs de la variable de una superclase son los que estn defnidos por el tipo de super
clase. El ejemplo muestra que los intentos de invocar mtodos que slo pertenecen a la subclase ocnsionan
erores de compilacin. El captulo contina con un ejemplo prctico sobre d polimorfismo, en el cual procesa
mos un nrreglo de variables que contienen referencias a objetos. Todos los objetos rcferenciados por los elemen
tos del urreglo tienen una superclase abstracta comn, la cual contiene el conjunto de mtodos comunes pura
todas las clases de la jerurqua. Concluimos con un ejemplo pnctico que demuestra cmo un programa que pro
cesa objetos en forma polimrfca puede an realzar un procesamiento especfico a cada tipo, determinando el
tipo del objeto que se est procesundo en ese momento.
Nuevas API. de E/S (NIO) de Java
Lus nuevas APis de EIS de Java son un agregado considerable a la J2SE 1.4. Analizamos partes de estas APis
en algunas secciones de tres captulos. La seccin 11.8 demuesta tus capacidades de las nuevas APls de ES en
cuanto al uso de expresiones regulares, lo cual permite a los programas buscar patones de curacteres en las ca
denas. La seccin 17.13 introduce las clases de EIS de alto rendimiento de las nuevas APis de E/S, las cuales
periten a los desarrolladores aprovechur los bferes, canales, conjuntos de caracteres y dems. Esta seccin
tambin presenta un ejemplo del uso de canales y bfercs pura escribir datos hacia, y leer datos desde, un archi
vo. La seccin 18.11 contina nuestra discusin sobre las nuevas AP!s de EIS con una imroduccin a los selec
tores y a la E/S sin bloqueo pura implementar servidores de red de alto rendimiento. Despus implementamos
un programa de conversacin distribuida que demuestra esas capncidndcs. Lus secciones 11.8 y 17.13 tambin
proporcionan vnculos Wcb pura un estudio ms detullndo de las nuevas AP!s de E/S.
Desarrollo de aplicaciones Web y de bases de dato.v con JDBC, servlets y .l'
Debido a la demanda populur, hemos regresado varos temas a Cmo pmgramar en lava, 5 edicin. El capitulo
23, Conectvidad de buses de datos en Juva mediante IDBC, demuestra cmo crear aplicaciones contoladas por
Prefacio
bases de datos con la API JDBC'r, El captulo 24, Servlets y el captulo 25, JavaServer PagesTM (JSP), expan
den nuestro anlisis de los temas de programacin relacionados con Interet y Wcb, y tienen todo lo que los
lectores necesitan para empezar a desarrollar sus propias aplicaciones basadas en Web que funcionarn en
Iotemet! Los lectores aprendern a crear las denominadas aplicaciones de h niveles, en las cuales la funcionali
dad que proporciona cada nivel puede distdbuirse para separar computadoras a travs de Interet, o pueden eje
cutarse en la misma computadora. En especial, creuremos una aplicacin de encuesta de tres niveles basada en
Web, y una aplicacin de libro de visitantes de tres niveles basuda en Web. La informacin de cada aplica
cin se almacena en el nivel de datos de la aplicacin; en este libro se utiliza una base de datos implementada
con el producto de bases de datos Cloudscape de IBM, basado en Java {en el CD del libro se incluye una versin
de prueba). El usuario introduce las peticiones y recibe las respuestas en el nivel de cliente de cada aplicacin,
que por lo general es una computadora que ejecuta un navegador Web, como Microsoft Iotemct Explorer o
Nctscape. Por supuesto, los navegadores Web saben cmo comunicarse con los sitios Web a travs de Interet. El
nivel medio contiene un servidor Web y uno o ms servlcl especficos a la aplicacin (en el caso de nuestra
aplicacin de encuesta) o JavaServer Pages (en el caso de nuestra aplicacin de libro de visitantes). Utilizamos
el servidor Web Torea! de Apache como nuestro servidor de aplicaciones para estos ejemplos. Torea!, que
es la implementacin de referencia para las tecnologas de servlets y JavaServer Pages, se incluye en el CD
que acompaa a este libro y est disponible para descargarse en forma gratuita de w-apache , org. Tor
ea! se comunica con el nivel de cliente a travs de Interet, utilizando el Protocolo de transferencia de hiper
texto (H'IP). Hablamos sobre el papel imprescindible del servidor Web en la programacin Web y proporcio
numos muchos ejemplos que demuestran las interacciones entre un navegador Web y un servidor Web.
Lenguaje Unicado de ModeladoTM (UML)
El Lengu' Uniticado de ModeludoTM (UML) se ha convertido en el lenguaje de modelado grfco pret'eddo
pnru disear sistemas orientados a objetos. En la edicin antedor de este libro solamente utilizamos UML en
secciones opcionales, y empleamos segmentos de diagramas de flujo convencionales y diagrmns de herencia
para reforlar las explicaciones. Ahora hemos transfonnado completamente los diagramas dd libro para que
sean compatibles con UML 1.4, En especial, tctualizamos tod<lS lus Jigurs del ejemplo prctico de simulacin
del elevador con UML!DOO; convertimos todos los diagramas de flujo en los cuptulos 4 y 5 sobre las instmc
ciones de contol, a diagramas de actividad de Uli; y convertimos toJos los diagramas de herencia de Jos ca
ptulos 9, lO, lJ. 13 y 15 a diagramas de clases de Ul!L.
Esta quinta edicin pone a punto cuidadosamente el ejemplo prctico opcional (pero ampliamente rcco
mendado) que presentamos sobre el diseo orientado a objetos, utlizando UML. El ejemplo prctico se envi
a un equipo distinguido de revisores de DOOIUML, incluyendo lderes en el campo por parte de Rational (los
creadores de Ul!L) y del Grupo de administacin de objetos (responsable del mantenimiento y la evolucin
de UML). En el ejemplo pnctico implementamos completamente la simulacin de un elevador. En las seccio
nes "Acerca de los objetos" al fnal de los captulos l a 8, 10 a l4,16 y 19, presentamos una introduccin detalla
da al diseo otentado a objetos, utilizando UML. Mostramos un subconjunto conciso y simplificado de UML. y
despus guiamos al lector a travs de su primera experiencia con el diseo, la cual est dirigida a diseadores
y programadores odentados a objetos que apenas inician. El ejemplo prctico est completamente resuelto. No
es un ejercicio, sino una expedencia completamente educativa, que concluye con un recorddo detallado por el
cdigo de Java. En cada uno de los primeros cinco captulos nos concentramos en la metodologa "convencio
nal" de la programacin estrcturada, ya que los objetos que creamos utlizan estas piezas de programa estructura
do. Concluimos cada captulo con una seccin "Acerca de Jos objetos", en la que presentamos una introduccin
a diseo orientado a objetos (DOO) mediante el uso de UliL. Estas secciones ayudarn a los estudiantes a desa
rollar un diseo odcntado a objetos, de manera que puedan utilizar inmediatamente los conceptos de programa
cin orientada a objetos que comienzan a aprender en el captulo 8. En ln pdmera de estas secciones a fnal
del captulo 1, presentamos los conceptos bsicos y la terminologa del 000. En las secciones ''Acerca de los
objetos" opcionales al tina! de los captulos 2 a 5 consideramos cuestones ms importantes mientras hacemos
frente a problemas que suponen un reto con las tcnicas del DOO. Analizamos la declaracin de un problema
tpico en el que se requiere la construccin de un sistema, determinamos los objetos necesados para imple
mentarlo, los atibutos que necesitan tener estos objetos, y los comportamientos que necesitan exhibir dichos
objetos y especicamos la manera en que los objetos debern interactuar ente s pura cumplir con los requeri
mientos del sistema. Logramos esto incluso antes de comenzar a discutir cmo escrbir programas en Java. En

\
1

'
!

Prefacio
xxi
los apndices D a F. incluimos una implementacin en Java del sistema orientado a objetos que diseamos
en los captulos anteriores. Este ejemplo prctico ayudar a los estudiantes a prepararse para los tipos de pro
yectos que encontrarn en la industria. Empleamos un proceso de diseo orientado u objetos incremental y cui
dadosamente desarrollado para producir un modelo en UML para nuestra simulacin de clevudor. A partir de
este diseo producimos una verdadera y funcional implementacin en Java utilizando las nociones claves
de programacin, incluyendo clases, objetos, encapsulamiento, visibilidad, composicin y herencia.
Descubrimiento de patrones de diseo
Estas secciones opcionales introducen putrones de diseo orientado a objetos populares. Durante la dcada pasa
da, la indust<l de la ingeniera de software progres considerablemente en el can1po de los patrones de dise1io:
arquitecturas comprobadas para construir software orientado a objetos que sea tlexible y pueda mantenerse2 El
uso de putrones de diseo puede reducir considemblcmcnte la complejidad del proceso de diseo. Presentamos
varios patrones de diseo en Java, pero stos pueden implementarse en cualquier lenguaje odcntado a objetos tal
coro C++, C# o Visual Basic .NET. Describimos varios patrones de diseo utilizados por Sun Microsystcms
en la API de J uva. Adems, se utilizaron en muchos progmmus de este libro, los cuales identificaremos en las
secciones "Descubrimiento de patones de diseo", Estos programas proporcionan ejemplos acerca del uso de
patrones de diseo para construir software orientado a objetos que sea confable y robusto.
Mtodo de enseanza
Esta quinta edicin contiene una vasta coleccin de ejemplos, ejercicios y proyectos sustrados de diversos
campos p<tra proporcionar al estudiante la oporUnidad de resolver problemas interesantes del mundo real. El
libro se concentra en los pdncipios de la buena ingeniera de software, haciendo hincapi en la claridad de los
programas. Evitamos la tecnologa arcana y las cspeciticaciones sintcticas, para favorecer la enseanza me
diante ejemplos. Nuestros ejemplos tle cdigo se han probado en las plataformas populures de Java. Somos edu
cadores 4uc enseamos temas tle vanguardia en salones de clases de la industria alrededor del mundo, Este
texto ptme nfasis en la buena pedagoga.
Cmo aprender Java mediante el mtodo LJVECODiiTM
Este libro comiene numerosos ejemplos "reales'', Cuda nuevo concepto se presenta en el ontexto de un ejemplo
completo y funcionul. que es seguido inmediatamente por una o ms ejecuciones que muestran la entmdasada
del programa. Este estilo ejemplifica la manera en que ensemnos y escribimos acerca de la progmmacin, y es
el enfoque de nuestros cursos multimedia Cyber C/as.\}II!S y de capacitacin basados en Web. A este mtodo
de cnsem Y escribir le Humamos Mtodo del cdigo activo (o Mtodo LIVE-CODET1). Utilizamos lenguajes de
programacn para ensmiar lenguljes denvgmmacin. Ler los ejemplos en el texto es muy parecido a escri
birlos y ejecutarlos en la computadora. Tanto en el CD que acompaa al libro como en ww. dei tel . com
encontrar{ todo el cdigo fuente pura los ejemplos que apurecen en el libro. Le recomendamos ejecutar todos
los ejemplos.
Programaci11 en Java C0/1 aplicaciones y Swing desde el captulo dos!
Este libro lo pasa directamente a la programacin de aplicaciones Java con los componentes de la GUI Swing
del captulo 2. Hay mucho que hacer en Java, as que manos a la obra! Defnitivamente Java no es tlgo trivial,
pero es divertido programar en este lenguaje y los estudiantes pueden ver resultados inmediatos. Adems, pue
den ejecutar rpidamente programas grfcos, animados, basados en multimedia, con uso intensivo de audio,
con subprocesamiento mltiple, con uso intensivo de bases de dutos, o programas basados en red, a travs de
las extensas bibliotecas de clases de Ja va que cuentan con componentes reutilizables. Los alumnos pueden im
plementar proyectos impresionantes. Por lo general son ms creativos y productivos en un curso de uno o dos
semestres que en cursos de introduccin a C y C+t.
4. Gnmmu, Erkh, Richard Helm, Ralph Johnson y Joim Vlisides. Design fters; Elemerus ofReu.b/e Objec-OriemedSf
wqr, (Mussachuseus: Addison-Wesley, 1995.)
.
xxil
Prefacio
Acces1 a W1rld Wie Web
Todos l;s eempl
.
os de cdigo fuente (en ingls) para esta quinta edicin (y dems publicaciones de los auto
res) estan dispombles en Internet, de manera que pueden descargarse del siguiente sitio Web:
w. deitel . com
w.pearsoneducacion. net/deitel
Puee registrarse en fora rpida y scncill, y las descargas son gratuitas. Huccr cambios u los ejemplos e in
mediatamente ver los efectos de esos cambiOs es una excelente manera de mejorar su aprendizaje de Juva.
Objetiv1s
Caa captulo omienza con objetivos que informan a los estudiantes lo que deben esperar, y les brinda la opor
tumdud, despues de leer el captulo, de determinar si cumplieron los objetivos planteados. Los objetivos sirven
para 1ear confanza.
Frses
Los objeivos de locaulos van seguidos de una o ms frases. Algunas son graciosas, otras, flosdfcas y al
gunas mas orccen Ides mteresantes. Hemos descubierto que los estudiantes disfrutan relacionando las frases
con el matenal del capitulo. Muchas de stas merecen leerse otra vez, despus de leer los captulos.
Pla1 ge1eral
El plaeneral de cada captulo permite a los estudiantes abordar el material de manera ordenada. Junto con
los objetivos dcada captulo, el plan general ofrece a los estudiantes un panorama de tos temas a tratar para
estublecer un ntmo cmodo y efectivo de aprendizaje.
23,341 l11eas de cdigo en 219 programas de ejemplo (co1 la salida de los programas)
Presentamos las caractersticas de Java en un contexto de programas completos y funcionales en Java. Estos
progrmas LlvE_CoDE van en longitud: desde unas cuantas lneas de cdigo hasta ejemplos importantes
con cientos dhneas e cdigo. Cada programa va seguido por una ventana que contiene los resultados que se
p;oducen al ecutar dicho progranm; de manera que los estudiantes puedan conlrmar que los programas fun
cumcn como se esperaba .
.
El proceso de comparar las operaciones de salida con las instrucciones del progrnma
que producen esas operaciOnes es una excelente muncra de aprender y reforzar los conceptos. Nuestros progra
mas estn diseados m ejercitar las diversas caractersticas de Java.
615 Ilustracimres/Figuras
Incluimos una gran cantidad de grfcas, dibujos lineales, programas y salidas de programa. Hemos convertido
todos los diaamas de t1ujo en diagramas de actividad en UML. Tambin utilizamos diagrama de clase en
UML para modelar las relaciones existentes entre las clases a lo largo de este texto.
534 Tips de pragmmaci11
1
Hemos incluido tips de programacin para ayudar a los estudiantes a enfocarse en los aspectos importantes del
desarrollo de programs
_
. Resaltamos cientos de estos tips como Buenas prcticas de progrmacin, Ermre.\'
comunes de Prmacwn, Tps ara prevenir ermres, Observaciones de apariencia visual, Tps de rendimiemo,
Tps de potabclulad Y Obsetvacumes
.
de ingenienr de sofware. Estos tips y prcticas representan Jo mejor que
hemos podtdo recabar a lo
.
largo de seis dcadas (combinadas) de experiencia en la programacin y la ensean
za
:
Uno de ustros estudiantes, specialista en matemticas, recientemente nos coment que siente que este
metodo es simiar al d resaltar axiOma. teoremas y comlarios en los libros de matemticas, ya que proporcio
na una ba1e shda sobre la cual se puede construir buen software,
82 Buenas prcticas de programacin
La
:
r Buena.prdcticas d

programacin son tips

1ue ll<tman la atencin hacia tcnicas para escribir progrmas cla ro, Ademas, esta.r tcmcos ayudan a los estudumtes a producir programas ms legibles, ms fciles de entender y mantener.
156 Errores comunes de programacin
Lo,

s:udantes que eslin

prendl
.
endo un /enguajll ( especiolmeme en su primt!r curso de programacin) tienden cmJrccwnc/a a
:
meter ccerto, te pos de errores. Al poner <llenci6n en estos Errores cormmes de programal!in se reduce la probabcbdad da que /os estudiames cometan los mismos errores. Tcmbitt hace las l(neas ms cortas afuera de ftts ofcmas de los profesores!
f
Prefacio xxlil
50 Tlps para prevenir errores
Cuando diserlamos por primera vez este "tipo de lip", pensamos que lo usar(amos estrictamente para decir a las
personas cmo probary depurarpro"ramas en Java. De hecho, muchos de los tips describen aspectos de J

va que
reducen /apmbabilidadde "errores", In que por consecuencia simplifca losprocesosde pruebay depuraccn.
36 Observaciones de apariencia visual
L,! oflfcemo.r Observacones de ,pariencio vi.rualpara resaltar/as COIII'enciones de la llteljitz grficade llstwio.
Estas observaciones ayudan tt los esmdlallles a disearsuspmpia, interaces grfcas de usuario en conformidad
can las normas de la industria.
52 Tlps de rendimiento
A /o lwgo de nuestro e.tperiencia, ense1iar a los esllldiantes a escribirprogrmas daros y comprensibles es, sin
duda, /a meta mcs imporcame para el primer curso de programacin. Pero los estudiantes quieren escribirlas pro
gncnucs que sean ms rpidos, que usen /a menor cantidad de memoria, requieran el menor mmem de pulsaciones
de tecla, o que destaquen de alguna olmmanera. Lvs eswdiantes rea/meme se preocupan por el rendimiento. Quie
ren saber qut es la que pueden hacer para mejorarel rendimiento de sus progzma,. Espor ello que nosotros re
saltamos las oportcmidades pam mejorar el rendimiemo de los prvgramas: hacer que los programas se ejecu1e11
ms rpido o minimizar la cantidadde memoria que ocupan.
23 Tips de porabilidad
Una de las carcter(sticas qzw supuestame

1e ltan lletado a Java ." la ,ama es su p

rtabilia
.
"zniversa/", or lo
que algunos programadores asumen que sz unp/ementan una apcaczn e11 Java, esta sera pefectamente por
table 11 trwJsde tods las plataformas Java, forma automtica. Desafortunadamente na siempre es el casa. In
c/uimos Tlp.t de portabilidadpara IJyudar a los estudiantes a escribircdigo portable, y para ofrecer Ideas acer
ca de cmo puede Java logrr s11 alto nivel de portabilidad. Cmo programar en Java tiene menos de estos tips
que nuestros libros, Cmo pmgramar en C y Cmo pmgramar en C++ debido a que Java est d/seJado para ser
portabie de arriba abajo: y para lograr estaportabilidad, se requiere de un menor esfumo por parle del progmma
dor de lllva que del que trabaja l'0lI e o C+t.
1 35 Observaciones de ingeniera de sofare
El paradigma de la pmgmm<ICirn orientada a objetos requiere de 11/l<l completa rec:onsldemc/n sobre / mcmera
eII qcw cmzstmimos los sistemas de sofware. Java ' lM/enguoje 4ectivo pwa lograr una lm
.
ell

ingeniera te sof
ware, Las Obsevac/ones de ingeniera de sq{nvare IYllitan /os a.vzmtos de arqullectura y dc.wno, lo ual qjel'la ltt
construccin de los sistemas de .rojiwarev tspecialmenle /o,r de gran escala. Mudwde lo que los estu/iames aprcn
dan aqui les sa zltil talllo en cursos de nivel superior como en la industria, a nll'dida que empiecen a trbajar
con sistemas grandes y complejos del mundo real.
Resumen (954pu1
1
tos de resumen)
Cada captulo termina con elementos pedaggicos adicionales. Presentamos un resumen completo del cap
.
tu
lo, en forma de lista. Cada captulo contiene un promedio de 38 puntos de resumen. Esto ayuda los cstudmn
tcs a revisar y reforzar los conceptos clave.
Temli1olog(a (2166 tr11inos)
En la seccin Terminologa incluimos una lista en orden alfabtco de los trminos importantes defnidos en el
captulo; de nuevo, esto sirve como un refuerzo adicional. Cada captulo contiene un promedio de 87 trminos.
437 ejercicios de atl!evaluacil y sus respuestas (la cue1ta i1cluye partes separadas)
En esta seccin incluiros diversos ejercicios de autoevaluacin as como sus respuestas, para que los estudian
tes practiquen el autocstudio. Esto brinda la oportunidad de familiarizarse con el material y prepararse para in
tentar resolver los ejercicios regulares. Se debe alentar a los estudiantes para que hagan todos los ejercicios de
autocvaluacin y comprueben sus respuestas.
858 ejercici1s (la cuenta i!cluye partes separadas)
Cada captulo concluye con un conjunto de ejercicios que incluyen un sencillo recordatorio de terminologa y
conceptos importantes; escritura de instrucciones individuales en Java: escritura de pequeias porciones de m
todoH y claes en Java; escritura de mtodos, clases, aplicaciones y subprorraas completos en Java: y escritu
ra de proyectos fnales. El gran nmero de ejercicios, a lo lurgo de una extensa variedad de ;rcas, permite a los
profesores disear sus cursos de acuerdo con las necesidades especfcas de sus audiencias, y moditcar las asig-
xxiv Prefacio
naturas del curso cada semestre. Los profesores pueden usar estos ejercicios para asignar tareas, realizar exme
nes cortos y los exmenes principales. Lus soluciones para la mayora d los ejercicios se incluyen n el CD de
recursos para el instructor, el cual est disponible slo para profesores, a travs de los representantes de Pear
son Educaci6n. [NOA: No nos escriba p
ara solicitaros el CD del instructor. La distribucin de este acce
sorio est limitada estrictamente a
p
rofesores universitarios que tienen este libro como texto de sus cur
sos. Los profesores slo pueden obtener el manual de soluciones a travs de los representantes de esta
em
p
resa.] Los estudiantes y lectores pueden obtener la solucin de aproximadamente la mitad de los ejerci
cios si compran la quinta edicin del Java 2 Multimedia Cyber C/assrUom, 5" edicin, producto en ingls que
ofece adems muchas otras opcione& muy valiosas, y es ideal ya sea como autoestudio o referencia. Tambin en
contrar disponible en nuestro sitio Web (www . deitel. comi otros productos de apoyo a la quinta edicin de
este libro, los cuales estn disponibles en tiendas d libros en lnea como ww.info::. com. Si usted ya tiene
el libr d texto, puede comprar el producto Java 2 vultiHedia Cyber Classmom, 5" edicin (ISBN# 0- 13 101 769- l )
por separado en ww.InformiT. com/ cyberclassrooms.
8ll|ogroe
Se i ncluye en este libro una extensa bibliografu de libros, artculos y documentacin de Java 2 por parte de Sun
l!icrosystems, para que d lector pueda profundizar en los temas aqu descritos.
Software incluido con este libro
Hay una variedad de heramientas de desarrollo en Java, disponibles para su venta. Aunque no son necesarias
para empezar 4 trabajar con Java. Escribimos e;te libro utilizando solamente el Kit de desarrollo de soft ware
Java 2 Sta/ld[lrd rdition (J2SDK), versin 1
.
4
.
1. Para su conveniencia, este kit se incluye en el CD del libro.
Siempre hay una versin actualizada del J2SDK que puede descargarse del sitio Web Java de S un en java. aun.
com/j2se. De este sitio tambin se puede descargar la documentacin del J2SDK
.
Gracias a la cooperacin de S un, tambin pudimos incluir en el CD un poderoso entoro de desarrollo inte
grado (lDE) de Java: SunONfl'M Studio 4, Communit Edition. ste es un IDE profesional escrito en Java, que
incluye un diseador de interfaz grtlca de usuario, editor de cdigo, compilador, depurador visual y mucho
ms. Huy que instalar e\ J2SDK primero, antes de instalar Sun ONE'M Su/io 4 Community rditioh. Si tiene
preguntas acerca de\ uso de este software puede leer la documentacin que viene en el CD, o puede tambin
leer la publicacin, en ingls, Dive Into Sun ONE studio 4, Communty Edition de la serie D!\EINT. Este
documento est disponible en la pgina w. dei tel . com/books /downloads . html, junto con los re
cursos para esta quinta edicin.
El CD contiene los ejemplos del libro (incluyendo la implementacin del ejemplo prctico del elevador) y
una pgina Web HTML con vnculos a los sitios Web de Deitc\ & Associats. Inc .. Si usted cuenta con acceso
a Interet, puede cargar esta pgina Web en su navegador para que obtenga un rpido acceso a todos los recur
sos
.
Adems incluimos varios captulos y apndices de otras publicaciones Deitel. Se incluye material sobre
XHTML y Hojas de estilo en cascada (para usarse con el captulo 24, Servlets y con el captulo 25, JavaServer
Pagesl'M). Adems se incluye material sobre el Lenguaje de marcado
c
xtendible (XM) y las APis de Java pa
ra procesar x, que ahora forman parte del J2SE t .4,
Accesorios para la quinta edicin de Cmo prgramar en Java
Este libro cuenta con diversos accesorios, todo en ingls, para los profesores. E CD llamado Instructor
Re;ourrc CD (IRCD! contiene el Manual del instructr con las soluciones a la gran mayora de los ejercicios
\
que se encuentran al fmul de cada captulo, y un archivo llamado Ttst lem File con preguntas de opcin ml-
tiple (aproximadamente dos por cada seccicn del libro). Adems incluye diapositivas de PowerPoint con todo
el cdigo y las !iguras del libro, as como una lista de los elementos que resumen los puntos clave del texto.
Los profesores pueden adaptar las diapositivas segn sus requerimientos. Estas diapositivas de PowerPoint pue
den descargarse del sitio w, dei tel . com, donde se ofrecen recursos tanto p<tra profesores como para
alumnos. Pura los profesores, el Sitio Web Companion ofrece material (Syllabus Manager) que les ayudar a
planear los ctrsos en forma interactiva, y a crear programas de estudios en lnea.
X
prefacio
f
.
de la funcionalidad del Sitio Web Companion. Las recursos
Los estudiantes tambin pueden bene cmrse
ue se incluye para este libro son:
q
. Q
Diapositivas adaptables de PowerPmnt .
Ejemplos de cdigo fuente.
bt d precedencia de operadores, con
, d' s del libro (como una lll d
e
Materiales de referencia de los apen ce
.
unto de caractrcs y recursos Web ),
] .
l
. d
. 'tulo del libro para los estudmntcs son:
Los recursos ( e c.t t capt
, Objetivos de cada captulo.
. 1 sumen ue\ captulo).
, Elementos destacados (por ecmp U re
, Plan general.
.
ermrel Buel!aS prcticas
d
macil Tips para preverur , '
Tips (por ejemplo, Errores comunes e ,
visua
'
l Tips d<! portabilidad, Tips de rendimiento y
. ,
Observaciones de +.-:c+
,
de programacwn,
Obsen'aciones de ingeniera de software).
\
. , que incluye las respues-
. .
, cicios adicionales de autoeva uacmn
.
Gua de estudio en lnea, la cual contiene ecr
o;ciona una retroalimentaci6n inmediata al estudtante.
t cortas (por ejemplo, verdadero/falso J y prop
, .
. . erial anterior, en idioma ingles, se cncucntr,l en
El :irio Web Compamon con todo el
.
mut
ww.pearsoneducacion .net/detel.
Java in te Lab
H
J

n t/Je Lab Lub Mamwl to Accompally Java Ol\ tu


. tt 1 completo es ava l
'

) lroduc-
Este manual de laboratono (cuyo u o

1 , enta a este libro (Cmo nvgramar en ava ' y


.
d
'
Pmarmn, 5" edicin; ISBN O 13-1 01631 -8 ) comp
.
m
d' in median\una serie de tareas de laboratono .
to ocional Java 2 Multimedia Cyber Classr

om, . e
t
'
al materi
Jl de lectura. Este munuu\ de labP

tono
iadas para reforar la comprensin del estudiante
.
en cu.l,
ases rogamadas en fonnu regular y supc!VIsudas
est diseado para laboratorios cerrados, q
u
c
.
consJ sten
e

celente

mbicnte para el aprendizae, ya


.
quc
os
e
stu

or un profesor. Los laboratorios cerrados olrecen un
i. ara resolver problemas de laboratoriO cutdadosa
iantcs pueden utilizar los conceptos
_
Presendos e
i..s de evaluar la comprensin de sus estudit

ntes c
,
on
mente diseados. As, los profesores uenen mas p
d
osi
,
t . en el labomtorio. Este manual de laboratono puede
.
d el proarcso C es os
respecto +l matenal, supems
.
an

.
"
. . autocstudio.
.
. v
usarse tambin pura laboratonos abiertos
:
tareas y
l? 15 17 de este libro. Cada captulo del manual se lVI
f
.
n tos capitulas 1 a ~1 Y
.
. b (Lab Exercrses)
Java ill the Lab se en oca e
. p. l b Activities) ;]erczcws le a orarmw
.
de en 3 parte>: Actividades previas al l

Jborw(
\cvties).4 Cada aptulo contiene obje,ivos que mtrodu

cn
Y
4
c
tividades posteriores al
laborato
! l
o
'
P

t
l
'
d as
'
gnaciones que permite a los estudtantes marcar cuales
'
to on una sta e
d d f rma que los es-
los temas clave del \aboratorJO, un \
,
.
d l . 1 del laboratorio est perfora a, e o
.
. .
os ha asionado el profesor. Cada pagtna C manua
.
) Nuevamente, es prudente menciOnar que
eJercc "
. . uestas (en caso de ser necesano .
. . . o[' .
tudiantcs puedan entegar sus rcsp
.
t f'ac' o se encuentra en tdmma lH_es.

ncwnado en es e pre
1
1 +
todo el material complementano me
. . d s se encuentran en formato e ectromco.
.
.
.
d 1
.
ccwnes antes mencmna a . . ]
l lu
Las soluciones a los eerciciOS U as s
.
t
licitan a los representantes de esta edtlona ' as so .
Los profesores pueden obtener estos mate
.
nales si os so
ciones no estn disponibles pura \os estudtantes.
---------------ul <le \uboruwrio
t
ambin esltn tllsp0nibls en conjunto a t
ravs de un paquc-
l Cmo pmrnnwr r0 Java, j tdicin, y e mun
.
l .
te espcciai [ISBN// 0- . 02719-).
' tienen los exlensos conjutus ue acvidudeA ..

en ;::naJ:t
o

:
;
:;
4. J..as prctca de ..cnpituloH
-

_l
a
r
_ c
a
bo lu prcticas de \
u
lmruto
n
o
s
en
':r:le
t

u
cden escribir a
lerioros. Sin embargo, \os pro eso
, . complejos. Los profesores con requennucn 0
clcios que hemos incluido sobre stos temas mus
C61La1C81 L1 . Co&.
xxvi
Prefacio
AcI|v|OOO0p|0v|OO||ObO|OIO||O
S
,
e prete

de que los estudiantes resuelvan las actividades de


.
. . .
cada capztulo del presente libro Estas actz'v'd d ,
l a secczn Prlab Jctmtws despus de estudiar
t 'nl

1 a es ev uan la comprensi d 1 d'


en presentado en el libro de texto y 1
n e os estu wntes en cuanto ll mt
torio. Los ejercicios se enfocan en tcrm
'
'n
os

pr
:
para pura los ejercicios de programacin de la sesin de lbor
:
z

t 1
. o ogza Y conceptos de program
1
au oeva uacHin, Las actividades prevaN nl l b
. .
.
aczon Importantes, y son efectivos para
e
bi
a oratono mcluyen Eiercicm "
.
spacws en anca, pregulllliS de relpuestas co t
. . .
d
, e asocwcwn, ejercicios de llenar
tes que detenninen qu es lo que haen pe
r as, e}ei'icws e pmgramacin (stos solicitan a los estudian-
:
. quenas segmentos de cdigo
'd d
.
Y e erclCros de correccin de cdi ( , t 'd
. '
sm neces a de ejecutar el programa) go es os Pl en a los estudzantes que

d t' f
1
en pequeos segmentos de cdigo).
; t
en l zquen Y corrijan todos los errores
E0|c|c|OO0 |ObO|OIO||O
La seccin mlis importante de cada captulo es la que ca , d '
.
los estudmntes cmo aplicar lo aprendido C,
rrespon L a Lab Exerrses. Estos ejercicios ensean a en amo pmgramar en Java 5" d' - 1
p

ogramas en Java. Cada laboratorio contiene uno o ms e


.
e
.
,
. '
e re ron, y os preparan para escribir
czos de laboratorio contienen lo siguiente:
1 rctcws y un problema de depuracin. Los ejerc-
Los objetivos de/ laboratorio (Lab Ob' t' ) , .
jec 1ves resaltan los concept cn.oca el eJercicio de laboratorio.
. os espec zcos sobre los cuales se
Las descripciones del problema (Problem Descri
.
.
gerencias que ayudan a los estudiantes
.
.
l
. pllons) proporcionan los detalles del ejercicio y su-
.
d 1mp cmentar el programa.
Las sailda.\' de muestra (Samplc Outputs) ilustran 1
.
favorece a la descripcin de los bl . :
e comporta

mento esperado del programa, el cual


. pro emas y ,yuda a los cstudmntes a escribir sus pro amas
Las plann/Jas de progmma (Pro"ram Tem lates) tom
gr .
zan lneas clave de cdigo con cment
.
p
d
.

n los pr

g
;
amas completos de Java y reempla-
.
<nos que escnben el codzgo faltante.
L
.
os trps para la solucin del problema (Problcm-Solvin T' .
dmnte necesitan consiuerar cuando re J
1
.
g
.
lps) resaltan los puntos clave que los estu-
sue ven os eJerctctos del laboratorio,
Las preguntas y actividades d seguimiento (Follow-U Q .
.
_
.

tes que modifquen las soluciones a los ,


. , p uestzons andActiVlties) pzden u los estudian-
] 1
i "JerciCws, que escriban nuevos a as so u1oncs de sus ejercicios de lab t
.
.
programas que sean similares
l
.
. ora ano o que exphquen las opc' d 1
se e zgzeron cuando resolvieron los eierc
.
d 1 b
.
IOnes e lmp cmentacin que
1cms e a oratono. .
Los problemas de depuracin (Debu""ina Probl
. .
errores de sintaxis y/o errores laicas
"
:t
"
1
em
l
s) conszsten de bloques de cdigo que contienen
d
o a erta a os estudiantes sobr 'bl
.
que puc en encontrar durante el proceso d
.
e os posz es Upos de errores
e programac10n.
AcI|v|OOO0pOtI0||O|0O||ObO|OIO||O
Por lo general, los profesores asignan actividades osteriores al
.
!antes o para que los estudiantes adquieran ms
p
. .
laboratono para reforzar los conceptos impor
Postlab Activitie.\' evala el conocimiento d 1 nl
expenen
b
cm en programacin fuera del laboratotio. La seccin
m
'd
e umno so re el material prev

al l b
.
zsmo, y PI e nl alumno que aplque el conocimie t d
. .
d
zo a ora tono y los ejercicios del
proporciona dos tipos de actividdes de p

_
o a um o para crear programas desde cero Esta seccin

' rogramacmn CJCrcicio d , d'
y
czczos de cdigo son cortos y sirven como repuso d
.
;
s e co tgo y retos de programacin. Los ejer-
ratorio y los ejericios de laboratorio Estos eJe
.

spue
.

de haber cumpldo las actividades previas al labo
mentos de programas que utilicen los onc t

cczos pl en a los estudiantes que escriban programas o seg-


0 t d'
ep os Importantes del libro Los 1 d
s es u zantes aplicar el conocimiento ue han ad uiri , .
.
.
,
.
e os e pmgramacin permiten a
Las sugerencias, las salidas de muestz

a
/
a el seu

oc
?
en clase en e
!
erczczos sustanciales de programac
in.
estos problemas. Los estudiantes que completn d
Igo se
?
roporcmnan para ayudar a los estudiantes con
ciert
1
+ e manera CXI!osa los rtos d

,
amente Jan dommudo el material del mi L
e prgramacrmz de un captulo
para su descurgu en g_
dei tal aom/bo
sm
k
o.
/
a
d
s respues
m
s u los retos de programacin estn disponibles .
O s
ownloads . html.
Prefacio xxvii
Java 2Multimedia Cyber Classrom, "edicin, y The Complete Java 2Training
Course, "edicin
Hemos actunlizado nuestra versin multimedia interactiva opcional del libro -Tire Java 2 Multimedia Cyber
C/assroon4 5" edicin (CD para Windows)-con bastante uudio adicionnl, incluyendo el nuevo materinl sobre
desarrollo de buses de datos con IDBC y desarrollo de aplicaciones Wcb con servlets y JuvaServcr Pages. Este
recurso est cargado con caractersticas electrnicas que son ideales tanto pura el uprendizaje como de referen
cia. El nmero ISBN del Cyber C/assroom es 0-13- 1 01769- 1 . Los Cyber Classrooms de DeiteJTM por lo gene
ral estn disponibles en CD y en distintos tipos de formatos de capacitacin en Wcb.
El CD que viene ctm este manual proporciona una introduccin en la cunl los autores revisan las caracte
rsticas del Cyber C/assmom. Los 21 9 programas LrVE-CODETM de ejemplo que vienen en el libro de texto,
verdaderamente "cobran vida" en el Cyber Classroom. Si desea moditicar un programa y ver el efecto de sus
cambios, nl hrcer clic en el icono del disco fexible el cdigo fuente "despega" del CD y "cae dentro" de uno
de sus propios directorios, de manera que pueda editarlo, recompilar el programa y ejecutar su nueva versin.
Adems, el Cyber Classroom contiene el texto completo (en ingls) de Cmo pmgramar en Java. 5" edicin,
en un fonnato especial para bsqueda de texto.
Asimismo, el Cyber Classroom proporciona ex:menes de autoevaluacin (con respuestas) para cada cap
tulo del libro, Estos exmenes son poderosas curactersticas que permiten a los usuarios medir su comprensin
de los conceptos de programacin que presentan los captulos. Cada pregunta del examen tiene un hipervncu
lo a la seccin, dentro del libro, de donde se deriva la pregunta. Esto permite a los usuarios revisar el material
apropiado del captulo antes o despus de responder a la pregunta. Adems se proporciona un cuadro que pre
senta los resultados, por captulo, de cada examen del usuario.
El Cyber Classmom se basa en formato estilo navegador. de manera que recuerda las secciones que usted visi
t recientemente y le permite moverse hacia delante o hacia atrs entre ellas. Las miles de entradas del ndice estn
hipervinculudas al texto correspondiente. Las entradas de la tabla de contenido son vnculos dinmicos, de mane
ra que nl hacer clic en el nombre de un captulo o seccin lo llevar de inmediato al texto de referencia.
A los estudiantes les fascinar el hecho de que d Cyber Classroom ofrece las soluciones de cerca de la mi
tad de los ejercicios del libro. Estudiar y ejecutar estos programas adicionales es una excelente manera de que
los estudiantes mejoren su experiencia de aprendizaje con cdigo nctivo.
Para una lista completa de los Cyba C/assrooms y Complete Trining Cmme.v disponibles y futuros, visite
el sitio Web de los autores en: w dei tel. Ccm o w4 InforiT. cam/ dei tel.
Advanced JavarM 2P/aform How to Program
Nuestro libro complementario, en ingls, Adva1ced java 2 Platonll How to Pmgram se enfoca en la P/ala
fomta Java 2, Ellterprise Editio (J2EE), y presenta caractersticas avanzadas de esta plataforma de Java e
intoduce la Plataforma Java 2, Micro Editio1 (J2ME). Este libro est destinado a los desarrolladores y estu
diantes universitarios de nivel superior en cursos avanzados, que ya conocen Java y desean profundizar ms
sobre este lenguaje. Adems presenta nuestro libro distintivo LNE-CooJI'M, con programas funcionnles com
pletos y ms de 37,000 lneas de cdigo. Los programas son ms complejos que los presentados en Cmo
programar en Java, 5" edicin. Este libro expande la cobertura d la Conectividad de bases de datos en Java
(IDBC), los servlets y las JavaServcr Pages (JSP) expuestas en Cmo programar en Java, 5" edicin. Tambin
cubre las tecnologas emergentes y ms avanzadas de Java, que son de inters para los desarrolladores de apli
caciones empresarinles, incluyendo el Modelo-Vista-Controlador; Java 2D y Java 3D, Modelo de componentes
JavaBeans: Seguridad; Java 2 Micro Edition (J2ME) U Interet inalmbrica; Llamada a mtodos remotos
(R),Enterprise JavaBeans (EJBs); Servicio de mensajes de Java (JMS): Jini; JavaSpaces; Jiro; Extensiones
de gestin de Java (JMX); Arquitectura comn del agente de peticin de objetos (CORBA); Redes de igunl a
igual; Servicios Web; XL e Interfaz nativa de Java JJ.
Java h0bSsrvices for Exparlencsd Programmers
Este libro, que forma parte de la nueva serie Deite/ Developer paru profesionnles de computacin, utiliza
nuestro conocido mtodo LIVE-CODETM para evaluar las mtls recientes tecnologas de XML y Javu para crear e
AYlll
Prefacio
|a|e.:se|.|as\ea,|a.|a,eaaae|Paquete par desarroladores de Servicios Web en Java (Java Web Serices
Developer Pack). ||||aces|+a|:.|aa+|asc|es|aa+|esae|+|aaas.u+aeea|eeaaeaa+.aaeaamae|+|l+-
a+saae|+s|e.aa|a.+saese|.|as\eaea!++

1+a|eaes+ae.a+aa+:+|as.asasae.|ea.|+s.aa|+.|a
a+|esaea|e|sae|aae|+|+asaae|asse|.|as\ea,a.aasa|eea|a++|as.asasea.aa|+.|a
a|stuaa|a+,a++.|a++az+a+ea!++.|as|e+saese.aaeaeaes|e||aasaa.\M|,uea|.|aaes
ae||asaeaa:aea|as(DTDs); Maae|aaea(e|asaeaa.aea|as(uu
M),|+A!ae!+++:+c.:sa-
|ea|aae\M|,!/x|;,1+as|a:+.:aaesaeaa]+saees|||ae\|eas|a|es
(XSLT'M) ,|+sae|+as|a+-
.|a++XML (1/X),|a|a.a|as||eae+..esa+aa].|as|u/|;.|eaa+(eaeaes.|.|aaese|.|as
\ea,\u|;,|a|e+|ea|a,aes.aa||ea|a,aes....|aaa|es+|(0uu!;,|+/|!ae!++++ke|saasae
XML |1AAK),/|lae!+++a||++a+s+a.ea|:ea|asea|asa+s+a+sea\M|(!/\-k|c;,/|!ae++
++Meas.e.+\M|(/XM),|+/"!u/|.aa+a]aa|as++++(//;,ea|a+aae|asse|.|as\ea
.aae|8|e|aesa.|e|sseaa,|;,i|a+a|||+|X (X |a+|ae;,c||+aa.aa\M|,XM||a.,-
||aa;,|se.||i.+.|aaees||aa:.|+es.aa\M|(\rM;,|eaa+]eae+.+caae+se.|aaesaesea|-
a+a,/M|;,|ea.+]eae+.+aaae.aa|a|ae+..esae\|eaa|a|e(\/cM|i,,|ase|.|as\ea|a+|+-
a|.as.aa
!++2 M|.a|a|||aa(J2
MTM
)
.
La serie Course Management Systems: Blackboard, WebCT,
Coursecompass5M y Premium CoursecompassM
|+|eae|.aa|ea|aaae|+se.|e|a|caa.|a|++.|eaa+(esaea++.|aCmo programar aeue||e|,|a.|a-
,eaaaes|e||aa.sea+|a|e+aaea.|asae|asaa|+es|e\|asae|+se|ecaascM+a+eea|,s.es,.a-
aea|+.|aa+a.caaseca+ss,\eac1 0a+es|ae]a+a+aecaaseca+ss,||++a+|e|a
caasecer+ss,es|+Ja|saa|a|e++|+a|a.+ea|.|aaeCmo p!Vgrmnar en Java. 8s|as|e\|as+,aa+aea
|+.e+.|a,e|+ae]ay e|asaaesats||.+a+saemar|ea|+s,:e++saeeaa.+.|aa+s+aasea\ea.caa
ese+|e|+|,e+aaa,++a|esams.|asa|esaesaeaea+aa+seaa+sae|a|aaa..|aaea+|as.
|+.|aa+a,caaseca+ss+aa\eac1a|re.ea.
Caracterstic:s para crear y personalizar cursos en lnea, .aazaa+s++.a|a.+|at+.:aae|
.a.a(ae]e|a,a|||.+s,|+aesaees|aa|a,+aaae|as,+s|a+|a+s,+aas, e+|a+.|aaesaeeaa|
|ea|a,sea||ea|aac|a.esa;,|r+|ea|+sae+a|a|s|+.|aae.|+ses,es|aa|+a|es,aa||ac
aec+|||l.+.|aa.s, ae.+|ea|+s++ea|es,+s|eaa+|a+s,aa.+|eaa+|a,+s|r+|a+s.
Herramientas de comunicaciones +..+,aa++.e+,+a|eae|+se|+c|aaes|a|eesaa+|esea-
|e|ascs|aa|+a|es,|as:eesaes,|aJa,eaaas+|aaesae.aaes+.|a,|z++se|e.|ai.as,aa.a-
ea|+.|ea:a+||a+,| :as.iea|s.cs|a,ea.eae|e.|a|.a|+aa. Henmuientas de evaluacin flexibles aee.r||ea+|a|esa:.e..aes||aa+|asea||ae+,e+e-
aes|a.a|+aasae+ae+a|e.|++||e.|a,,ae.+||.+a,a+asea||ea|a+|as:esa||+aas.aae|e.-
|||a+a,1aa+s|+se+|a+.|aaesaeaea|naaa.|.:eeae|||aeae.+|.'I.+oaaes++aa+e|i.|ea|e
+a|a|s|+.|aae|.asa./ae+s,\eac1e||e+|as|as|.a.|aes+a|a|s|+e|||eaae|as
.aes||ama|asea||ae+.
||Material de apoyo ++|as|as|c.|aesseea.aea|+a|saa|a|eea|a+|a++|es|a,++
.aasa||+ea|.ae+.
/ae+sae|+sae+|ea|+saeseea.aea|+a:a| +.|aa+.a,\eac1,
caaseca+ss|a.|a,e
La pginu de inicio de CourseCompass, | +.a+|a+.ee|.asa|+a|+.| | .aaa+e+eaes|e||ac

La+|+a|+ae.aa|ea|aae\+aa|a|eaee||e+|as|as|+.|aesee|.aa|ea|aaae|.asa+||as|+a
|ey |a.a|+se.aa.a+|a|ese..|a.
Secciones de ayuda en lnea "How Do 1", es|+aa|saa|a|es++|asasa+|asaeea|eeas|||as
.aa+,aa+esaa+||z+a+++|as.asas,|a.|a,eaaa|+s|as|a..|aaes+sa++sa+++e+a|+a-
s|||+sae|ae-|a|a|',(aea,+s
Gua del instructor Quick Start, a|e.ed |asc|esaes|+a.|aae.e+.asasea||ae+ea|+a-
|eaasea:|||ae.esa,+sa++sa.
s
|+:+aeas|.a.|aaes+|a||+sea|iae+,+eaae+s+.e.aa.|+se|ecaaseM+a+eea|,s|ems,ae
.aeao.aa
+|:i|+|ae+a,a++es|e||ac,|s||e|+s+|a+s\ea
Prefacio
| +.|aa.a.w. blackboard. com
, VebCT: w. webct. com
ursecompase . com , caas:ca+ss.Y. U o
xxix
esarroladores (DEJTEL Developer) La nueva serie para d
. . u a|ea.aa||+s|e.aa|a:+s|eaa|+++|as /ssa.|+|es.!a:,es|+e+||z+aaaaa.aa.rsa.aa
.
s. e+
eaaes|+se|e++aes.a||+aaesDmrerM
ue.|e|

a
.+|esaesoftware de |+|aaast|+,+.+esae| |u:.aaea|aa
W b Services for Eperienced Pmgrammers
cies...
r Series Web Services A Tec/mical lntroducto ,_ava
1 :e-a|+aJava 2 Enterprise Ellitlon, Java 2
Dev
e
lo
p
e
ata

a|

|a
,
,|.as||aasea
l
+se|e
A
es|a
'

_
a
_
as
_
e

Ba
o
s/e NETfor E
x
perienced PIgrammers
,
seea.ae .

ASP NETw11 1 Jsr

i 1 cm
' 1' ro Etlition NETA Technicul lntmductwn, .
a .r+s |a|+a|s||ee|s|||aww. de te U
IL ' .
. 1 p , ammers ,a: as . ASP .NET with Cfo
r
.
E
x
pe
n
encel
, _'
|a|asaa||.aaas,(a|aasaees|+se|e. ++e|+s+.|a+t+..aaesea|aaas as
Paseo por el lbro

|+a|esY .aaaa+|aaaes+a||aea|+
a am.e.aa.sese.

| sa
||+aa|aaees|aa|+aaaae|as|eaa+,es L
+
'
a asasai|+eae+||.+.|aaes.ae..o ,e
s
|
+
|

.(
+a,||aa|a|aae!++|e+,aa+

+aes+.a +
a
:a
a
e
|

as|e.s,.+..|e
(s||.+sae!++a.e
as+
+.a+

a is|+za+ae as e
e
| |ae|+se:.|aa+eaasaa+. a a+ t
1 a.+aa+s
|a|+aae|aaae|||aa.
Wcb": H+a|+saae|aaesaa +s.a

' e 't lo 1 "Introduccin a las computadoras, Interet y


aeea|s|a|+saaee|aes+a||aae|a|ea
apl u
| |a|aesea|+aa+
.
a|a:es,

+ .asea++a.

|e
'
.
.
+aaa a |as|eaa+,eseas+
a '
'""
"
'
.
'
`,'a(sa|:+_+,:do

e+r

_
|e|aaa.aa|as|eaa+]esae.||am
.
e. L +
aaca++.|a.aaea++. |+.ra..acsea+
L

|aaa...aa+aaea|am
, '
J + ||.+||a|am.|a,eaa.:.i .
`
.
a |as+taaesaea
'
seaa
.
,,,,,,,, 00 aa]e
,e||
'"
a

ae|

aa
' `
+
"

||

|,tcaa:c|a:|, '
.

,
'
C ptulo 2 "Introduccitn n lus aplicacles e Ja
E
v.t
. |a|a|ataa.e|as.aa.e.as,.aas|a..aes +-
a

a a+m+.a!++. s.e....
.1
.
raas|.+a+|asea
aplicaciones cae|e

aa+,e e
. .
+aaes
_
asa-+
aees|e.+
|
|a|

a.as|
|
'
|
a.
a |
.
.

ae|asa
.
a a.+.a+|asaaPW
o
r'
t asa+|aea
'
.a|ee |e.+ a.
s
|
..+s
|.|

|+ .+ae|ase+e|asa+|a,,.aaa.eaea
a
..|as

e
aaea|esaeinterfaz grdfca de usuario ,0|;
++a.

a a|.a|ee|asa e.a P
. t -
.
s
a ea|+a+,s+||a+se||e++.+ ae
decz'siones ,|.soperuczones a
n
tmetzca .
.esas \
'

a|+||+aaae|+toma e
+a+s
||.+||a|a2 |+a|eaa|.e.eaa+a+|.s.s
d Java": |esea|+|assubprogramas !++,aesaa

N+-
Ct tulo 3 "Introduccin a los subprogrmas
| ee.a|+:seeaa+e+aaes\ea(.aaN.|s.e e!++a|se+aas.+|.+asa|+.se+|+esae(a|eae
a
,
|+.:|asae|assaaa++saeaes|+..aaae

+|a.,M|easa||!a|eae||\|ae,.se.+.|a|a e
.+sae!++ae||e+a+.+aatareus sam+e+|as
.
|!uKuesaeses.aa.eassaaa

. .
t: |assaaa++s,|+s+|.+.aes
sem.|a,ea.aae -
. i as,a
|
i-ea.
'
+sea e
|
a.+sae|.+.ta|a2, ,e\||:+:eas|+ss.
'
eea(a.+eae|a.esaaeaes+a||aaea_++s. s

C 'tulo 4 "Instrucciones de control: Parte


a aees|e desamiJar aaa..+|aa- |e
,''|+a|-
a
'
a

+
__

a
_
p
moioc,igo. Trilo ~''"" _
.|aa+|ea!++,|a:|a,eaaa| +e+ :+.aa
++|+|a+aeae.|s|aaes(i
f eif . . e BO

|| ae|asta..|aaess||esae.aa|a|
|+aa,|+ee||:|a.aa|a|+a+a
|
'

ru
(wh
v
i
o
_
e) 1+a|ea+a+|l:+as|+ee||.|a.aa
a
|c|+a+
ea

|
a
a

,
.
_
|

a+.|aae!++.|s|e.+.|a|aa||||-
e|:..aa +
a

eea|a e.e
a 1 a+.-
.ea||ae|+,,se|a|aaa.ea|sae+aa:s e
as|r:| i!a]aae.aaaa|+t+esae.+a+aa+ e +s
^
+a|+.+sae+.|||a+as.|esea0M|++H
.
0 5a:.aa|c|ae
.|aaesae.aata|
2" caa||a+a+a|+aaasaae|+sas .|e:.a C Captulo 5 "Instrucciones de control: te
'
.
|a..|aaeeee.|ado . w
hi
le, |+ms|a !

ae

e|asa;|+|asta..|aaeee|..a
f
or
,
.la ^
_
.a|ease|r.|a,eaa+a|s.as|asaa
'asae-
++,.a
'
. , . h 1
.
.a..|aaesbreuk y .aai:aae. .|aa:se|e..as.|. +sms
1
.+aaes||.asa:!++

||+aaae|asaa]e|as.|asaa]e|as.aa||eae

a+|a

+- C 'tulo 6 "Mtodos'': u|e.e+a+a+||sissae|s


a a| assaae|as|aaasae|+a.ba|e..ae +aas+as,aa|a+aese]e.a|+a|es||.+a+se|aaas./a + a

Prefacio
0l0yIm0|000!0m0000I!0I0|0m0I000 p 1
.
.

000IIm0|00 000|00|0000!0 l!000!|V|00

.
0

!S0000I000O00m0I0|00l0,0I00!lRl0
0!l0 ! !0000|!!0!m 00!!00Im00Ic 0li0
.
I

00m0

00 0!000I000 0l0|I0l0 6 00000


00!i0ll0 l0 !0im00!0 00 1II0my 0

e 0

0, 000Olm00I0 l0 !0im m !000 q00

I00I000 Ll I 0 0

0ImIU!g00V0|0m0I000I0000lmIm 0
.
. 0m 0 0 !00! 00m0I000(0 000|!
0 0Xl|0cl!m00I0.
_
m0|00!000Im
0
_
0m !0
``
0m!0y00
m00I0000|I|0I`h!m"
)0m0I|Y
_
Ca
ptul 7 "A 1
0 0eventos y 0lmanejo de eventos
U rrcg
D
LXl0! ll|I00!000' I 1
'
0000j0I0,000Y|0000|ml\00l00m!0m|

00!

d 600y

0l
|

0Yl0!0. L0 |I0l0 00!Y


00!0l0U00I0!0|00 000I0 00!!0l00 1
V .0
0
0 l 0H00I00U00I0.L0 0I00|I0l000lm0
+ 000m00I0 00I0 00l m I| P
.
00m0!000j0ml0,I0I000l0!!0^ 0000
.
Im0 0. q0Im0!000 !000I0
'I

1
[ I Im00I00l000m000l0m lI0
+
0S0 0Il00 mY0I|0 l m!\|0l '

0 I 0B00I00l0. L0 00ml0 00
0
CR0000m000 00 l0f!0 1 .
`

0I!i0l0l0m0I000y00|0l!00
.
, 1
0, 00!0!U0000|I0!m 0l!0000

1
000I00 0m000l0T
.
0 0 0
.
e|m0).U00!0I0!|I|0000I00|I0l0 ' ' 0 0
I|S 0 I0 000000I(000cI0|l|0
0

0
. I00R0 0lI000|' , t
0Sq00 ,u0I0 000 l!000I0|00 00 l 0u 0' 0
.

t 0m00

0 I0!000Iy!0l|2i
l|00l.
q00 a mn 00m0 00 m0j0! 0!m0I|0 00!0 l00q000
Captulo 8 "Programacin basada en ob 'ctos'' L
.

0l0.LI00|I0l0!0!000I00m
l
.
-
.
m02000I!0

00|00 m000Ill000!000 l

JIYI 0.I00!I0800!00 - 1 0
..
00!I00I ,I!Y00000l000]0(!V)0 0
.
0
.
S00N l!00!U0000I000l0Im
0000l0000y lI0!m|00l000ll0

_
0

h0m
_
0I0l|ml0
_
I00I0|00 00 000Y0I|0.o000-
0l0000l0m|0m0!0 00 000l00 00m
.
l
00 ]0I0. 0|00!0lIml0m00I0|00000l000!V
0
0Im0m00IIl 000lI00 0
+
`

00000, 0!!l|0I0!2 00 lIml0m00I `


r z

I 0 0 m0!m00000 m00|H000!0
00_0I0000000I!00I0!0. Ll0|I0l000lI
t

!, 0

m0

I000 000000ym0I0000I|l|I!|0 0|0|0|l|2!


l!00!000|000 this l01m|0IB0!000 1
m I000 !0 00m0 000li!y 0I|l|2!000I0I0, lcomposicin
1
.

e 0 static y0m ' 0

0

Ilyl00l.m0|00|0l!00000 1
.
'I
..
0S 0I!0 00I00|I0I000li0 00m0 mS !U00I000Kl0y010l
.
0 `

Captulo 9 "Programacin orintada b' t H


-
. S0 !000m00!00q00I0!00I|l|20l0.
0 0
. +
e os. crcnca" L0 `I00 I 1 l
0 0
mI00I|000m00Il000l0l00

0
__
0

;

I000
-
X!0l00!000|,00
00!00I|l|20|0000;0JIw!0 00l
__
!0000V
' J
'

0
!0

!m0

U00n00I0000j0I0, l00l0000!m
+ C 00 01mIl!
z


HII000l0l00XI00I0yl!!
0!It} l\!m00I0ni 00!00!l0!0I0- +

[ tI000V0!'l0I ''
000IU00U000!0l0y000l0 0l lL00|
.
0

0
0HS!0t|U000!0|0.1m0|0000l00!0l
I 1 0
, !0! 0! 00000 protect d I 1
.
'
0 00 0000|!00I0!000
g
00!0l
g
0y000l

.
1
. . ,
e
-S00!
-
00I!00I0|00|!00-
00m!l0!000| (!0l0|000`0 00`)
1
-
tCo, mg000q000lIw!0000l00!000|.Ll0|I0l0
Ca
ptulo 10 "P

`
000 .!t0m0I0!U0(!0l0IU00 lI000 00`)
.
rogramacwn orientada a objetos p r ,
+
0Rc0I000m00Il00 l!0Im0|000H00I0

00I08
Imr so !
.
LI00l0l000l00!00lI00!I-
00 LI0 0l|l0 00 !0o
!

L0|00 0 0Il
a

0|0!00000

000m000m0!Im|00I0 0l|m0
@
U!
II2000!' m00I0! !ml
,
1 . 00m0 ow|0 00!V. LI0 0l0l0000 1 0u

0mt0Ii 000l!0 m!00 00 I!0j000


: I ' 0
- d \o 00000I!00l0 0I ' I ,m
C!0dS, 0|L000 !000la!l 0I0!
.

.
1
!de stract) y0l0 000- . LL
0 !00m2000!Y! l 1 ' II000L++ 00000|000m000!000|m0lI|l0 1 0
d 0 |!0(00q00000!0)0!0I0I|-
0

l0y000000lI!l000Ill000|ml0

00

0
_
0
'
0I

0
`
.

00!0000000I000clases anidadas,
l
0!

00 00; 00U, 00m0!I0 00 00 |0I!00000I00

00,0l0
-II0l000m0

li000l!!|m0!l|0
0I!h2m00l00|00!00h!R!1
.
0
00ml0Il m00000 0V00I0. L00I000|00
. 0 m00| 0!0000V0I0

!0I0!|I!000I0l000 0I00I0l00
.
! VH000m0000I000 U.U0en-
. . q000000I000II00|0ml0 l| 0

000W0, 00j0!0Iq0|00H0I00000200 1
!0 00 00l!0!m0 00 |I0m00
0!00|0I0!2.
! 00L d0 abstract } 00j0!!q0000l00000020
Ca
ptulo 11 "Cadenas y caracters" LI00
.
1
,
0!0I0!0y!0000 0!0I0!0 !0
00Im

0 l0

l
|I00
o
0
lI

l00!00l!000m|00I000l0!, 0!0|000
T k

0 I0 Strin B ff
'
o nuer. 1m0I00!000Im0 lP!00!V !

g u er, Character y String-


0!mII0 l0 !0!m 000I00 l 0000 '

'
X!0h00!00l!0(000Y00 lJZoL 1 .4), l00l
000||1000.
S0t0000I 00 0!0I0!0 q00000000!000 000 0|0!I00000
aptulo 12 "Grfcos y Java2D": LI000l !|m0!0 0
.
!7mI00I(h0y00 m0lIuR00|tl J H 0l
0 Yn00II0l000 l0q000!000I0l00-
' 0
0 V. d m000!cl0 `0 I t ' C 00,uM0I0!0y0yI0,0l000I!Ul0000l0! I| 00 1

0X0

} 000|0I0!I100,0l0 00]0 00
Ill y0lU|00j000l00, !00I000l0 i00I0l0 0
0 tr,t,
d
la m0I

0l0IU000l0Ill,l0m00000p0-
!0 00 0 0, !00I00l000m00|00l0,0l0,!00y
Prefacio xxxi
0l000. !000Im0 lP!!YZ,l00l0!000000!000!!m|00I!!0!100.LJ0! .J. 0
000j0ml000l0 00|lq000 0I|l|2ilA!!VZ !0!0!000I0000I0h0000ml00,00m0I0XI0!
y00!000.
Captulo 13 "Componentes de !u interfaz grfica de usuario, Parte 1": LI00|I0l0!000IVi|000
l0 componellles Swing 00 !V! 0!0i !0!m 000 |0I0I00 I00 00 00I|0 m|0l0 (U)
I000m0000I000U1independientes de la plataforma 0I0000I|I000ml0Im00I000!V,l0q000
g!00!0|0000(|10X|0|ll00L000m0000I0ow|0000000!00l|2!0f0m0j!0l!|00-
0|00llI0!m00L0I0|00l00 lq0000j000I00l!0!m,0000000Il!|000|Y|0l0I000!
00!Vi0!|00! 000I0!200 00I|0 |000I|0 00 I00 l lI0!m 00m0l0|000. Ll 00!I0ll0
00U 000I0m0XI000,0!l0q00l00|Y|0|m00000 0I0l0. LI0 0|I0l0000!000l mI0!|l000
0B0|00l000Il000m0i0Im|l|Il00I000!0i|0I0!00 0000!|0U0I|Yy000|00l0.LI00|I0-
l0u0|Il0I00||000lU,l j0!!q0|j avax. swing, l0I|q00I,00I000,l|I,0m000I0XI0,
000!0 00m0|000, 0|ll 00 Y0!||00|00,00I00000 00|00, 00l0,0lm00j0000V00I000!I00y00
I00l00,y l0 0m|0|l!00!0 000q00mI0|0|00!00m0000I0.Ll0lI0l0Im0|0000000|00
0lm00j0 000V00I0.
Ca
p
tulo 14 "Componentes de la interfaz grfca de usuario: Parte 2": LI0 0|l0l0000I|0u0000l
I0m00!0ow|0q000lII0000l0|I0l0 13. PltV0000!0!m,I0ly0|00j0l|00l0,0l 0|I0l0
|l0lIl0IB0||0000|00000U,l0!000I0XI0,00m00XI0000!l000m0000I0ow|0,l0000|!0-
l000l|20l0, l Y00I0,l0 m00u,m00u000I0XI0l0, 0000m0|Il!|000|V|0l, l |0I0!00
0000000m00I0 mull|l0,l0 00l0 000 h00 y 0l 00000m|0|I!00!0000q00mY0200."
Captulo 15 "Manejo de excepciones": I0000000l00|I0l0m0|m0!I0I0000ll|0!0,0000 0l
00I000V|l00 l0!00|00 00 l|00|00000`m||000!|||000000m0!0|00!|I|00. L0 !0!m00I0
0000|I0000!00!0 00:_q00000!I0 00000 0l00m0000I0 q00 llm0 ! 000!00lI0j0!000I0|J
00lI00`_L0m0m0 |00|0I00000m0000I0q00I0Y000!00l0m``!0l||2!00 00m0000I000!Y,0
0000!000!00l0 lm00!00m0000m0fl0000m0000I000000`ll00l000|00,|00Im-
0|00q00excepciones lanza 0000m000I000000l00l00ml.LI00|I0l0000l0|I|00|0000I!0
l0errores 00l |I0m,qU0000IlmI0!V0,yl excepciones. 10|0000l00!00l V0000l!|0
00lm00j0000Xc0p0|000, |00l0y0000l0bloques try, las clusulas catch y finally; 00m, |0I!000
00 l000V00|000000000m|00I0 00 uX000|000 00 l!.oL 1 .4. LlmI0!|l00 0l0 0ll0l0 0 |m-
!00|00|0l0nm000000 l00j0ml0000l!0I000l l|0I0.
Captulo 16 "Subproccsamiento mlti
p
le": LI00|I0l000l00!000m000!I0ll!!0!m00!-
Vq000000ll0V!000V!|0I|V|000000!m00000I!00I0.L00m0I00!0l|0000I!0|!0000
000l0!00000!, 0I0I000I00.P0l0lm00I0, l0!00000!00000Y02m00!I0, 00 m00!q00
0 0|0l0000I!0|! 00m0I00! 000V!|0!00000!0 q00 lf0j00 00!l0l0,0|00 00m0I00! 0
000000000m0multipmcesadores. Ll000000|0 |00l|00l!!B00I000|l00m0I00!q0000000!0-
2!0I 000|000. L0m0V0!0m0,0l00!000m|00I0m0lI|l00000I|Y00000|l0m00000 0l0!0-
0000!.Ll0|I0l0!000I!0!m00000!000m|00I0m0lI|l0,l000m00I!0l0 !00l0m q00
00000000II!0l!0Im0|0000000!!00I0.U00!0I0I|I|000l0|l0l0000XI000000j00I0000j0m-
l0q00m00I!00I0l|000!00l0my00m0!00lY0!l0.J0\0|00000!00l000!0000yl0m0I0-
00 00 l0mm0.AV02lIV0 00 l00|V0!00I00000000!0000 ylI!0|0|000 000I00 000
00!0!000I0|00!00000l0|0l000V|0000000!0000.A|m|m0,0|00!I000!0l!0!|00000l0
00!0000y00m0!0Im!00j0000|00.P0l|200!0l0|00!0000I0!l0000m|00!|0|00!0020|00,10
000iY0 l0!00l0mq00000!I00 y0 0l00|000l!00l0m000!u |00!00|20|0000l0 00!0000. !m-
l0m00I00!0l0|00!0000I0!l0000m|00!00000000!0|!00l!,y00|00!00|20|000000000000m0
0|I0!.0l00!0 l000!0000I|0`00m00|0,q000l000!000y ll0V0000I!000000
0y l0m0000|0l0 00d !00000!. !|0lm00I0,0l!000I0 q00 0I!I000!0l|0I0!2 Runnable,
q000m|I0l0 00j0I00j000I!000m000!0000 |0I000!q000!l0l0Th:ead 00m0000l0.
5. Nuesto libro complernentnrlo, Advanced Java 2 Plmjn How m Pmgrmn, prescnl In API 3D, til pum crear efectos tiidi"
mensionnles.
6. Los captulos t 0 6 de Advazzced .Java J ||:How l0 o,ofrece conceplos de In GUI ms avanzados.
Prefacio
Captulo 17 "Archivos y fluos" L|cc1 |u|ulr
judcd1lu\di|1giduh1ci1 ypruvcuiu|cdc
p
d |
1|1
h

ccrc1dc|1culr1dal1|id1quc\c|ugr11|r1vcdcuu
|

. c. u1rc ivu.Luc|cc1p|u| lr d
. mupcrs||culc.L|pruccudcpudcr1m1 d
.
u:c 1 uccu uubjc|u1uu |ur
h
ccu1r a|ucu1rch|\uUdc 1
.
1ccquc|uprugr1m1pucd1uuardrd1|
.
\pdt u1lr1vcdcrcdc cap|u|u |)
|

u\vcumumc1rccuuc L| `| 1
.
1 1jcuu`quUdcd1|u,cumcu1ududcdc| b` d
. cc1p|uucmp|c1cuuuu1iu|mducci0u
A
v

u i, cpuc |u by|c |uc1m . .


.
cuuuuu1ckucprc\cu|1uu1uJII!i

1
1 d
,

pu\, u\rcg|lruy |u 1rchi\u i mpccu 1v1 c|u1Ichivu I M


.

pa1ud1|u\1udipuili\udc1|maccu1m|

u| d

"'
u. u

1muc0mu|uprugr1m_
t 1
U ccuu ariucumu|ud|cu | u1maccuaducu cudipuili\u 11mb h
. .

. Y urm1cuqucrccupor1u|ud-
.
. v v icu 1y uu1d|cu|uuubrc|1 F ' l
.
.
p|ugrmL1p1r1ub|cucriu|u|m1ci0u1ccrc1dc 1
.
d
.
cac e
, qucc\ ul|||1d1pur|u\
d
. mcUvu\y ircc|unu Sccxp|
.
d
puc cucuvu|Ich1ci1 yrccibrcdcdc |ud | d
+ + Hdc mc|u upurc|cu1||uubclu
d

+ . ipu\iiVu\ c1lm1ccu1m | d `
,

uubrc|asNuc\1AFIdcLSdcu|ur d

!cuusccuu 1nu.mnb|cuhyuu1p1r|1-
Captulo 18 ''Red L

tu urcu|u mlruducid1cu|11`SL 1.4).


es \|cc1p||u|uh1b|1ubrc|uprugr1 , 1 .
.
dc dccumpul1dur1\ Frccu|1|1hc

d
mtu 1\qucccumumc1u1lr1vcdcrc
+ v
rram|cul1 crcddcmcuu 1 1

s
muc|uu1uu\ubprugr1m1iu|cr1c|u1uducu |
.
d
rmvc cu

av1. Lucjcmp|udcc\|cc1p|u|u

/
b
.

d
uc u\cg1 urcu c|quc \ccjccul1 c d
. .
c ,cumuuic1u uccu|rcduprugr1m1\cu1 d
.
, rc1u u uu m|muavcg1dur
d
1\1mc t1u|cuckc|b11d . , t1 `
.
uprugr1m1cu11v1mcdi1u|cp1quc|cdcd1lu\ Uu`

u\u uu,Y cumumcuducculrc


ci0u dc uujucgu dc rc cu |uc1quc u|i|1 |
.
.
cr1c|c|lc1c|1vcdcc|cc1p|u|ucI1imp|cmcu|1-
c|icu|cucg1u1rccu|uc1uuucuuc| |r
,.Irqu|cc|ur1 cucu|c/crvidur cu cu|1buraci0u, cuduudc du
|ip|c. Llupcudu|L|ccmp|0cu|miu
u
|

u.yc ucg

c\1rb|lr1dupuruucr\idurcuuubprucc1miculumu|
1
.
1uccuc|c c1p|lu|ucc|dcID | M,
.
1 1p||c1cI0uc\dcmcu1cr1iu|1u|1uc1pu 1
h
cIc tcugcr,quc|mu|1 1much1dc
d

. pu1rc uycud1 l1\ c


1

.
|1 ur1cumumc1rccuu 1miu p1r|

cu|cycu d b
,

u1cpcrmucu1|uuu1nudccumpu-
d
+ ` mp1ncru cu1 1u t d I e chcu!c/crvidur,cuu 130 l!uct\ub
.
r 1 vc\ c u|cmc|.L|ccmp|uprJclicu
.,
,
. pruccuicu|umuI| 1 l1 |


m1ckuprc\cu|1d1h1\|1c|cpuu|u L| 1
.

ip
.
c,l! l iz1 m1yun1dc|1lccuic1dcprur1
d
\cc1pI|uu|1mb|cucuu|mu1 I b
:
c|11JSL | ,cuuuu1iulruducci0u1|u\c|cc|urc | L/

cuuL |cm1u rc|1uucv1AFldcL/S


cuu 1|u rcudimicu|u.'
Y d S\mb|uqucu.p1raimp|cmcu|1rcrvidurcdcrcd
Captulo 19 "Multimedia: imgenes, animacin audil " p. p1rah1ccrquc|u prur1m1cubrcu v|d1 lr d
1
y
.
iccul11|guu1\dcI1hcIr1micu|1dc!1v1
| `
*
I vc c 1mu|luncd L`l
.
' 1 b 1uu|pu|1cmu dcc|1\ c| iudiuy 1 . .
1 + ccpiluu \1 |1ubrc|1imagcucy

; - l 1mm1cku. 1mb|cu prccul .


. .
im1gcuc\,cuu|u\icuuudc|ulipdcprug
- *
1uu.pic1c|uu L!E-CODE dr m1pa dc
c
l|uduc||ibru.Amcdid1qucc|uu

umu
r1m|-
|
kuquccmu|r1ruu1u|ccuclcprcf1ciu,y
quc1|1rcccu . r
cvcc puulcrudc|r1|0u |
.
lIp.Uu1vcquch1y1|cduc|c1p|u|u c |r1 au
.
pu| uicouu,cv1mulr1uduc||ipudc
h `

, . a:upurprub1rludc\| |

` muc u

crc|ci0p1r1rc|1r|uyculrc|cucr|u,
4 1 ccmc1,pur|uqucch1uiuc|uidu
. .
Capitulo 20 "Estructuras de datos'': Lc cci1mcu|c
.

mvc|.L|cc1p||u|u \cr1ubrc H|ccu|
`
c1 u|!
p
d
vhuucucursusupcnurcdccguuduylcrccr

.
I iz1 1p1r1cmry m1u
`
1

cumu |1\cu|11d1 pi1 cu|y1i`b 1 p

. |pu1rclruc|ur1duiumc1dc dt|u , uc. 1r1c1d1|!pud !r | d d


v g ,
mc|r1dc\1lid1.Auuquccv1|iu\u1b

.
cc ucur1 c 1|u,cprccul1u cjcmp|ucuu
b
`
crcumutimp|cmcu|1uc|1c|1c 1 cu nr1urapid1mcu|cc|uc|1m1yurl1d 1
, uprugr1m1durcdc11vides- c 1c|ruc|ur1dc d1|u qu


4 .
|cc1dcc|1c,cumu|1bib|iulcc1]ava. utiId !
.
c
.
utccI|1uc|1u d|puuib|crcu |1bib|iu-
Captulo 21 ''Paquete de utileras de Java
quc

cnb

cu|uc1p|u|u2 l y Z2.
|cc1j ava. util yh1b|1ubrc|u\upcr1durcd'm1ni
pa
.
n de ts Frccu|1\1ri1c|1cdc|1bib|iu-
cVector: uu1r|cg|udiu1micuqucpucd
pu1ckudcb||dc11v1.Uu1c|1ccpcci1|mcu|cu|i|
ccrcccryrcducirc
.
. .
|1c|1rc Stack, Hashtable lr t ,
cguucuccc1nu.1mb|cuh1b|1muubrc
Ca tulo "
"
,
, oper es
,
Random y.i tSet
. p ColecciOnes H1b|1ubrc|1c|1cd '
yquculrcccu imp|cmcu|1cuucprcdcHu| d1 d h
L J ava. ut qucpcr|cucccu1|1AFILu||cc|iuu
L
.
\
cmuc 1dc|1:c|ruc|u d d d `

a\cu|cccmuculrcccu1|uprugr1u1d d 1
.
r1\ c |u ccn|1cuc|c1p|u|u?Q
urc c 1\1uucuujuulu r d d
m +
ccu1ry rccupcrrd1|u,y uu cuuuu|uc|ud1rd |

c1u 1r cc|rucluradc d1|up1r11m1


prugr1m1durc manipu|1r cu d1|u cu b
.

c 1 gununu cdccir,pruccdimicu|u)qucpcrmi|cu1 |u mu ustrc|cr|u\ c|cmcu|u dc d1|u y urdcu1r|ud1lu cu lurm1


7. Nuestro libro cmnp|emenlario, Advtmced luvu 2 /.:;+Ha " .
. .
des y la compuJucwn tlisribuidu con Iemns que 'ncl
.
1 I Iu

o
[
o.ofrece un unallsts mucho ms profundo de las I0
hvu inalmb 1 J
YIB n mvocacmn U mtodos R I (RI) J
HC0 .Y Y02 Micro Ediiion) y CORDA (c Ob'
mo 05 . ava 2 Emerprise Edltiun
uyene de solldtud de objetos).
ommon ce Request Broker Archilccture, Arquiiecrunt comn ..

1

Prefacio xxiil
1ccudcu|cudcccudcu|c).L|cc1p|u|udcmuc|r1|1cu|ccciuuc|1ccumu|i|1cu|11d\,rbu|c\,m1pa
y cuuuu|u,y|ua|gurlmupaI1bucar,urdcu1r,cucuulr1rc|v1|urmXimu,c|muimuy1.ucci\1mcu|c

Captulo 23 "Conectividad de buses de datos en Java con JDBCT": H1b|1ubrcc|upu||cuculrc


cc11v1p1I1 u1rba\cdcd1lu

Lui|um1 dcbacdcd1lu mpupu|1rc\huycud1uu|abacdcd1|u


rc|1ciuu1|c.Frccu|1muccmp|u ul|iauduL|uudc1pcdcIBM, uu i|cm1dc1d!wn|r1ci0udccdc
d1|ucrc1duc0mp|c|1mcu|ccu11v1L|cc1p||u|uiu|ruducc|1
j
bL,u||Judu|1p1r1cuucc|1rcU uu1b1
c dcd1|uL|uudc1pc ydcpucm1uipu|aru cuu|cuidu. U|i|i1mu c|Lcugu1|cducuuu||1c|rclur1Uu
(SQ!)par1cXlr1criu|unnaci0udc,ciucr|1riuIurm1ci0ucu, uu1b1cdcd1|u. Luiguiculcc1p|u|uu-
brc \crv|c| y !av1Scr\crF1gc u|il1u |1 |ccuic1 quccmuc|r1ucucIcc1plu|u par1crc1r 1p|ic1ciuuc
Wcbcuu|ru|1d1purd1|u\.
Captulo 24 "Servlets": H1b|1ubrc|ucrv|c|,qucgcucr1|mcu|ccxlIcudcu|1luuciuuuid1ddc|ucr
vidurcWcb.Lucrv|c|uucIcc|ivupm

1dc:iIru||1ru|uciuuc\b11d1cuWcbquciu|cucluaucuub1c
dcd1|u1bcuchciudc|uc|icu|c,gcucr1ucuu|cuidupcruu1|i1ducu|urm1diuJmic1p1r1quc|umuclrcu
|uu1vcg1durc,y m1n|cucu iu|urm1ci0udc \ci0u uuic1purc1d1c|icu|c. L1AFI p1r1crv|cL dcJ1\1 pcr-
mi|c 1 |u dcrru||1durc 1umcu|a||1|uuciuu1|id1ddc|u crvidurcWcb p1|ah1ccrcc1rgudc|1pcUciu-
ucdc|uc|cu|c.Lucrv|c||1mbicupucdcurcu|i|i1rccu|1m1yud1dc|ucrvidurcWcbyp|1|1lurm1.
L|c c1plu|umuc|r1clmcc1uimu dc pclici0ulrcpuc|1dWcb prIucip1|mcu|c cuu|1pc|ciuuc get y
post dcHF),rcdirccciuu1udu|1pcliciuuch1ci1u|rurccurruciu|cr1c|u1nd0cuu|1b1cde d1|u 1
|mv0 dc1bL. L| c1p||u|uprccul1uu1 1p|ic1ci0u c|iculclcrvidurdc||cuivc|cqucd1cguimcuK1|1
rcpucl1dcuuuru1riucuuu1cucuc|1.
Captulo 25 "JavaServcr Pages (JSP)": Frccu|1uu1cX|cu\i0udc|1|ccuu|ug1dccr\|clcunucid1cu
mu!1v1ScrvcrF1gc(1SF). L1!SFpcnni|cu|uu dc c0u|cuiduWcbgcucr1duculunn1diuamic1. y uu
u|i|i1d1prucip1|mculcpur|udic1durcWcby|udu|uqucuuc|tiu|1mi|i1|I1ducuu|1prugr1m1ci0u
cu11v1.L1!SFpucdcucuulcucrc0digudc!1v1cuIurm1dccrp||cl.F1r11umcu|1rc|rcudimicn|u,c1d1
1SFccumpi|1cuuucr\|cldc!1v1,c|uuunn1|mcu|cucurrc|1primcr1vcqucuuc|icu|cu|ici|1|1!SF.L1
pc||ciuuc\ubccucu|cdc|uc|icu|cuu1|cudid1purc|crv|c|cumpi|1du.L|cc1plu|uprccu|1uu11pl-
c1ci0udc|ibrudc\ii|1lc,|ipuc|icu|c/crvidurdclrc uivc|c,quc1lm|ccu1|1uuurm1ci0udc|uvii|1u-
|ccuuu1bacdcd1|u.
Apndice A "Tabla de precedencia de operadores": Lu|i|1c1d1uuudc|uupur1durcdc!1\1ciudi-
c1uprcccdcuci1rc|1liv1yu1uci1|ivid1d.
Apndice B "Conjunto de caracteres ASCII": Lu|i|1|uc1I1clcrcdc|cuuuu|uASLII(L0diguc|iu-
d1rc|1duuuidcucpaItc|iu|crc1mbiudciuIurm1ci0u)c iudic1c|v1|urptu1c1d1uuudcc||ucuc0digudc
c1rc|cr.!1v1u0|i1c|cuujuu|udcc1r1clcrcUuicudc,cuuc1r1c|crcdc lobi|,p1r1rcprccu|1r|udu|uc1-
r1c|crccu|u|cugu1c "cumcrci1|mcu|ccuuidcr1b|c"cuc|muudu. Uuicudc iuc|uycc|c0diguASLucu
muuuubcuuuu|u.
Apndice C "Sistemas numricos": H1b|1ubrc|ui|cm1uumcricubIu1riu(b1c7),dccim1lb1c
10), uc|1| (b1c)yhcX1dccim1|(b1clo)

Lr|cm1lcII1|cv1liuupar1|ucuruiu|ruduclurucucicuci1
cumpu|1ciuu1|cciugcuicr1cumpul1ciuu1|.
Apndices D al F: LuulIcucu|1|mp|cmcu|1ci0udcuuc|ruccmp|uprJc|icuubrcicuuricul1du1ub-
c|ucuuUM!.Ir|ccdicu|ccu|1dccripci0ugcucr1|dc|ccmp|uprJc|icu.
Apndice G "Unicode": H1b|1:ubrcc|cuuuuludcc1r1clcrcUuicudc,c|cu1|pcU\ilc111v1mu|r1r|1
iulurm1ci0ucumuchu|cugu1|c.L|c1pcudicciuc|uycuuprugr1m111\1dcccmp|uqucmuc|r1"bicuvc-
uidu1Uuicudc cu\1rIu|cugu1c.
(Opcional) Un paseo por el ejemplo prctico sobre Diseo orientado
a objetos con UML
Luc|1ccci0uycu |1 iguicu|cd1rcmu uu p1cu1l|1\0dc |1dupnucip1|cc1r1c|cr||ic1upciuu1|cdc|
Ibruc|ccmp|uprc|icuupciuu1|dcdicuuricu|1du1ubc|ucuuU yuuc\|r1iu|ruducci0u1|upa|ru-
ucdcdicu.L|c]cmp|upric|icucuu11diui0uimpuI|1u|c1Cmo pmgramar Fh Java, S edicir. lcpacu
prccu|1 uu1v1uccdc| cuu|cuidu dc|1 ccciuuc "Accrc1dc |u1 ubc|u"y h1b|1 ubrc c0mu c rc|1ciuu1u
cuuc|ccmp|uprJc|icu.cpudcrc1li1rclcccmp|uprclIcu,u|cdh1bricump|c|1duel 0ic0uuricu|-
du1ubc|uy|1imp|cmcu|1ci0upT1uu11p|ic1ci0uimpur|1u|ccu!1v1.
XXIV Prefacio
Seccin 1.1 5, Acerca de los objetos: 1 ntroduccin a l tecnologa de objetas yel Lenguaje de modelado
unificado
Esta seccin introduce el ejemplo prctico de diseo orientado a objetos con U Aqu prescntmnns los an
tecedentes generales de lo que son los objetos y cmo interactan entre s. Tambin hablamos brevemente so
bre el estudo de la industria de la ingeniera de software y la forma en que UML ha influenciado los procelos
de anlisis y diseo orientado a objetos.
Seccin 2.9 (Ejemplo prctico opcional), Acerca de Jos objetos: Cmo examinar el enunciado
de rmproblema
Nuestro ejemplo prctico comienza con un enunciado de problema, el cual espccifca los requerimientos para
el sistema que vamos a crear. En este ejemplo prctico estudiamos e implementamos !u simulacin de un sis
tema de elevador en un edificio de dos plantas. Proporcionamos el diseo de nuestro sistema de elevador des
pus de investigar la estmctura y el comportamiento de los sistemas orientados a objetos en general. Hablamos
sobre cmo U facilita el proceso de diseo en las siguientes secciones "Acerca de los objetos", al ofrecer
nos varios tipos de diagramas para modelar nuestro sistema. Por ltimo, proporcionnmos una lista de referen
cias de URLs y libros que tratan sobre el diseo orientado a objetos con UML. Tal vez le sean tiles estas re
ferencias u medida que progrese a tmvs de la presentacin de nuestro ejemplo prctico.
Seccin 3.7 (Ejemplo prctico opcional), Acerca de los objetos: Cmo identificar las clases
eu el emmciado de UBproblema
En esta seccin empezamos a disear la simulacin del elevador
.
Identifcamos las clases o "bloques de cons
tmccin" de nuestra simulacin, extrayendo los sustantivos y las frases nominales del enunciado del problema
.
Ordenamos estas clases en un diagrama de clases de UML, el cual describe la estructura de clases de nuestra
simulacin. El diagrama de clases tambin describe las reladones, conocidas como asociaciones, entre las cla
ses (por ejemplo, una persona tiene una asociacin con el elevndor, ya que sta viaja en l).
Seccin 4.14 (Ejemplo prctico opcirmal), Acerca de los objetos: Cmo identificar los atribufl s
de una clase
Una clase contiene tanto atributos (datos) como operadort!s (comportamientos). Esta seccin se enfoca en los
atributos de las clases que se describieron en la seccin 3.7. Como veremos en secciones posteriores, los cam
bios en los atributos de un objeto a menudo afectan al comportamiento de ese objeto. Para detemtimu

los atri
butos para las clases en nuestro ejemplo prctico, extraemos los adjetivos que describen a los sustantivos y fra
ses nominales (que definen a nuestras clases) del enunciado del problema y despus colocaremos los atibutos
en d diagrama de clases que creamos en la seccin 3. 7.
Secci1 5.11 (Ejemplo prctico opcimral), Acerca tle los objetos: Cmo letrticar l1s estados
yactividades de los objetos
Un objeto, en cualquier momento dado, ocupa una condicin especfca conocida como estado. Una transicin
de estado ocun

e cuando ese objeto recibe un mensaje para cambiar de estado. UML cuenta con el diagrama de
estados. el cual identifica el conjunto de posibles estados que puede ocupar un objeto y modela las transicio
nes de estado de ese objeto. Un objeto tiene tambin una actividad: el trabajo desempeado por un objeto du
rante su vida. UML cuenta con el diagrma de actividades: un diagrama de flujo que modela l a actividad de
un objeto. En esta seccin utilizamos ambos tipos de diagramas para empezar a modelar ciertos aspectos espe
cfcos del comportamiento de nuestra simulacin de elevador, como la forma en que una persona viaja en el
e!evudor y cmo ste responde cuando se oprime un botn en un piso dado.
Seccin 6.15 (Eemplo prctico opcional), Acerca de los objetos: Cmo identificar las opercio1es
de una clase
En estu seccin identifcamos las operaciones, o servicios, de nuestras clases. Extrajimos del enunciado del pro
blema los verbos y fmses verbales que especifican las operaciones para cada clase. Despus moditlcamos el
diagrama de clases de la seccin 3. 7 para incluir cada opemcin con su clase asociada. En este punto del ejem
plo prctico, hemos recopilado toda la informacin posible del enunciado del problemu. Sin embargo, y a me
dida que los siguientes captulos introduzcan temLI como la herencia, el manejo de eventos y el subprocesa
miento mltiple, modificaremos nuestras clases y diagramas.
Y
Prefacio
. .
A . de los objetos: Colaboracirl emre objetos
Seccill 7.10 (Ejemplo practico opcttmal),
d
e
l
erca
d l uestro sistema de elevador. En esta seccin vemos
h d Un "borrado!" e mo e o pnrn n
.
'
En este punto emos eren o .
.
1 . 1

ti hablar sobre las colaboraciones mensa-


I
.
el comportamiento de a S!l\ acon ' '
d b'
cmo funciona. nvcsugamos
.
) L rdoncs de las clases que hemos cscu Jerto
. entre s para comumcarse . as opc '
.
1
J. es que los objetos se envtan
.
1
. b' t . en nuestro si5iema. Detemunamos as ca u
.
6 15 lt sr las colaboraclones entre os o e os
.
d UML
en la secc10n
resu an |

.
u di 1ramll de colaboracin: el d1ngrama e
boraciones en nuestro sistema y des pues las reummos

n
b
.
n
l b Jran y cundo lo hacen Presentamos un
.
E d' amt revela que o jetos co \

para modelar colabowcones. ste IUgr ^
1 d 1 1 d r
d;agrunm de colaboracin de las personas que entran y su en e e cva o .
Seccill 8.17 (Ejemplo prctico opciollal), cerca de los objetoN: Cmo empezar a programar las clases
pcra la simulacin del elevador
.
1 d 1 d
' . 0-0 del comportamiento de nuestro sistema.


descanso deJando a un a o Ise
'l' d 1
En esta secclon tomamos un ; . '
t'
.
1 material descrito en el captulo .UlJ lZan o e
1 d
.
plementacin pura en atiZar e .
4 1 4
Comenzamos e proceso e lm
.
7 los atributos y operaciones descritas en las seccwnes . . y
diagrama de clases de UML de la seccton 3 Y ,
de un diseo No implementamos todas las

.
l n ntar una el use en hva purttenuo
.
U''IL
6. 15, mostramos como !U p U! C
d d' , ' - Bas1ndonos en nuestros diagramas de ' crea-
clases, yu que no hemos completado el proceso e lseno. '
mos cdigo para lu clase Elevado:.
1 b
.
.. C' mo 1corporar la herencia a la simrt-
Seccitill 10.12 (Ejemplo prctico opcional), Acerca de os 1 etos. o
laci1 del elevador
.
. . . ' bJ' U tos Consideramos la herencia: las clases

1 !J h bl hrc la prooramacwn onentai.W a o



. ,
E

t
Los cap1tulos 9 Y u
n so

h d 1 . t 'bulos y operaciones de una clase ''base n es a
C
l
UC comparten caractersticas similares pueden ere ar os d O
d b fciarse 't ptrtir del uso de la herencia.
t
tr . mulacin del elevador puc e ene ' '
.
seccin invesugamos como nues a '
.
d 1 ue modela las relaciones de herenc1a;
,
d b . n'entos en un dmoramu e C ases q
d 1
Documentamos nuestros escu | 1
.
0 ; , modilic'tmos el diurrama de clases e a
1.

n ' como genera/ztcrotws. espucs '
.

,
UML ,e reitere a estas re acw \
.
1. s chses con carlctersticas sumlares.
scccit 3.7 medianre el uso de la herencta, para ttgrupar v
1

.
/) A , . de los objetos: 'vf anejo de eventos
Seccil 11
.
9 (Ejemplo practica opwma ' cma .
1 b' etos en nuestra simulacin del elevador en-
.
1
1 terfaces ncceml

ts para que os 0
-
En est;J seccin U\ uunos us I
' `

.
ralmente enviando un evenw: una not
l
l-
b. t En Java 0 objetos se comumcan gene
t
vcn menajes u otros o Je os. q
_

'b 1 e to cntoiC"S re11iza una accin en respues a
v ;
El b eto que rec1 e \ cv l
c;tcin tc que ha ocurrdo un d acclon. o J
d ' tm En la seccin 7. 1 0 desclibimos el puso de

d to se conoce como mlneo e cvcn '



dT
al tipo de evento rec1 ! o; es
d n diacrramu de colaboraciones. Ahora mo ! l-

| b
_
. _
) en nuestro modelo. ut1 zan o u

1 .
.
mcnsaes (o lus co a macmncs
.
lo explicamos detalladamente como ,ts
amoeste diagrama para incluir el manejo de eventos y, como eJemp ' +
L .

'nulaclo' n se
tbrcn al momento de la llegada del elevador.
puertas en nuestra s1
. al A de los objetos: Disetio de inter
f
aces co/1 UML '
Seccin l2.9 (EJemplo practico opCWI ), cerca
d l 1 . relucioncs entre clases e interfaces en nuestra
En esta seccin diseamos un diagramu tlc clases que mo
.
e a
.
da
Ad a's enl'lstamos todas las operaciones
1 omo retnJcrvtteS. em
simulacin; UML se refere a estas re acJOnes
.

o crear clases en Java que implementen


que proporciona cada interfaz a \a clases. Por ultuno, mostramos com
estas in terfccs
.
.
.
l) A de los objetos: Casos de uso
Seccil 13.17 (Ejemplo practio ocu/1 ' cera
1 ermitcn interactuar con un programa. En estu sec-
El captulo 13 hubla sobre las mterfaccs de usuar

o q
l
ue
.

p
d 1 l vdor y su usuario Especficamente, invesd-
. , t nuestr s1mu acwn e C e '

cin hablamos sobre la mteracc
w
n
e
n re '
,
.
1


, '
l' o
'
l
!
y la simulaci
6n en s; este conjunto de ca
-
d
.
ntre el usuar1o ue a ap 1cac
L
omos los casos que puc en ocurr |
`
, 0 es utilizando diagramas caso de uso de UM +
os se conoce como caso de uso. Modelamos estas mter,JcCI n .
. .
\
.
, . de los ob 'etos: Mode/o-vista-coltr/ador
Seccin /4.13 (Ejemplo practico opcrmurl), ' cerca
. tes ClJda uno de los cuales tiene una responsa-
.
ue ons1stu de tres componen ,
'd
Discanms nuestro s1stema para q L
_
. .
h . 0 npletudo el primer componente, qmoct o
.
t t. l , mplo prncttco cas1 emos \ l
billdad distmta. En este pun o L CJC
1
.
1 "n o1

sen"aremos la vista (el segundo compo-


.
1 . eprescman a a sunu ucw e '
como el modela, que con llene l atas que r
l d ! ) , la seccin 19.7. Disearemos el t0hlO
ncnte, que trata acerca de la muneru en que se muestra e mo L o en .
xxxvi
Prefacio
lador :|.:+,:+:+.:,+:,:+..:.|+:+..:.:+.:|.:|+:+:|:,:+::..::...+::+..:,+:++:.:.:+..:+:
:|++::.:,+:+..|.:.|::.:+,:+:+.::+:+:|:..:..,.:+.:|.+:.::.++.::.|..,+..:..+.Mvdelo-vista
contmlador (MVC). r+::..::...+:s,||..+::|.::+..,.:+:+..|.:.::...,+..:..+.,..+.::.::a.:
u..|.:.+:::|diagrama de componentes +:uvt,..+:+:|.|::.::.:+,:+:+.::,|+::.+,|:+.+..+::
::.:+...+..:+:.+.::+..
Seccin l6. 1J (Ejemplo prctico opcional), Acerca de los objetos: Subprocesamiellfo mltiple
r+::..::...++:...,+::..:.:::,:....:+::+,:.::::,..,+:::.::,+:+.+:,:.:+|:+..:+
.+:+.:v:+...+::|+...+.+:.:|.:...+,+:::,:::+.::..+.|+:+.::+|.::...+.O ,,,+::
+:+..:+|.::..+ . | -,,..+.+.:,:.:|:+,:.::.+.:+.:++|..,|::::+..+:::|diagrama de
secuencia +:U ,..+:+:|.|.:.+.:....:+:::+++:.:.:+.r:.:+...+.:+....:.:|:+:+.:+:|..:
+:|::+:+:.,:u..|.:.+::+++...+.+:::.+:+...,..+:+:|.|.|:a.:+,+:++.,:::+.+:+.+:In
:.++|..+.+.:...+..:+:|:|:.+:r:..::...+.:+.|+,::|+.:::+:|.,:..++:++::..:.++|...+:|.
..:+.+..:+:|+:+:|:.::.+::|.+.+:.:+,+:::++::..::.:+:+:|::+|.::...+i ,|+::.+,|:
+:+..+:::.:+:+:|:.:+:.+.::+...:+:|.,:++..:r
Seccin 19.7 (Ejemplo prctico opcional), t1cerca de los objetos: Animacin y sonido en /a vista
r:......++.::.|..:...,+:::,:..r...+:::++::..|.,:..++:|.:.++|...+:|...:+.+..:+:|+:
+:|:r|..,...|:| ,:::+......:.:.+...:,...+.:.::+.+:,.+.+...+:+|::,:.+.:.r:..::...+
+..|.:..|++.:+.::..:.:.+...:,...+.:;:.:::+.+:,.+.+...+:+++::..:.++|...++:|:|:.+:r:,:
.i|...+:+.:.+.|.:::.+:.+.+.|::+:.+.:+.::+:|.:,:::+.:,+:++::.::|:.+:,.+::+:.
.|:..::,.:.:++:...+::|:.+:.+.++:++.,:::+...,.:+:|.r:..::...+.:+.|+,::|+.:::+:++::..
.++|...++::|:.+:t::.,-++..::O, r,r.+,|:+:+..+::.:+.:::.:+:++,:.+.:+i..+::.::
|.+:.:..:+,|:..+:+.:|++..:+.|
Apndice D: Eventos e interfaces de escucha del elevador
[Nota: Este apndice se tdcl en el CD <file viene con este libro. c:+:.+:::+|.::...+i

:...::
:,:.:::+++::..:.++|...+.+-...+.+:+.::.+:+.:..::|:+.:+:+:+:.,::..:+:..+::.:+:::+.::..
:.:::,:.::,+:+:::.+:.....::::+.:.t:::,:.::,+::..:+|::::+.::::.:+:.:+.:+:objetos de
escuch,; ::.::+::+.+,|:+.+..illlerfaces de escucha. r+::.::,:++..:.+,|:+:+..+::.:+.:|.:.|.:::
+:::+.:::.+.:|..::+:::.+.+..+..|.:.+.:,|:::,:.:.+++::..:.++|...+
Apndice E: Modelo del elevador
[Nota: Este apndice encuentr en el CD que viene con este libr. t.+.,:,..:+:|:,:+,|:,....:
.+:|+..:|+.:::+:|+:+:|:,::+:..,|:+..::,|.|...,+:|.:.++|...++:|:|:.+:.r+::.:.,:++..:
.+,|:+:+..+:::::+:+:|::+:..u..|.:.++:.:+::|::+...+.:+:uvt,+:.:.+::,,:::+..+::|.:
.|.:::+:..+:.::...:,...+,|:+:+..:|+:+:|:a,|..o::|::.:+.:,.::+:|+.:::::.:+..+:.:,:.::
.:+uvt,|.,:.+...+:.:+..+..:,:.::.,.:+:|+.:|+:..,+:+:.:+.,:++.:+|::..,.+|::
Apndice F: Vista del elevador
[Nota: Ete apndice se encuentra en el CD que viene con este libro.] r:.:.,:++..:+.|.+,|:+:+..|..,.
i:+....+.|+:++::...++|...++:|:|:.+:c..|.:.+:::|+.:+::+|:,+:,...+,|:+:+..In ...,+:
,.:..+,|.+:+..:|+:+:|:..:.+::.:+.:|.:.|.::::,+::.+.:,..:,:.+..|..:...+..|.:.++:|::+...
+.:+:uvt,.:+.:,::.|.:+::...:::+|::..,..+|::.a|:+.|+:::.:.,:++..:.+:.:++...:+,|:..+::|
+.:::,|..+,|:+:+....+.+.:|.+++:.a.|+:++:.:.:+...+::..|..::::+..::.:+|..:+r.:.+:
+..:.:+.:.:.:.:+.:+.::.:+:::..:+::|:,:+,|:,....::+,::...|:+i..+:i ,|i+:.:,+:,:
::+..+:::+++::.:|.:.:+,|:+:+...:Advanced Java 2 Platfomz How to Program ,|::..,::+:.,|...
..:+::,+:.:.+|::.+:.:::+::...:,:|::.:+.|::.r:,::.+::,+:.:+..++:::.++..++:.++.:++.:
,:|+++.+.+:|+.::::i:+..+:.:,:.::.:+cvt
(Opcional) Un paseo por las secciones "Descubrimiento de patrones de diseo"
n+.:.:.o:|.:.:+:|::,..:+::+:+.:::::::,..:.|:|.:+:..+.:::...:+.::,..:+.|::+:||.::a,+.
::+::|.::+:.|.+.+::..:..+:::.:::...:+::
l
1
Prefacio
S " 10 1? (Opciollal) Descubrimiento de los pairo/les e M n d d' e 0 1trod11ccin a los patro1es
XXII
eccum
a
de diselio de creacin, estructura y comportamzmto
1 +::::,..:+::+:+.:::..+.+::|.+.:.+ a,+.:+.:++.:|.:::...:+:::+|::,+:+.|.+::

::::
:+,:...+.:+.:t::,..:+::+:.:...

+ + U+:.-...:+ ::....+.Y L
.

+
:.++:..+.::..+:+,..:+::

: .:

+
.:. ..::+::+::.+..+.....+.:+|.:,+:...a+ C
r
:,:..:+.++.+:.:+:.:.+:..+..

+:

:.::.
|

.
,

+.:....+::+

:|:::,:.::r|::.:+:::..::.

|:::..::,|:..:+: :.:+

s | ,s.+.:.:+.::,v.+:+.:,r:..: d~

+ ,:...-.+.:....+.:+. r
+ ,s. + ' ::+:.+:i:.:+:
"
+ _ |

..+.+.:++.:.|++:: :...:,..:+
+

:|-:..+.:+:|::,..:+::+:+.::: .:,.:+|..+:..|+.+::..::ut:,..,:|++.:.+.::+
*
d d' . -
.
Patrones de diseio uti/zzados SeccitIZ 14.14 (Opcional), Descllbrimiento de los patrones e zww,
en /os paquetes )ava.avty)ava.o!nq
+
::|:,..:+:+:+.:::c:.++::|+..:..|+: . . ..+:++::.. .::+:.:+b
'

+
r:..::...:+.:+...+:++. +:+., L
1 13 14 . ::...+::.|++:::,:+,|::+:|+:: :,..: |::.:+,:+:+.::cus.++:..:+|::..,

..+::
|
|.
,
:
.
:
"
:::+::...:.|.:::+..|.:.+|::,..:+.:+: +:::+|::,.,+:.::j a
v
a
.
a
w
,

+ + ,a+,.

,
+:+.:,r.+--,,c:+,+::.:, :+,:.:

t javax BW:ng. . .+
c ., ,r . v:.+:+,a .,..: .
r
+.:::v:.:+:1:..
.. ..:,

c + ,c:++.++,

::.+:,o:::, :...: z.+:+.+.::,:+:..i.+.+,z+..

:
'

::,:+:.
'
.,

+,
:.
_
+
.

.+::..+.,

.:+,,:::+..+:::,:+,|::+: ..,:....,,,v:.:+:+:,|.+..||.,::+,|..:v:.: :.
.:+:.,.|..|::
s de diwio Patrones de dimio concurrentes Seccin 16.12 (Opcional), Descubrimiento de los pa
+
tro
+


+::+:,+:.|::,+::..:+:...+.:+:|..++. +
.
+ .:.:.a::,..:+:: : :+ .
.
+

r
t::+::.:||.+::: .+ ::.+
+ + :::+:.:+.+:+....+..+,:+: ,:.+ +:|::.+..:r+::..::...++.|.+::::

|::

..

,-+:
.
.:+;:...+.,c+.+:+s+:,:+:.:+,,r.: ..++:++::|::+,:.::,:.+|::::.+.+ :.+.+

,
t

k) :::+: ++:r.:::,::+.:::-
,
,.+/a.: :. Y %

....+,r.||.+,.r|:,+::+:|:..+:::.++.

_|t
|
.
' :+:+,:.::.|:+.:++|..,|:i+::...

:|:+.:+:+.:-+::+::..+::L
.
+...:+,.::.::.:+:|-+.::,
'rh d +..|.:.|:,..:+::+:.:+.+.+.. +::.+:|..|.::j ava . lang re a ;
Sccin 18,12 ( Opciollal), Descubrimiento de los patrones e e . d dis ,0 Patrones de disetin utilizados
en lo.v paquetes )ava . 1cy )ava. net
+ | .. :| ,.:.+::...+:: .++:: ,:+,|a: +:|

+ :| :: , :+:: C :: ..,. + .
- .
u:.++:: +..::.|:::L .::. UJ
t a|.+:::::.+::..:.|.:-:+..+:.|::,.:: . t j ava o y J ava. ne
.
. .

+::+:,..:+::.+ :,.,+::
0

+ :.:..:,y r..+.+.,r...+:,:.+ .:.:+ +::+:+.:::r.||...:.....,a:....r...:,

, :..:
. +:+:..:+.:,::.+::+::,:.:,+: ' . ,+ :,:....+++.:+,++: b

:.+:.+:|::,..:+::+::,+...+., L |
+| . J ,.+::.:::+:.:.:+.:.+.:...+.+++:: T +.+.+,:..+.: : :.::+. r
.
t ,
:+.:+,++.:....+++.:.,:+. l

.

::v:+:|:....:+.:|.+:y x.:|::, .,:: .:+:.::a.|.+:::::|::,:,+|.::,..:+::.,++..+.


d diselo. Patrolles de diselio ti/iados Seccin 22.12 (Opcional), Descubrimiento de los patrones e .
en el paqllete )ava .at11
1

:::+|::..,..+|:::.| ::..+::.|.+:::|+::+: u..|.:.++::|+..:.:|:::::.+..+.+:+...::, :.

+
. ...::+..|.:.+|::,..:+::+:+.:::r:.: t ' l a.|.+::::-:.:+::...L

,..:+::.+:|,.,+..:j ava.

. .:+.|+:|.+.:.+:.+:::|::,..:+::+.+.::+:.::,+

: ..,:,:.:.,,:,:!...+:,i.:..:,r:..::.. y
d
'
+:.:++::::..,.:+::.:+:.:,+..
.
1 de tov 1atrones /e seno,
:
+:..+.+.::|+..:a.|+:Descummen .

.++..:+.+.:+.:+:|.a!+: d

| + . :++.+:,:.:+,:+:+: :% ..:.|::,..:+::+:+.::+:L .::Y : .+

+:||.:+:|.r.++.+:|::.+..:,c.+ ..::,+::+:.:+,|:...:.:+..:..|.|::.:+:++.+:,+:.:.:
:|r:+,.
Reconocimientos
. .


+ .s.::::|+::.:+:.::|::|+:::+:++.+.:+.:

,+:. u+:+:|::+.,:::,|..:::.|::.a++
'
.: : :
+ ...,: .::,::..+ .+.:..+,.:+,.+:+: +:+::,+.:.+:.,.::..+:+|.:..+..,:a.+,:.:+: .
.....|,..|.:|.:...++:::.:|.

:
+ h .:+:.:.-:.:,,:..:x:+:....:.:+:.:|:: v+.+.:+.::+o:..:|& a::.

....::.i...|:..:

-
.:|& a:::....::.!+..::+x...:.s:.+:.+.,,s+ ::|+:-:::+:++::.::.:|:.:+.:.:+,:.:+,|:.::+ :.
+.+,i:at.:..::|+.
xxxviil
Prefacio
Tem Nieto es egresado del Mussachusetts Institute of Technology. Imparte seminarios de X, Java,
Interet y Web, C, C++ y Visual Busic, y trabaja con nosotros en la escritura de libros de texto, el
desarrollo de cursos y creacin de multimedia. Es coautor de varios libros con nosotros, incluyendo In
teret & \-r/d Wide Web How ro Pmgram (segunda edicin), XL How lo Program, Visual Basic .NET
How to Program y C# How to Prgram. En este libro, Tcm particip como coautor en los captulos 12
a1 14 y 22, y en la seccin especial titulada "Construya su propio compilador" en el captulo 20.
Sean Stmlry, cgresado del Boston College (Ciencias computacionales y Filosofa) y coautor de Advan
ced ,lava 2 Platonn Huw ro Progmm y Java Web Servicesjir Experienced Programmers, edit todo
el manuscrito, dise e implement la aplicacin de red Deitcl Messenger en el cnptulo 18 (Redes),
contribuy en el diseo y actualiz el ejemplo pnctico opcional sobre 000/UML, y actualiz la in
troduccin opcional a los patrones de diseo.
Su Zhang posee ttulos B.Sc y M.Sc en Ciencias computacionales de la Universidad McGill. Su tesis
incluy el modelado y la simulacin, los sistemas de tiempo real y la tecnologa Java. Ella es coauto
ru con nosotros en Java Weh Serviccsjor Experienced Prgrammers y ha contribuido en otras publi
cucioncs Deitcl, incluyendo Advanced Java 2 Platorm How lo Prgram y Pytlwn How Program.
Ayud a actualizar varios captulos y cre los ejemplos que presentan nuevas caractersticas de Java
1 .4, como las Nuevas APis de E/S (de las cuales se habla en los captulos 1 7 y 1 8) y las excepciones
encadenadas (que se mencionnn en el captulo ! 5).
JeffListfeld es egresado en Ciencias computacionales del Harvnrd College. Su trabajo escolar

incluy
clases en grfcos computacionales, redes y teora computacional, y tiene experiencia de programacin
en C, C++, C#, Java, Perl y Lisp. Jetf es nuestro coautor en C# Huw Program, C# A Pmgrammer's
Introducticm y C# for Expcrienced Pmgrammers, adems contribuy en Per/ How lo Program. Jeif
ayud a actualizar varios capitulas en el libro, escribi nuevos ejemplos y secciones sobre expresiones
regulares en el captulo 1 1 , ordenamiento en el captulo 22 y partes de las secciones sobre la Nueva
API de EIS en los captulos 17 y 1 8).
Somos afortunados al haber trabajado en este proyecto con un talentoso y dedicado equipo de editores pro
fesionales. Apreciamos de manera especial el extraordinario esfuerzo de nuestra editora de Ciencias computa
cionales, Peta Rectcr y su jefa, nuestm mentom en la edicin, Murcia Hartan, directora editorial tle la divisin
de Ciencias de la computacin e ingenieda de Prentice Hall. Tom Manshreck hizo un estupentlo trabajo como
gerente de produccitn. Jcnnifer Cuppcllo hizo un excelente trabajo en el manejo del proceso de revisin.
El lave 2 Multimedia Cyber C/assroom, 5" edicin se desarroll en paralelo con Cmo programar CJava,
5" edicin. Sincemmente apreciamos la perspicacia, experiencia y habilidad tcnica de nuestro editor en jefe de
medios electrnicos, mentor y amigo, Mark Taub. l y nuestra editora de medios electrnicos, Karen Mclean,
hicieron un gran trabajo al lograr la publicacin de .lava 2 tVultimeditr Cyber Cltrssrom. 5" edicin bajo un es
trecho itinerrio.
Debemos un ttgradecimiento especial a Tamara Ncwnam (sma:t_art@earthlink. net), quien cre
el trabajo artstico para nuestros iconos de tips de programacin y l a portada. Ella cre la encantadora criatura
que compane con usted los tips de programacin del libro.
Sinceramente apreciamos los esfuerzos de nuestos 70 revisores de la cuarta edicin despus de su publi-
cacin, y de nuestros revisores de la quinta edicin:
Revisores de Sun Microsystems
Dibyendu Baksi (S un Microsystems)
Konstantin Kladko (Sun Microsystems)
Doug Kohlcrt (Sun Microsystems)
Pcter Jones (Sun Microsystems)
Puul Monday (Sun Microsystems)
Tomas Pavek (Sun Microsystems)
Brdlldon Taylor (Sun Microsystems)
R6visore, acadmicos
Rckha Bhowmik (St. Cloud S tate University)
Prefacio
Clint Bickore (Front Rangc Community Collegc)
Briun Blake (Georgetown Univcrsity)
Ayud Boudiub (Georgia Perimiter College)
Chudi Boudiub (Georgia Perimiter College)
Michnel Buckley (S tate University of New York-Bufalo)
Jarnes Chcgwidden (Tanant Coun

y Coll

ge)
Deborah Co:enlUn (Rochcster Insututc ol Technology)
Don Francis Costello (University of Nebr.ska)
Balazs Csizmazia (Univcrsity of Klugenftrt)
Tamura Dinev (Florida Atlnntic University)
Sarah Fix (The Career Center Wgh School)
Bill Freitas (Thc Lawrenccville School)
Thomas Grutte (Straycr University)
Balaji Janamanchi (Texas Tech University) .
Charles Lake (Faulkner S tate Community Collegc)
Brian Larson (Modesto Junior College)
Honn Lin (DeVry Univcrsity)
Dav`d McKain (Lakota East High School)
Andy Novobilski (U niversity o Tcn

Jessee-C

attanooga)
Richard Ord (University of Caltforma, San D1eo)
.
Gavin Osborne (Saskatchewan lnstitute f Applted s.aTech.)
e Menill Parker (Chattanoogu S tate Tcchmcal Commumty Colleg )
Donna Recsc (Mississippi State University)
Cruin Slinkmun (University of Texas, Arlington)
Gid,et Smith (Arkunsas State University)
Ron Sones (James Madison University)
.

Mahcndrun Veluuthupillai (Georgetown Un:verstty)


Loran Walker (Luwrcnce Technologic;tl Untwrsl\y)
Wan-cn Wi!tsic (Fairleigb Dickinson Univcrsity)
Otros revisores de la industria
Shishir Abhyunker (Acccnmre)
Sinan Alhi (Consultor independiente)
Richard Bonneuu (lONA Technologies)
Columbus Brown (IBM)
Carl Bumham (Southpoint)
Brian Cook (Zurich Instirance)
Jonathun Earl (Consultor independiente)
Ron Felice (Omniware Developmenl)
Karl Frank (TogetherSoft Corporation)
Kyle Gabhart (Consultor independiente)
Johan Galle (E2S)
Mark Grand (ClickBlocks, LLC)
Ajay Guptu (American Airlines, Inc.)
Kevlin Henney (Curbralan, Ltd.)
Ethun Henry (Sitruka)
Anne Hartan (AT &T Laboratorics)
James Huddleston (Consultor independiente)
.
_ _
Ten-ell Hull (Sun Cettitied Java Architect, Rauonul Qulltfed Practttmner)
Suchin Korguonknr (ldealake Technologies, Pvt. L!d.)
Don Kostuch ( You Can C Clearly Now)
Krishna Kunchithapadarn (Qracle Corporation)
xxxix
xl
Paul McLachlan (Compuware Corporation)
Davyd Norris (Rationul)
Bill O'Farrell (IBM)
Pmvcen Sadhu (lnfodat Solulions, lnc.)
Camcron Skinncr (Embarcadero Technologies/OMG)
Stephen Tockey (Construx Software/OMG)
Kim Topley (Keyboard Edge, Ltd.J
Sudhir Upudhyay (BEA Systems, Inc.)
John Varghese (UBS Warburg)
Bing Xue (Siemens)
Hadar Ziv (eBuilt, lnc.)
Prefacio
A pesar de una calcndarizacin muy apretada, estos revisores revisaron cada aspecto del libro e hicieron
incontables sugerencias para mejorar la precisin e integridad del material presentado.
Hemos hecho un gran esfuerzo para crear este libro y su versin opcional de Cyber Classroom. Esta edicin
est repleta de ejemplos LlVE-COoETM, ti ps de programacin, ejercicios de autoevaluacin con sus respuestas,
ejercicios y proyectos retadores, y numerosas herramientas de estudio para ayudarlo a dominar el material. Ja
va es un poderoso lenguaje de programacin que le ayudar a escribir programas con rapidez y efectividad.
Adems, es un lenguje que escala sin problema en el mbito del desarrollo de sistemas empresariales,' para
ayudar a las organizaciones a crear sus sistemas de informacin claves. Le agradeceremos que, a medida que
lea el libro, nos haga saber sus comentarios, crticas. correcciones y sugerencias para mejorar el texto. Por fa
vor dirija toda su correspondencia a:
deitel@deitel . com
Le responderemos oportunamente y publicaremos las orrecciones y aclaraciones en nuestro sitio Web,
ww. deitel . com
Esperamos que disfrute aprendiendo con este libro tanto como nosotros disfrutamos el escribirlo]
Dr Hwvey M. Dei el
Paul J. Deitel
Acerca de los autores
Dr. Harvcy M. Dcitcl. Presidente de Dei te! & Associates, Inc., tiene ms de 40 aos de experiencia en el cam
po de la computacin, esto incluye un amplio trabajo acadmico y en la industria. Es uno de los profesores de
ciencias computacionales y expositores ms reconocidos a nivel mundial. El Dr. Deitel tiene una licenciatura y
una maestra por el Massacbusetts Inslitute of Tchnology y un doctorado de la Boston University. Tiene 20
aos de experiencia como profesor universitario, incluyendo un puesto vitalicio y el haber sido presidente del
departamento de Cincias computacionales en el Boston College antes de fundar, con su hijo Paul J. Deitel,
Dei te! & Associates, Inc. Es autor y coautor de varias docenas de libros y paquetes multimedia. Los textos del
Dr. Dcitcl se han ganado el reconocimiento interacional y han sido traducidas al japons, ruso, espaol, ita
l iano. chino tadicional, coreano, francs, polaco, turco, urd, griego y portugus. El Dr. Deitel hu impartido
seminarios profesionales internacionalmente para grandes empresas, organizaciones gubernamentales y diver
sos sectores del ejrcito.
Paul J. Dei tel. CEO de Deitel & Associates, lnc
.
, es cgresado del S loan School of Munagement del Mas
sachusetts lnstitute of Technology, en donde estudi Tecnologa de la informacin. A travs de Deitel & Asso
ciates, Inc., ha impartido seminarios de lenguajes computacionales a grandes empresas, organizaciones guber.
namentules y diversos sectores del ejrcito. Ha ofrecido conferencias de Java y C++ para la Boston Chapter de
la Association for Computing Machinery, y ha impartido cursos va satlite a travs de una empresa de coope
racin entre Deitel & Associntcs, lnc., Prentice Hall y Technology Education Network. l y su padre, el Dr.
Harvey M. Deitel, son autores de los libros de Ciencias de la computacin con ms ventas en el mundo.
xll
prefacio
A erca de Deitel dAssociates, lnc.
.
C .
da a nivel mundial, dedicada u! entrenamiento corporal! V

Y
Dei te! & Associates, Inc. es una e

csa
.

econoct
u acin am tecnologa de software para lnteret!orld Wtde
la creacin de contenido, con especmhzact
.
on e
l
n cd
,
c
.
(e usiness/c-commerce) y lenguajes de programacin.
, d ft e para comerciO e ectromco +
d b' t y los
Web tecnologlll e so war
. ,
I World Wide Web tecnologm e o e os
'
.
sobre programacton en nternct Y
1
H M D

La empresa proporctonu cursos
.
,
.
d es de Deitel & Associates, lnc. son el Dr. arvey I . et-
principules lenguajes de programacmn. Los funda or '
ress de cmputo ms grandes del mundo, agen
te! y Puul J
.
Deitel. Su clientes incluyen muchus de las emp
:
l A lo largo de su sociedad editorial con
d ejrcito y empresas comercta es. . .
l ' b
cas gubemamcnt
.
a]cs, sectorc

e
. b
.
d l' bros de texto de vanguardia sobre progrumacwn, t ros
Prentice Hall, Dellel & AssociUtes
.
Inc. ha pu ]ca o
'
C ber Classruoms. cursos va satlite y cursos de capa
profesionales, multimedia interacttva en D como lU
.y t s pueden ser contactados mediante correo elec
citacin basados en Web. Deitel & Assocmtes, lnc. y U uu ore
trnico en:
deitel@deitel . aom
.
bl'
.
su currculo corporatJvo mun-
p er ma' s acerca de Deitel & Associates. lnc., sus pu cactoncs y
ara conoc
.

.
.
dial en lnea, vea las ltimas pginas de este hbro o Vt>tte.
W.dei tel . com
1
, +
DED'EL BUZ ONLINE, en:
al bol,t'tn crratuito de correo e ectromco.
y suscn ase

w. deitel . com/newsletter/subscribe . html

Anda mungkin juga menyukai