0 - prefacio

22
Qta edición - Javar• ha revolucionado el desarrollo del software mediante el código orientado il objetos independiente de la plataforma, con UNO intensivo de multimedlu, para uplicnc!oncs busud¡t� en Intemct, intrauets o emanrts. Estu q¡dnm edicii del libro de texto sobre Java más utilizado a nivel mundial, explica cómo utilizar las exlranrdinu, rias henamientas de este software. La obm contiene una vasta colección 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 código lum sido probados. Entre los temas clave que se tratan aquí, se encuenan: Aplic¡rciones/Applcts GUI Swing/Manejo de eventos Clases/Objetosllnterfaces POOIHerenci:¡fpolimorfismo Gráficos/Java 2D'" IImagenes/Animaciónl Audio Excepciones/Subproces;tmicnto múltiple DOO/UML/Patroncs de diseño Cómo programar eu java, quinta edicióu incluye extensas características pedngóeicas: Cientos de prognumL� en código 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 mát: sobre los temm< de su interés Cientps de tips, prácticas recomendada� y precauciones, Todos identificados con su r,;spectivn iconn: BIII/US Oh.111ndune\' Tip Je Ti¡u de Ob.r1•nracilill fips de pntt•hu Errom prdrlictu de dt• ingt·nicriu ¡/(' rendimiento purtabi/idud .tic tlpal'ieuda y depuraci6n tatUU .te L l :. ' ": ¡ gr_"_" '�t ' io_· ,L· W J]_h t· _�,· e _ ___ . ___ _ v i_ · ¡ ¡-' /- · Jli11J!/1ll!lací:� En el sitio Wcb w .pearsoneducacicn.net/deitel cnconlrar los ejemplos de código del libro e información 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 código 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 más @ Vísítenos en: www.peursoneducuclon.net ISBN 970-26-0518-0 90000 �cl6;;�-�· �·¡ 1 DOO< j 1 ri�PAO !.i ' D.E DISENH , . . �JDBC'", SEE'I'�, JSP'" UQIJQ/,�1�.::.: .. i . \ . . : . . . . 1 · , · A . . ' DOO con L y !os PATRONES DE DISEÑO JDBCTM, SERV L ETS, JSPTM

Upload: -

Post on 24-Nov-2015

52 views

Category:

Documents


3 download

TRANSCRIPT

  • -----Quinta edicin ---

    Javar ha revolucionado el desarrollo del software mediante el cdigo orientado il objetos independiente de la plataforma, con UNO intensivo de multimedlu, para uplicnc!oncs busudt en Intemct, intrauets o emanrts. Estu qdnm edicirf!i 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 encuentran:

    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 e u java, 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 temm<

    de su inters Cientps de tips, prcticas recomendada y precauciones, Todos identificados con su r,;spectivn iconn:

    BII!!I/US Oh.111n.'ldune.\' Tip; Je Tiu de Ob.r1nracilill fips de pntthu Errom prdrlictu de dt ingtnicriu /(' rendimiento purtabi/idud .tic tlpal'ieuda y depuraci6n tatUU/1t'.r .te

    Ll:..'".::gr_"_"'t' io_,..L...:WJ]_ht_, e _ __ ___ ...J.. ___ ___vio_ -'/- '------' Jli11J!/1ll!lac: En el sitio Wcb www .pearsoneducacicn.net/deitel cnconlrar

  • ' '

    J

    1

    '1

    QUINTA EDICIN

    CMO PROGRAMAR EN

    JAVA

  • QillNTA EDICIN

    CMO PROGRAMAR EN

    JAVA Harvey M. Deitel

    r r t/c!!Y e' e\ Deitel & Associates, Inc.

    Paul J. Deitel Deitel & Associates, Inc.

    TRADUCCIN 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 Interdisciplinaria 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 Argentina Brasil Colombia Costa Rica Chile Ecuador Espaa Guatemala Panam Per Puerto Rico Uruguay Venezuela

  • J Dalos de catalogacin bibliogr.ificu DEITEL, HARVEY M. y DEITEL, PAUL J. Quinta edicin Cmo programar en Java 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, Fiftll Ed1o11, by Horvey M. Delc/ umil'aul J. Deite/, puhlished by Penrson Education. lnc., publishing us PRENTICE HALL, INC .. Copyright 2003. AH rights reservcd. ISBN 0-13-101621-0

    Traduccin autorizada de la edicin en idioma ingls, titulada Java flow to Pmgram, Fiftll Edtiv11, por Harvcy M. Deilel y 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 espaol: Editor:

    Editor de desarrollo: Supervisor de produccin:

    Edicin en lngl.:

    Guillermo Trujano Mendoza e-mail: [email protected] Miguel B. Gutirrez Hemnde7. Enrique Treja Hernndez

    Vice President und Editorinl Director, ECS: Marcia J, Hurtan Acquisitions Editor. Petra J. Recter Assistnnt Editor. Sarail Par/wr Project Manager: Jermifer Cuppello Vice Presiuont Ul\11 Director of Production and Manufacturing, ESM: David \V. Riccnrd Exccutive Mmaging Editor: Vnce O'Brien tvlanaging Editor: Tom Mnm/treck Productlon Hditor: Jo/111 1\ Lave// Director of Creailve Servlces: Pan/ Belfanli Creutive Director: Cara/e \mon Chuptur Opener and Cover Designer. Tomara L Newnam, Dr. Harvcy Deite/ Interior De,ign Assistance: Geoffrey Cassar Manufacturiug Mnnager: Trudy Pisciotti Manufacruring Buyer: Lisa McDowell Marketing Manager. Pamela Silaffer 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: [email protected]

    Cmara Nacional de la Industria Editorial Mexicana. Reg. mm. 1031.

    Prentice Hall es una marca registrada de Pearson Educaci

  • Contenido

    Prefacio xvii

    Introduccin a las computadoras, Internet y 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/1 y .NET 10 1.12 Internet y Wor!d Widc Web 11 1.13 Fundamentos de un entorno 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

    2 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 Modificacin de nuestro primer 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

    3 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: Identificacin de las clases en d enunciado 6.15 (Ejemplo prctico opcional) Acerca de los objetos:

    de un problema 94 Cmo identificar las operaciones de las clases 226

    7 Arreglos 245 4 Instrucciones de control: Parte 1 103 7.1 Introduccin 246 4.1 Introduccin 104 7.2 Arreglos

    246 4.2 Algoritmos 104 7.3 Declaracin y creacin de arreglos

    247 4.3 Scudocdigo 105 7.4 Ejemplos acerca del uso de arreglos

    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 . . . 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 controlada 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: 8 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 primitivos 1 "1 8.4 Control del acceso a los miembros

    310

    l' 4.14 (Ejemplo prctico opcional) Acerca de los objetos: Cmo identificar 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 5 Instrucciones de control: Parte 2 145 1 8.8 Uso de los mtodos set (establecer) y get (obtener) 318 5.1 Introduccin 146 :l 8.9 Composicin 326 5.2 Fundamentos de la repeticin 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 finales

    334 5.5 Instruccin de repeticin do. , 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:l.nue 162 8.15 Reutilizacin de software

    343 5.8 Instrucciones break y cont:l.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 identificar los estados

    y actividades de los objetos l77 9 Programacin orientada a objetos: Herencia 355 9.1 Introduccin 356

    6 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 tres 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 softwal'e mediante lu herenciu 385 6,6 Paquetes de lu API de Juvn 198 6.7 Generacin de nmeros aleatorios 198

  • X Contenido Contenido xl

    10 Programacin orientada a objetos: Polimorfismo 389 12 Grficos y 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 grficos 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 polimorfismo 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 polimorfismo 407 I0.8 Ejemplo prctico: Creacin y uso de interlitces 417 13 Componentes de la interfaz grfica de usuario: Parte 1 547 10.9 Clases anidadas 421 I3.I Introduccin 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 llR JCheckBo:x: y JRadioButton 563 l 0.12.4 Conclusin 445 13.9 JComboBo:x: 568 l 0.12.5 Recursos en Internet y World Widc Web 446 13.10 JList 571

    11 Cadenas y 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:y.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 14 607 11.4 La clase StringBuffer 467 14.1 Introduccin 608

    11.4.I Constructores de StringBuffer 468 14.2 JTe:x: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 Jl?anel 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 JTabbedl?ane 642 11.8 Expresiones regulares, la ciase Pattern y la clase Matcber 486 !4.12 Administradores de esquemas: BoxLayout y GridBagLayout 644 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

  • f xli Contenido -i Contenido XIII

    14.14,3 Patrones de diseo de comportamiento 666 i Interuccitn entre cliente/servidor mediante conexiones de socket de flujo 837 ! 18.6 14.14.4 Conclusin 669 f 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

    15 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 :t 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

    16 Subprocesamiento mltiple r

    Multimedia: Imgenes, animacin y audio 9 1 9 699 19 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 Interfaz Runnable 733 20 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 l 954 20.4 Listas enlazadas 17 Archivos y 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 .',1 17.3 Archivos y t1ujos 752 17.4 La clase File 755 21 Paquete de utileras de Java y 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 d acceso secuencial 776 21.2 La clase Vector y In interfaz Elnumeration 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 aleatorio 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 'a 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 EIS pura la plataforma Java 809 22 Colecciones 1 037

    22.1 Introduccin 1038 18 Redes 825 22.2 Generalidades acerca de las colecciones 1039 18.1 lntroduccir\n 826 22.3 La cla.e l\.rrays 1039 18.2 Manipulacin de URLs 827 22.4 La interfaz Collection y la clase Collections 1043 18.3 Cmo leer un archivo en un servidor Web 832 " 22.5 Objetos !Jist !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 algoritmo sort 1050

  • xlv Contenido ' Contenido XV 22.6.2 El algoritmo shuffle 1054 i

    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 "- 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 ;;. 25,5.2 Ejemplo de secuencia de comandos 1155

    22.9 EnvolturaN de sincronizacin l 1066 25.6 Acciones estndar 1158 22.10 Envolturas no modificables 1066 f 25.6.1 La accin 1159 22.11 Implementaciones ubstructas 1067 .i 25,6.2 La accin 1164 22.12 (Opcional) Descubl'irniento de los patrones de diseo: Patrones de diseo l 25.6.3 La accin 1167

    utilizados en el paquete java , u til 1067 l 25.7 Directivas 1170 22.12.1 Patrones 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 23 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

  • XVI

    F La vista del Elevador (en CD) F.! Introduccin F.2 Los objetos de la clase F.3 Las constantes de la clase F.4 El constructor de la clase F. S Manejo de eventos

    F.5.1 Los tipos de eventos EventoMoverElevador F.5.2 Los tipos de eventos EventoMoverPersona F.S.3 Los tipos de eventos EventoPuerta F.5.4 Los tipos de eventos EventoBoton P.5.5 Los tipos de eventos EventoTimbre P.5.6 Los tipos de eventos EventoLuz F.6 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 profesores y estui.liuntcs para obtener una experiencia educativa interesante, informativa, retadora y entretenida con Java. Esta publicacin concuerda con la ltima versin

  • XVIII Pretoclo

    ONE Studio (Community Edition) y el software JBi/der de Borland, PerJonal edition. Todo este material se encuentra en ingls y est disponible en la pgina www.deitel . com/books/downloads . html o en www. pearsoneducacion. net/ dei tel, junto con otros recursos para este libro.

    Adems, en este sitio ofrecemos un panorama general del paquete completo de materiales adicionnles pura profesores y estudiantes que utilicen este libro como texto en un curso. Entre otros materiales, tambin en ingls, 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 laboratorio (o asignar tareas altamente estructuradas), pueden adquirir un mtmual de laboratorio, Java in the Lah. Esta publicacin incluye

  • XX Prefacio

    bases de datos con la API JDBC'rM, El captulo 24, Servlets y el captulo 25, JavaServer PagesTM (JSP), expanden nuestro anlisis de los temas de programacin relacionados con Internet 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 n niveles, en las cuales la funcionalidad que proporciona cada nivel puede distdbuirse para separar computadoras a travs de Internet, o pueden ejecutarse 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 Internet. 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 Tornea! de Apache como nuestro servidor de aplicaciones para estos ejemplos. Tornea!, 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 www . apache , org. Tornea! se comunica con el nivel de cliente a travs de Internet, utilizando el Protocolo de transferencia de hipertexto (H'ITP). 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 Unificado de ModeladoTM (UML) El Lengu'\ic Uniticado de ModeludoTM (UML) se ha convertido en el lenguaje de modelado grfico 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

  • xxil Prefacio

    Acces11 a W11rld Wide Web Todos l?s eempl

    .os de cdigo fuente (en ingls) para esta quinta edicin (y dems publicaciones de los autores) estan dispombles en Internet, de manera que pueden descargarse del siguiente sitio Web:

    www . deitel . com www.pearsoneducacion. net/deitel

    Puee registrarse en fora rpida y scncill, y las descargas son gratuitas. Huccr cambios u los ejemplos e inmediatamente ver los efectos de esos cambiOs es una excelente manera de mejorar su aprendizaje de Juva. Objetiv11s Caa captulo omienza con objetivos que informan a los estudiantes lo que deben esperar, y les brinda la oportumdud, despues de leer el captulo, de determinar si cumplieron los objetivos planteados. Los objetivos sirven para 1ear confianza. Frases Los objeivos de lo caiulos van seguidos de una o ms frases. Algunas son graciosas, otras, filosdficas y algunas 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. Pla11 ge11eral El pla eneral de cada captulo permite a los estudiantes abordar el material de manera ordenada. Junto con los objetivos d cada 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 (co11 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 d hneas 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 conlirmar que los programas funcumcn 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 programas estn diseados mm ejercitar las diversas caractersticas de Java.

    615 Ilustracimres/Figuras Incluimos una gran cantidad de grficas, dibujos lineales, programas y salidas de programa. Hemos convertido todos los dia,'ramas 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 pragmmaci111 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 programacin, Ermre.\' comunes de Pramacwn, Tips ara prevenir ermres, Observaciones de apariencia visual, Tips de rendimiemo, Tips de potabclulad Y Obsetvacumes

    .de ingenienr de software. 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 enseanza: Uno de ustros estudiantes, specialista en matemticas, recientemente nos coment que siente que este metodo es simiar al de resaltar axiOma. teoremas y comlarios en los libros de matemticas, ya que proporciona una ba1e shda sobre la cual se puede construir buen software, 82 Buenas prcticas de programacin rn La:r Buena. prdcticas d programacin son tips 1ue ll

  • xxiv Prefacio

    naturas del curso cada semestre. Los profesores pueden usar estos ejercicios para asignar tareas, realizar exmenes cortos y los exmenes principales. Lus soluciones para la mayora de 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 Pearson Educaci6n. [NOTA: No nos escriba para solicitarnos el CD del instructor. La distribucin de este accesorio est limitada estrictamente a profesores universitarios que tienen este libro como texto de sus cursos. Los profesores slo pueden obtener el manual de soluciones a travs de los representantes de esta empresa.] Los estudiantes y lectores pueden obtener la solucin de aproximadamente la mitad de los ejercicios si compran la quinta edicin del Java 2 Multimedia Cyber C/assroom, 5" edicin, producto en ingls que ofrece adems muchas otras opcione& muy valiosas, y es ideal ya sea como autoestudio o referencia. Tambin encontrar 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 de libros en lnea como www . info:rmiT . com. Si usted ya tiene el libro de texto, puede comprar el producto Java 2 Multimedia Cyber Classmom, 5" edicin (ISBN# 0- 13 101 769- l) por separado en www . InformiT. com/ cyberclassrooms.

    Bibliografa Se incluye en este libro una extensa bibliografu de libros, artculos y documentacin de Java 2 por parte de Sun lV!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 a trabajar con Java. Escribimos e;te libro utilizando solamente el Kit de desarrollo de software Java 2 Sta/ld[lrd Edition (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 entorno de desarrollo integrado (lDE) de Java: SunONfl'M Studio 4, Community 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 Edition. 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!\'EINTaTM. Este documento est disponible en la pgina www . dei tel . com/books /downloads . html, junto con los recursos 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 Internet, puede cargar esta pgina Web en su navegador para que obtenga un rpido acceso a todos los recursos. 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 cxtendible (XML) y las APis de Java para procesar XML, que ahora forman parte del J2SE t .4,

    Accesorios para la quinta edicin de Cmo programar en Java

    Este libro cuenta con diversos accesorios, todo en ingls, para los profesores. El CD llamado Instructor Re;ourr:c CD (IRCD! contiene el Manual del instructor con las soluciones a la gran mayora de los ejercicios \ .. que se encuentran al fmul de cada captulo, y un archivo llamado Tt:st ltem 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 pueden descargarse del sitio www, dei tel . com, donde se ofrecen recursos tanto prendimiento y . , Observaciones de apanetzcza

    , de programacwn, Obsen'aciones de ingeniera de soft

    ware). \ . , 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.

    tus cortas (por ejemplo, verdadero/falso J y prop , . , . . erial anterior, en idioma ingles, se:

    cncucntr,l en

    El Sirio Web Compamon con todo el.mut www .pearsoneducacion .net/detel.

    Java in the Lab H J n t/Je Lab Lub Mamwl to Accompally

    Java VI\ tu . tt 1 completo es ava 1 ' r ) ul roduc-

    Este manual de laboratono (cuyo u o

    J 1 , enta a este libro (Cmo nvgramar en Java ' y . d'

    Pmarmn, 5" edicin; ISBN O 13-1 01631-8 ) comp .m

    d' in median\ una serie de tareas de laboratono ts

    to ocional Java 2 Multimedia Cyber Classrom, J e z. t ' al materiJl de lectura. Este munuu\ de labPtono iiadas para reforzar la comprensi

    n del estudiante .en cu.l;;

    ases rogamadas en fonnu regular y supc!VIsudas est diseado para laboratorios c

    errados, quc.consJsten

    e:celente mbicnte para el aprendizaje, ya

    .quc os estu

    or un profesor. Los laboratorios cerrados olrecen un

    . ara resolver problemas de laboratoriO cutdadosa

    iantcs pueden utilizar los conceptos _Presendos e

    i;:s de evaluar la comprensin de sus estuditntes c,on mente diseados. As, los profesores uenen

    mas pdosi

    , t . en el labomtorio. Este manual de laboratono puede . d el proarcso e es os respecto al matenal, supems.

    an .

    ". . autocstudio.

    . usarse tambin pura laboratonos abi

    ertos: tareas y

    l? 15 17 de este libro. Cada captulo del manual se lVI

    f . n tos capitulas 1 a - Y . . b : (Lab Exercrses) Java ill the Lab se en oca e . p . l b Activities) Ejerczcws 1 e a orarmw . de en 3 parte>: Actividades previa

    s al ltJborw; (

    \cvties).4 Cada aptulo contiene obje:ivos que mtroducn Y 4.ctividades posteriores al labo

    rato! lo (Postli ' 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 e , . d l . 1 del laboratorio est perfora a, e o . . . os ha asionado el profesor. Cada pagtna e manua . ) Nuevamente, es prudente menciOnar que eJercc " . . uestas (en caso de ser nec

    esano . . . . o[' . tudiantcs puedan entregar sus rcsp . t f'ac' o se encuentra en tdmma IDo

    es. ncwnado en es e pre 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 e 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.

    ---------------uul

  • xxvi Prefacio

    Actividades previas al laboratorio S

    ,e pretede que los estudiantes resuelvan las actividades de . . . . cada capztulo del presente libro Estas actz'v'd d J ,

    l a secczn Prelab J\ctmtws 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' 'nos

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

    t 1 . o ogza Y conceptos de program , ' 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'Cicws 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 ' en pequeos segmentos de cdigo).

    ' 1 en 1 zquen Y corrijan todos los errores Ejercicios de laboratorio La seccin mlis importante de cada captulo es la que ca , d ' . los estudmntes cmo aplicar lo aprendido C ,

    rrespon e a Lab Exercrses. Estos ejercicios ensean a en amo pmgramar en Java 5" d' - 1 pogramas 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 fi 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-

    . a 1mp cmentar el programa. Las sailda.\' de muestra (Samplc Outputs) ilustran 1 . favorece a la descripcin de los bl . : e comportamento 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 prg;amas completos de Java y reempla-.

  • AA VIII

    Prefacio integrar servicios Wcb, incluyendo el Paquete para desarrolladores de Servicios Web en Java (Java Web Services Developer Pack). E! libro est dirigido a los profesionales de la industria que requieren de una cobenurn detallada sobre las tecnologas de servicios Web en Java. Tambin es adecuado para los cursos de ciencias computacionales de nivel superior que tratan sobre los servicios Web, o como suplemento pura los cursos en computacin distribuida y programacin avanzada en Java. Los temas que se cubren en este libro son: XML; Definiciones de tipos de documentos (DTDs); Modelo de ojetos de documentos (DOMTM) y la API de Java para procesamiento de XML (JAXP); Transformaciones de hojas de estilo extensibles (XSLT'M) y las API de transformacin para XML (TrAX); Protocolo simple de acceso a objetos (SOAP); Lenguaje de descripcin de servicios Web (WSOL); lntegramiento, descubrimiento y descripcin universal (UDDI) y la API de Java para Registros de XML (JAXR); API de Java para Llamadas a procedimientos remotos basadas en XML (JAX-RPC); API de Java para Mensycra XML (JAXM) y la API SOAP con adjuntos para Java (SAAJ); Seguridad de los servicios Wcb con el Nivel de sockcts seguro (SSL); Firrna digital XML (XML Signature), Cifrado con XML (XML Encryption), Espccilicacin de gestin de c laves con XML (XKMS), Lenguaje de marcado de aserciones de seguridad (SAML) y Lenguaje de marcado de control de acceso extendible (XACML; y los Servicios Web inalmbricos con Java 2 Micro Edition (J2METM).

    La serie Course Management Systems: Blackboard, WebCT, Coursecompass5M y Premium CoursecompassSM Parte del contenido de la serie introductoria para lenguajes de pro,rramacin Cmo programar de Deitei, incluyendo este libro, se ha integrado en varios de los populares textos de la serie Course Management Sysrems, como en Blackboard, CourseCompass y WebCT. Una versin mejorada de CourseCompass, llamada Premium Course C01npass, estar disponible para la quinta edicin de Cmo p!Vgrmnar en Java. Estos textos ayudan en la creacin, el manejo y el uso de sofisticadas hemunientas y programas de educacin basados en Web. Con ese material, rcado por y para proteson:s, los profesores pueden ahorrarse horas de introduccin de datos.

    Blackboard, CourscCompuss and WebCT otrccen: Caracterstic:s para crear y personalizar cursos en lnea, como zonas para colocar intormacin del

    cur.1o (por ejemplo, polticas, planes de estudio, anuncios, asignaturas, grados, evaluaciones de rendi. miento y seguimiento del proceso), lwrramicntus de administracin de clases y estudiantes, un libro de cafi11cacioncs, herrumientas para reportes, rastreo d pginas, un calendario y asignaturas. Herramientas de comunicaciones para ayudar a crear y mantener las relaciones interpersonales entre los estudiantes y los profesores, induyendo salones de conversacin, pizarras electrnicas, documentacin compartida, tl.xos tle discusin y COJTeo electrnico privado. Henmuientas de evaluacin flexibles que perrniten al profeNor crear cuestionurios en lnea y exmenes vinculados de manera directa al te,xto, y que calit1can y dan seguimiento a los resultados con efectividnd. Todas las evaluaciones pueden iwoducirse en el libro de calllicadones pura una eficiente administracin del curso. Adems, WebCT permite a los instructores administrar el tiempo de los cuestiomuios en lnea.

    El Material de apoyo para los instructores se encuentra disponible en formato para impresin y para consulta en lnea.

    Adems de lus herramientas que se encuentran en Blackboard y WebCT, CourseCompass incluye: La pginu de inicio de CourseCompass, la cual hace el curso tan fci l como navcgur en este libro. Una tabiu de contenido expandiblc que permite a los instructores ver el contenido del curso al instante y vincularse con cualquier seccin.

    Secciones de ayuda en lnea "How Do 1", estn disponibles pura los usuarios que requieren sitios con ayuda personalizada pura los cursos, incluyendo las instrucciones paso a puso para agregar diapositivas de Power-PointoD, vdeo y ms. Gua del instructor Quick Start, ofrece u los profesores la opcin de crear cursos en lnea median-

    te un sencillo proceso, puso a paso. Para demostruciones gratuitas en lnea y aprender ms acerca de la serie Course Management Systems, que cuenta con material de apoyo para este libro, visite las pginas Web:

    Prefacio

    Blackboard: www . blackboard . com

    , VVebCT: www . webc t . com ursecompase . com , CourscCompuss: www e o

    xxix

    esarrolladores (DEJTEL rM Developer) La nueva serie para d . . u ble por cubrir las tecnologas tic punta para los . Associates, Inc., est realizando un coprotmso con.sJ era e nuestra serie para desarrolladores DmrerM

    DeJtel.& tales de software de la industriu, a traves dcl lrnzanuento d W. b Services for Eperienced Pmgrammers

    profesJlll r Series Web Services A Tec/mical lntroducto y _Java

    1 :e"uirn Java 2 Enterprise Ellitlon, Java 2 Developentran "nt los primeros libros en !u serie. A esto.l

    hbrVios,ael Baos/e NETfior Experienced PIVgrammers,

    se encuc ' ASP NET w11 1 Jsr

    i 1 cm '1' ro Etlition NETA Technicul lntmductwn, .

    h . tna' s Por favor visite el sitio www . de te e " Jc ' .

    . 1 p , ammers y mue os . ASP .NET with Cfor.Expenencel , ;ogtulos publicados y futuros de esta serie. para ver las actuahzacJOnes en todos os

    Paseo por el libro . . . 'tantes Y con un rpido desarrollo .:n la d' O!IT'Ull'lCJOn mas eXCJ

    . l SO E t' a punto de estudiar uno de los lenguaJeS e pr U ' ' d oso software de aplicaciones comercm y per -st

    a l'ttiad. El dominio de Java le ayudar a desarro a

    hr po

    d elros temas y caractersticas de Java que vermos a

    ac ua , 'd VIstazo a mue os e

    l En esta seccin daremos un rapt o na .

    1 utudoras lo lar"o de todo el libro.

    Wcb": Habla sobre lo que son as comp ,

    ' e 't o lo 1 "Introduccin a las computadoras, Internet y breve historia sobre el desarrollo de los len-

    apl u E, .. 'tul o presenta una . bi d lres y

    , , a cmo se programan. ste c.Jpl . . ando or los lenguajes ensam a < ;::,:;.;'"' ""'"'' ""\ .':";:.:;,";';:',;, odg:,, dd ''"'"' do rogrn"': terminmdo con los lenguajes de alto m.e . e a o de programacin comn en Juva. latnhtcn prcsen a

    '

    . , t oduccJOn a un entom . 1 J a El captulo mcluye una lll l ,. d los patrones de d1seno.

    . . ,:,;,,,,, 00 objew1, el L'"''* do delodo ""ill."ci'rroo< ""' li iotrodwooio " lo ,, .. "'" ," C ptulo 2 "Introduccitn n lus aplicacles e JaE

    v.t . 'tulo introdce los conceptos y construccmnes a-

    a d rogramacwn Java. ste c,tpl

    .1 . no mostrar datos en aplicaciones en el e

    .nguaje e p

    . o madorcs. Los programas de este cap!tul.o J ustrl,m lotd Pt;tc de los pro-

    . d , roortmacwn a los no PWor' ti usuario med1ante e tec a o.

    si'Jcas

    ttlpla Pl:a que los vea el usuario, y cmo obtener d

    dtos

    me

    onentes de interfaz grdfica de usuario (GUI). a pan ' .

    b diante el uso e co P . . s

    d entrada y salida se lleva a ca o me .1 decz'siones y las operuczones antmetzca .

    ces os e ' d tallado de la toma ue amas

    El captulo 2 tambin ofrece un an!JsJs e d Java": Presenta los subprogramas Java, que son

    ' rgr

    Na-Ct tulo 3 "Introduccin a los subprogrmas

    e t e'ecutarse en navegadores Web (como Nctsce e Iavu diseados para transportarse a traves de !nterae u ysta varios de los subprogramas de demstacJon que . utor y Microsoft Internet Explorer). se capitulo m e. amas de Java que llevan a cabo tareus snmare a los

    Vl l J?SDK. Despus escnbremos subprogr

    . . . tr los subprogramas y las aphcacmnes. se mcluyen con e -

    . in d s y d!lcrenc1as en e E

    rogramas del captulo 2, y explicaremos las stm 1 , Se enfoca en el proceso de desarrollo de programas. s

    p C 'tulo 4 "Instrucciones de control: Parte

    artir de ste desamiJar un programa fun-te ,,::, bobl ""'"' o6mo om1< " ;;':::;!::',:!,"':J' :oo pmoiocdJigo. Truobilo ';''"," ::: cional en Java, incluyendo la rea zacon ,

    ara la toma de decisiones (if e if . . e se . . 'ti de instrucciones simples de control p tador y la repeticin controlada por

    t1ps.

    ruru(wh

    vio;e) Tambin analizamos la repeticin con

    dtrolada

    enptooryc:i"nacin de Java. Este captulo utili

    petlcJon d emento ecrem o

    d 1 , truccentincla, y se introducen ls operadores e mr

    ostr; cl 11ujo de control a travs de cada una e as ms a diagramas de uctividud stmplcs en UML para m z

    . 0 n s de control de ciones de control.

    2" Contina hablando sobre las ms 11CCIO e. , e Captulo 5 "Instrucciones de control: te , . truccin de repeticin do . while, lu mstru -J n eiemplos de la instruccin de repetJcwn for, .la m\ambin se incluye unu discusin sobre los ope-

    uva, co ' . , . h 1 . trucciones breuk y conllnue. cin de seleccwn swttc as ms

    11 radares lgicos de Java.

    . . liado de los objetos. Los objetos contienc.n uto

    . a-C 'tulo 6 "Mtodos'': Ofrece un analisls ms detn

    h bl os sobre los mtodos de lu btbhoteca de madosl:mpos y unidades ejecutables llamadas metodos, Aqu a am

  • XXX

    Prefacio . clases y tambin creamos nuestros propios mtodos p 1 . . . p:esenta tambin una discusin sobre la recursividad

    a. crsos de C1encms computacionales, este captulo

    Clales para producir programas correctamente estru .t

    a

    ecmcas ue se presentan en el captulo 6 son esendesarrollan los programadores de s1'stcmas y d e ua os, especmlmentc los programas ms "randes que . o ap 1cac1oncs El t d b 0 perm1Ur que varios mtodos tengan el mism b .

    . ema e a so recarga de mtodos (es decir se explica claramente. Tambin presentam

    o tom re, Siempre y cu;mdo tengan distintas "firmas") se motiva ;

    Captul 7 "A 1 os os eventos y el manejo de eventos 0 rrcg 0": Explora las listas de proces 1 t 1

    ' son objetos, una evidencia m;s del compromis de J .

    a men y a ;abl;s e valore. Los U!Teglos en Java sobre la esttucturucin de datos en arreglos d. 1

    a va codn la onentacmn a Objetos. En este cuptulo hablamos e e ementos e datos del m' ti A . numerosos eJemplos, tanto de los arrea Jos un'd' .

    Ismo po. qu( tamb1n se presentao t , 1 . o 1 lmens10nales como de los m lt'd' es e cap1tu o mvestigan las mrutipul , .

    u 1 uncns10nales. Los eiemplos en d acwnes comunes de los arre 1 . , ' e pasar arreglos u los mtodos y una 'ntrod . , 1

    . g os, a unpresJOn de histogramas el proceso . 1 ucc10n a campo del un T ,. . d d d

    ' S!mp es). Una caracterstica de este captulo . . 1 d' " d

    a IS!s e atas e encuestas (con estadsticas b , , d . s , 1scuswn e las tcni . , tal usque as, jUnto con la presentacin de la b d b. .

    cas emen , es para ordenar y realizar lineal. sque a mana como una mejora dramtica sobre la bsqueda

    Captulo 8 "Programacin basada en ob 'ctos'' E . . clases. Este captulo representa una m 'll

    . . . mpeza nuestra dJscusin ms detallada acerca de las , arav1 os, oportumdad pura en . - 1 b . , correcta ; a travs de un lenguaje (Java) d d. d ,

    . senar a a straccJOn de datos de la "forma foca en la esencia y la terminologa de las l:

    t

    s:e:

    ficam:

    nte a la imple?entacin de nuevos tipos. Se enel acceso a los miembros de una clac ca' m . l

    os o 1etos. labia sobre la 1mplcmentacin de clases en Java d o lmp cmentar la ocultac' d r . , ' e acceso, separar la interfaz de la implement , . ,

    1 n e a m.ormacwn con modificadores objetos con constructores. El captulo habla t

    ac?l, us

    me

    ,todos de ncceso y mtodos utilitarios e inicializar

    la referencia con this los micinbros de 1 am len so re como declarar y utilizar constantes, la composicin 1 . ' e ase static y eicm . d d as p1las y las colas. Tambin introduce 1 . t . ,

    J p os e tipos e datos abslractos populares como a ms rucc1on package y habl . b , ' Captulo 9 "Programacin orientada b' t H . ' a so re como crear paquetes reutilizables.

    d h .. 0 e os. crcnca" En 'ste ca 't 1 e as erram1entas undamentales de los len rus d . , . : PI u o se cxp Ica la herencia, una de reutilizacin de software en la ctJe nuevasg ' J . e pdrogramacJOn onentados a objetos, la cual es una forma , e ases se csam1l! , ,, nst1cas de las clases existente' y al aur

    an rap1t a Y llCI Imente ni absorber Jas caracte- . , ' o egar nuevas car1ct '' nociOnes de superclases y subclases el nod'fi . d.

    d' ens Jeas lJUe sean apropiadas. Thmbin habla sobre las t . 1 d ' Jc, or e acceso protect d I . 1 . .!S, e uso e constructores en superclases y subcl . . 1 . . ,

    e as supere ases d1rectas e indirec-

    compara, la hrencia (relaciones "es un") 1

    , es, . mgeme?a de software con la herencia. El captulo

    Captulo 10 "P . , con '' compos1cJOn (relaciOnes "tiene un")

    . rogramacwn orientada a objetos p r ,

    nucnta fundamental de la programacin orientada 'a ob'to; Imr so =. Este captulo habla sobre otra herra

    co. Este estilO de prooranacin se ut'l' al ' ejor conocida como comportamiento polimrfi-GUI o 1 1za gener mente para tmpl , 1 . ' como Swing de Java. Este captulo hace 1 d' u . ementar os populares marcos de trabajo de

    t . d - a Is ncmn entre clases abst . t (ab ere as, a etna dc presentar las inter'a . , . . 1 rae as stract) y clases con- . 1, ces. e reemp uzo de Java para 1 ' tica de C++ conocida como herencia mltiple T b' . a pe !grasa (aunque poderosa) curacters-

    cales ayudan a ocultar los detalles de impleen:in

    res:nt e:. pderoso concepto de clases anidadas, las

    CJ?es basadas en GUJ, como parte de una introduccin eo, el capitulo demu:stra nuestras primeras aplica

    utJhzamos clases aoidadas para defiru'r 1 . d as completa al manejo de eventos. En esta seccin . os maoeja ores de evnto racterstJca notable de este capitulo e .

    s para vanos componentes de GUI. Una en-, . s que cuenta con tres ejemplos ti d . nonunas, una jerarqua de figuras encabezada po 1 prac cos e polimorfismo: un sistema de

    por una interfaz. ' r una e ase abstract Y una jerarqua de clases encabezada

    Captulo 11 "Cadenas y caracteres" Este ca , 1 ,

    caracteres y grupos de caracteres Presentam. os las cpl!tu o

    Shtrala sobre el procesamiento de palabras, oraciones

    T k .

    . ases 1ng Strin B ff ' o nuer. TambiCn presentamos la API de Java r

    '.

    g u er, Character y String-perm1te a los programas buscar en las cadenas . .

    pa :xpreswnes regulares (nueva en la J2SE 1 .4), la cual especiicados.

    secuencias de caracteres que concuerden con ciertos patrones aptulo 12 "Grficos y Java2D": ste es el rimero e . JTamientas grficas y de multuuedia tl J H bl p d vanos capitulas en los que se presentan las he-

    . d e uva. n amos sobre los o t t , ca enas, camctcres y bytes; el control de color ti o d 1 , . , e ex o_

    Y os objetos gratcos; el dibujo de talla y el dibujo de lneas, rectngulos rectngl/ de tr,t,

    dla maolulaelOn de la paotalla, los modos de pao-, s re on ea os, rectangulos tridimensionales, valos, arcos y

    Prefacio xxxi

    polfgonos. Presentamos la API Java2D, la cual ofrece poderosas herramientas para grlicos. La figura 12.22 es un ejemplo de lo fcil que es utilizar la API Juva2D pura crear efectos con gricos complejos, como texturas y degradados.5

    Captulo 13 "Componentes de !u interfaz grfica de usuario, Parte 1": Este captulo presenta varios de los componellles Swing de Java para crear programas con interfaces grficas de usuario amigables (GUls). Estos componentes de GUI independientes de la plataforma estn escritos completamente en Java, lo que les proporciona una grun t1exibilldad. Los componentes Swing pueden personalizarse para asemejarse u la apariencia de la plataforma cmnputucional en la que se ejecute el programa, o pueden usar la apariencia visual estndar de Java para brindar una interfaz de usuario idntica en todas las plataformas computacionules, El desarrollo de GU!s es un tema extenso, por lo que lo dividimos en dos captulos. Estos captulos cubren el materinl con suficiente detalle como para permitirle a usted crear interfaces de usuario alractivas y funcionales. Este captulo HusiTa los principios de las GUis, la jerarqua j avax. swing, lns etiquetas, botones, listas, campos de texto, cuadros combinados, casills de verilicacin, botones de opcin, paneles, el manejo de eventos de ratn y de teclado, y los administradores de esquemas pura posicionnr componentes. El captulo tambin hace nfasis en el manejo de eventos.

    Captulo 14 "Componentes de la interfaz grfica de usuario: Parte 2": Este captulo contina con el tema sobre Swing que se trat en el captulo 13 . A ITavs de sus programas, tablas y dibujos lineales, el captulo ilustra los principios de diseo de GUis, las reas de texto, cmo extender los componentes Swing, los controles deslizables, las ventanas, los mens, mens contextuales, cmo cambiar la apariencia visual, las interfaces con documentos mltiples, los paneles con fichas y el uso de administradores de esquemas avaozados.6

    Captulo 15 "Manejo de excepciones": ste es uno de los captulos ms importantes en el libro, desde el punto de vista de la creacin de aplicaciones de "misin crtica" o de "comercio crtico". Los programadores necesitan hacerse curgo de qu ocurre cuando el componente que llamo para hacer un trabajo presenta diflcultudes? Cmo me indicar ese componente que tuvo un problema?" Para utilizar un componente de Java, es necesario saber no slo la manera como se comporta ese componente cuando "l;s cosas salen bien", sino tambin qu excepciones lanza ese componnte cuundo "las cosas salen mal". Este captulo hace la distincin entre los errores del sistema, que son bastrmte gruves, y las excepciones. Tambin habla sobre el vocabulario del maoejo de excepciones, incluyendo los bloques try, las clusulas catch y finally; adems, introduce lu nueva capacidad de enadenamiento de excepciones en la J2SE 1 .4. El material de este captulo es imprescindible pum muchos de los ejemplos en el resto del libro.

    Captulo 16 "Subproccsamiento mltiple": Este captulo habla sobre cmo desarrollar programas en Java que puedan llevar a cabo varias actividades en forma concurrente. Las computadoras solan construirse con un solo procesador, bastaote costoso. Actuulmcnte, los procesadores son cada vez ms baratos, de manera que es posible construir computadoras con varios procesadores que trab

  • Prefacio Captulo 17 "Archivos y flujos" Este ca tulo tr jos de datos diJigidos hacia y provenintes des

    pd l

    atahcerca de la entradn/salida que se logra a travs de flu-

    t . . ' e, os are tvos. En este captul . tr d . ma o persistente. El proceso de poder alma d . o se a uccn os objetos a un lor-h cenar ntos en archivos 0 de . . 1 . ace que los programas puedan ouardr dat . . sp az,lf os a traves de redes ( cuptulo 18) l . o os v comumcarse entre s Est 't 1 . a a Jenuqum de datos, comenzando desde l b,,. d

    . e capi u o empieza con una intmduccin A . os Icl, espus los bytes los cam . . . conunuacmn se presenta un an!I's's SI. 1 J d , . pos, os registros y los archivos mp e en a va e los archivo fl M pasan datos a Jos dispositivos de almucenami' nt d , ,

    s U.Jos. ostramos cmo los programas t 1 v 0 secun ar1o como los discos l ' os a mucenudos en esos dispositivos ]amb" h . . Y a torma en que recuperan los da-. Ien ay una discusion sobre la F ' l . . piOgramas para obtener informacin acerca de . . 1 . . d' .

    e use e, que es utilizada por los d . m e u vos y Irectonos Se expl' .. d pue en enVHirse hacia y recibirse desde los d' 't' d

    ' wa e meto o por el cual los obietos d

    ' , 1spos1 IVos e almacenam t . d . . J o sobre lus Nuevas APis de EIS de uto r d' . (' . len o secun ano. Tmnbien huy un aparta-

    Captulo 18 ''Red " E . '.

    en uruento mtroducJdas en la J2SE 1.4). es ste capitulo habla sobre los progra .. , 1 . . des de computadoras Presenta las he . d mas en ava que se comumcan a travs de re-. rramientas e red de meno 1 1 . muestnm a un subprograma interactuando co l . d r mve en

    .uva. Los eJemplos de este captulo "'b . . d

    n e navega or en el que se ejecuta e d . . vrc , comuntcan ose entre dos programas en 1 d' , rean o un m1m nuvegador

    d ava me Iante sockets basad . , t1 . os programas en Java mediante paquetes de datos Un . , . os n UJOS, Y comumcmlose entre

    cin de un juego de Tres en lnea que utiliza l :.

    . a caractestlca clave de este captulo es !a implementaclientes juegan Tres en lnea uno con el tr

    t. ,rrqmtectura chente/servidor en colaborncin, en donde dos tiple. Estupendo! El eiemplo culmin

    ot. o, y e JUeg? es arbitrado por un servidor con subproccsamiento ml-1 . . ' an e en este capitulo es el de! D 't M , . as aplicacJOnes de mensaJ'era instanta'nea po 1 h

    e e cssenger, que Simula a muchas de d .

    ' pu ares oy en da !as e 1

    . ta ora comumcarse con amigos pari'cntcs y co - d b

    , . ua es pcrmaen a los usuanos de compu-d

    mpaneros e tra aio tra d I e chente/servidor, con 130 1neJs v sub . ' a ves e ntemet. Este eicmplo pnctico . . ' ' procesum1ento m!t' 1 tT l ' macmn presentadas hasta este punto E t 1 .

    Ip .e, 11 1 IZa a mayona de las tccnicas de proora-d s e capl!u o tambien contma I b " e la J2SE l A, con una introduccin a los selectores l E/ .

    con e lema so re las nuevas AP!s de E/S con alto rendimiento.7

    Y u S sm bloqueo, para Implementar servidores de red Captulo 19 "Multimedia: imgenes, animacin audil " p . paru hacer que los programas cobren vi'da , tr . d

    1 y . , Iesenta algunas de !as herramientas de Java l . .

    1 aves e a multunedh E t . ' 1 b a numipulacmn ue stas el 'ludio y 1 . . ' s e cap1tu o 1a la sobre las imdgencs y

    ' ' 1 ammacmn. TambiCn present . . . . Imagcnes, con los iconos de los tips de prog , . . a una

  • XXXIV Prefacio

    Seccin 1.1 5, Acerca de los objetos: 1 ntroduccin a la tecnologa de objetas y el Lenguaje de modelado unificado Esta seccin introduce el ejemplo prctico de diseo orientado a objetos con UML. Aqu prescntmnns los antecedentes generales de lo que son los objetos y cmo interactan entre s. Tambin hablamos brevemente sobre el estudo de la industria de la ingeniera de software y la forma en que UML ha influenciado los procelios de anlisis y diseo orientado a objetos.

    Seccin 2.9 (Ejemplo prctico opcional), Acerca de Jos objetos: Cmo examinar el enunciado de rm problema Nuestro ejemplo prctico comienza con un enunciado de problema, el cual espccifica los requerimientos para el sistema que vamos a crear. En este ejemplo prctico estudiamos e implementamos !u simulacin de un sistema de elevador en un edificio de dos plantas. Proporcionamos el diseo de nuestro sistema de elevador despus de investigar la estmctura y el comportamiento de los sistemas orientados a objetos en general. Hablamos sobre cmo UML facilita el proceso de diseo en las siguientes secciones "Acerca de los objetos", al ofrecernos varios tipos de diagramas para modelar nuestro sistema. Por ltimo, proporcionnmos una lista de referencias de URLs y libros que tratan sobre el diseo orientado a objetos con UML. Tal vez le sean tiles estas referencias 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 1111 problema En esta seccin empezamos a disear la simulacin del elevador. Identificamos las clases o "bloques de constmccin" 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 clases (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 atribuflls 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 cambios en los atributos de un objeto a menudo afectan al comportamiento de ese objeto. Para detemtimu los atributos para las clases en nuestro ejemplo prctico, extraemos los adjetivos que describen a los sustantivos y frases nominales (que definen a nuestras clases) del enunciado del problema y despus colocaremos los atributos en d diagrama de clases que creamos en la seccin 3. 7. Secci11 5.1 1 (Ejemplo prctico opcimral), Acerca tle los objetos: Cmo letrtijicar l11s estados y actividades de los objetos Un objeto, en cualquier momento dado, ocupa una condicin especfica conocida como estado. Una transicin de estado ocune 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 transiciones de estado de ese objeto. Un objeto tiene tambin una actividad: el trabajo desempeado por un objeto durante su vida. UML cuenta con el diagrama de actividades: un diagrama de flujo que modela la actividad de un objeto. En esta seccin utilizamos ambos tipos de diagramas para empezar a modelar ciertos aspectos especficos 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 (Ejemplo prctico opcional), Acerca de los objetos: Cmo identificar las operacio11es de una clase En estu seccin identificamos las operaciones, o servicios, de nuestras clases. Extrajimos del enunciado del problema 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 ejemplo prctico, hemos recopilado toda la informacin posible del enunciado del problemu. Sin embargo, y a medida que los siguientes captulos introduzcan temLI como la herencia, el manejo de eventos y el subprocesamiento mltiple, modificaremos nuestras clases y diagramas.

    XXXV

    Prefacio

    . . A . de los objetos: Colaboracirl emre objetos

    Seccill 7.10 (Ejemplo practico opcttmal),

    d el 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 Sltnll 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 e . u di 1ramll de colaboracin: el d1ngrama

    e boraciones en nuestro sistema y des pues las reummos n b.

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

    para modelar colabowcones. ste IUgr ' 1 d 1 1 d r d;agrunm de colaboracin de las personas q

    ue entran y su en e e cva o .

    Seccill 8.17 (Ejemplo prctico opciollal), \.cerca de los objetoN: Cmo empezar a pr

    ogramar las clases

    pcra la simulacin del elevador . 1 d 1 d' . 0-0 del comportamiento de nuestro sistema. descanso deJando a un a o e Ise 'l' d 1 En esta secclon tomamos un . . ' t' . 1 material descrito en el captulo 8. 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 llllp Cl e d d' , ' - Bas1ndonos en nuestros diagramas de v ' crea-

    clases, yu que no hemos completado el proceso e lseno. '

    mos cdigo para lu clase Elevado:r.

    1 b . .. C' mo 11corporar la herencia a la simrt-Seccitill 10.12 (Ejemplo prctico opcional)

    , Acerca de os 11 etos. o

    laci11 del elevador . . . . '" bJ' e tos Consideramos la herencia: las clases

    1 !J h bl hrc la prooramacwn onentai.W a o . , E t Los cap1tulos 9 Y .t un so o h d 1 . t 'bulos y operaciones de una clase ''base n es a

    ClUC comparten caractersticas similares pueden ere ar os a n

    d b ficiarse 't ptrtir del uso de la herencia. . tr . mulacin del elevador puc e ene ' ' . seccin invesugamos como nues a SI ' . d 1 ue modela las relaciones de herenc1a; , d b . n'entos en un dmoramu e e ases q d 1 Documentamos nuestros escu ru 1 . 0 . ; , modilic'tmos el diurrama de clases e a _ . 1. n s como genera/ztcrotws. espucs

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

    ' . '

    , . /) A , . de los objetos: 'vfanejo de evento

    s Seccill 11.9 (Ejemplo practica opwma

    ' cma . 1 . b'etos en nuestra simulacin del elevador en-. 1 1 terfaces nccemlts para que os 0 -En est;J seccin me uunos us m : ' . ralmente enviando un evenw: una notl l-b. t En Java 0 objetos se comumcan gene t vcn menajes u otros o Je os. ' . 'b 1 e to cntoi!C"S re11iza una accin en respues a El b eto que rec1 e e cv 1 ' c;tcin tic que ha ocurrido un u acclon. o J

    . d ' ' tm En la seccin 7 . 10 desclibimos el puso de bd to se conoce como ml.lneo e cvcn ' dT al tipo de evento rec1 l o; es d n diacrramu de colaboraciones. Ahora mo l l-. 1 b .. . ,.) en nuestro modelo. ut1 zan o u " 1 . . mcnsaes (o lus co a macmncs . lo explicamos detalladamente como ,ts amo; este diagrama para incluir el manejo de eventos y, c

    omo eJemp ' . e .

    'nulaclo'n se tbrcn al momento de la llegada del elevador.

    puertas en nuestra s1

    . . . al A de los objetos: Disetio de inter

    faces co/1 UML

    Seccin l2.9 (EJemplo practico opCWII ), cerca

    d l 1 . relucioncs entre clases e interfaces en nuestra

    En esta seccin diseamos un diagramu tlc clases que mo .

    e a. as

    Ad a's enl'lstamos todas las operaciones 1 omo ret/nJcrvtteS. em ' simulacin; UML se refiere a estas re acJOnes .

    o crear clases en Java que implementen que proporciona cada interfaz a \as clases. Por ultuno, mostr

    amos com

    estas in terfaccs

    . . . l) A . de los objetos: Casos de uso Seccill 13.17 (Ejemplo practio ocu/1111 ' cera 1 ermitcn interactuar con un programa. En estu sec-

    El captulo 13 hubla sobre las mterfaccs de usuaro qlue

    . pd 1 l vdor y su usuario Especficamente, invesd-. , t nuestr s1mu acwn e e e ' cin hablamos sobre la mteraccwn en re ' , . ' 1 , 'l'o' l! y la simulaci6n en s; este conjunto de ca-d . ntre el usuar1o ue a ap 1cac L omos los casos que puc en ocurnr e .

    . ,.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-colltrtl/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 e . . . h . 0 npletudo el primer componente, qmoct o . t t.I l ,- mplo prncttco cas1 emos e 1 billdad distmta. En este pun o e CJC 1 . 1 "n o1sen"aremos la vista (el segundo compo-. 1 . eprescman a a sunu ucw ' como el modela, que con llene l atas que r l d ! ) , la seccin 19.7. Disearemos el camru-ncnte, que trata acerca de la muneru en que

    se muestra e mo e o en .

  • xxxvi Prefacio

    lador (el componente que permite al usuario controlar el modelo) en esta seccin. Se dice que un sistema como el nuestro, que utiliza los componentes modelo, vista y controlador, se adhiere a la arquitectura Mvdelo-vistacontmlador (MVC). En esta seccin explcamos las ventajas de utilizar esta arquitectura para disear software. Utilizamos el diagrama de componentes de UML para modelar los tres componentes y luego implementamos este diagrama como cdigo en Java. Seccin l6.1J (Ejemplo prctico opcional), Acerca de los objetos: Subprocesamiellfo mltiple En esta seccin dec!anunos ciertos objetaN como "subprocesos" para que stos puedan operar en forma concurrente. Modificamos el dia,>ramu de colaboracin que se present originalmente en la seccin 7.1 O (y que se modific en la se:cin 1 1 .9) para incorporar el subprocesumiento mltiple. Presentamos el diagrama de secuencia de UML para modelar las interacciones en un sistema. Este diagrama enfatiza el orden cronolgico de los mensajes. Utilizamos un diagrama de secuencia para modelar la fonna en que una persona dentro de In simulad6n interacta con el elevador. Esta seccin concluye el diseo de la porcin de nuestra simulacin relacionada con el modelo. Diseamos la manera en que se muestra este modelo en la seccin 19.7 y luego implementamos este modelo como cdigo en Java, en el apndice E.

    Seccin 19.7 (Ejemplo prctico opcional), t1cerca de los objetos: Animacin y sonido en /a vista Esta seccin disea la vista, que especifica cmo se muestra la porcin de la simulacin relacionada con el modelo. El captulo 1 9 presenta varias tcnicas para integrar sonido y animacin en los programas. Esta seccin utiliza algunas de estas tcnicas para incorporar sonido y animacin en nuestra simulacin del elevador. Especficamente, habla sobre cmo animar los movimientos de las personas y de nuestro elevador, cmo generar efectos y tocnr "msica de elevador" cuando una persona viaja en l. Esta seccin concluye el diseo de nuestra simulucin de elevador. Los apndices O, E y F implementan este diseo como un programa en Java de 3,320 lneas, completamente funcional. Apndice D: Eventos e interfaces de escucha del elevador [Nota: Este apndice se encuemm en el CD

  • xxxviil Prefacio

    Tem Nieto es egresado del Mussachusetts Institute of Technology. Imparte seminarios de XML, Java, Internet 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 Internet & \-1-'rir/d Wide Web How ro Pmgram (segunda edicin), XlvlL How lo Program, Visual Basic .NET How to Program y C# How to Program. 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 Advanced ,lava 2 Platfonn Huw ro Progmm y Java Web ServicesjiJr 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 introduccin 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 coautoru con nosotros en Java Weh Serviccsjor Experienced Programmers y ha contribuido en otras publicucioncs Deitcl, incluyendo Advanced Java 2 Platform How lo Program y Pytlwn How to 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 1 5). JeffListfield es egresado en Ciencias computacionales del Harvnrd College. Su trabajo escolar incluy clases en grficos 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 10 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 profesionales. Apreciamos de manera especial el extraordinario esfuerzo de nuestra editora de Ciencias computacionales, Petra 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 produccitSn. 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 en Java, 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 tV!ultimeditr Cyber Cltrssroom. 5" edicin bajo un estrecho itinernrio. Debemos un ttgradecimiento especial a Tamara Ncwnam (sma:rt_art@earthlink . net), quien cre el trabajo artstico para nuestros iconos de tips de programacin y la portada. Ella cre la encantadora criatura que compane con usted los tips de programacin del libro. Sinceramente apreciamos los esfuerzos de nuestros 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 (S un M icrosystems) Pcter Jones (Sun Microsystems) Puul Monday (Sun Microsystems) Tomas Pavek (Sun Microsystems) B rdlldon Taylor (Sun Microsystems)

    R6visore, acadmicos Rckha Bhowmik (St. Cloud S tate University)

    Prefacio

    Clint B ickrnore (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-Buffalo) Jarnes Chcgwidden (Tanant Couny Collge) Deborah Co:enlUn (Rochcster Insututc ol Technology) Don Francis Costello (University of Nebr.tska) Balazs Csizmazia (Univcrsity of Klugenftrt) Tamura Dinev (Florida Atlnntic University) Sarah Fix (The Career Center Wgh School) Bill Freitas (Thc Lawrenccville School) Thomas Grutl'te (Straycr University) Balaji Janamanchi (Texas Tech University) . Charles Lake (Faulkner S tate Community Collegc) Brian Larson (Modesto Junior College) Honn Lin (DeVry Univcrsity) Davld McKain (Lakota East High School) Andy Novobilski (U niversity o TcnJessee-Cattanooga) Richard Ord (University of Caltforma, San D1eo)

    . Gavin Osborne (Saskatchewan lnstitute f Applted Se.& Tech.) 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 Alhir (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 Qulltfied 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. Java 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 favor dirija toda su correspondencia a:

    deitel@deitel . com

    Le responderemos oportunamente y publicaremos las orrecciones y aclaraciones en nuestro sitio Web,

    www . 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 campo 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 Technology 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 internacional y han sido traducidas al japons, ruso, espaol, ital iano. chino tradicional, coreano, francs, polaco, turco, urd, griego y portugus. El Dr. Deitel hu impartido seminarios profesionales internacionalmente para grandes empresas, organizaciones gubernamentales y diversos sectores del ejrcito.

    Paul J. Dei tel. CEO de Deitel & Associates, lnc., es cgresado del S loan School of Munagement del Massachusetts lnstitute of Technology, en donde estudi Tecnologa de la informacin. A travs de Deitel & Associates, 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 cooperacin 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 & Associates, lnc. . C , da a nivel mundial, dedicada u! entrenamient

    o corporal! V Y Dei te! & Associates, Inc. es una epcsa. econoctu acin am tecnologa de software para lnternet!World Wtde la creacin de contenido, con especmhza

    ct.on eln 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 ' H M D La empresa proporctonu cursos . , . d es de Deitel & Associates, lnc. son el Dr. arvey r . 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 1 C ber Classruoms. cursos va satlite y cursos de capa profesionales, multimedia interacttva en D como lo .y t s pueden ser contactados mediante correo eleccitacin basados en Web. Deitel & Assocmtes, lnc. y os 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.

    www . dei tel . com

    1 , DED'EL BUZZ ONLINE, en: b al bol,t'tn crratuito de correo e ectromco. y suscn ase " " www . deitel . com/newsletter/ sub

    scribe . html