1458

Como programar en java

Embed Size (px)

Citation preview

  • 1. TM

2. TMP. J. DeitelDeitel & Associates, Inc.H. M. Deitel Deitel & Associates, Inc. TRADUCCINAlfonso Vidal Romero Elizondo Ingeniero en Sistemas Electrnicos Instituto Tecnolgico y de Estudios Superiores de Monterrey Campus Monterrey REVISIN TCNICAGabriela Azucena Campos Garca Roberto Martnez Romn Departamento de Computacin Instituto Tecnolgico y de Estudios Superiores de Monterrey Campus Estado de MxicoJorge Armando Aparicio Lemus Coordinador del rea de Software Universidad Tecnolgica de El Salvador 3. DEITEL, PAUL J. Y HARVEY M. DEITEL CMO PROGRAMAR EN JAVA. Sptima edicin PEARS ON EDUCACIN, Mxico 2008 ISBN: 978-970-26-1190-5 rea: Computacin Formato: 20 25.5 cmPginas: 1152Authorized translation from the English language edition entitled JavaTM How to Program, 7th Edition, by Deitel & Associates (Harvey & Paul), published by Pearson Education, Inc., publishing as Prentice Hall, Inc., Copyright 2007. All rights reserved. ISBN 0-13-222220-5 Traduccin autorizada de la edicin en idioma ingls titulada JavaTM How to Program, 7a Edicin, por Deitel & Associates (Harvey & Paul), publicada por Pearson Education, Inc., publicada como Prentice Hall, Inc., Copyright 2007. Todos los derechos reservados. Esta edicin en espaol es la nica autorizada. Edicin en espaol Editor: Editor de desarrollo: Supervisor de produccin:Luis Miguel Cruz Castillo e-mail: [email protected] Bernardino Gutirrez Hernndez Enrique Trejo HernndezEdicin en ingls Vice President and Editorial Director, ECS: Marcia J. Horton Associate Editor: Jennifer Cappello Assistant Editor: Carole Snyder Executive Managing Editor: Vince OBrien Managing Editor: Bob Engelhardt Production Editors: Donna M. Crilly, Marta Samsel Director of Creative Services: Paul Belfanti A/V Production Editor: Xiaohong Zhu Art Studio: Artworks, York, PACreative Director: Juan Lpez Art Director: Kristine Carney Cover Design: Abbey S. Deitel, Harvey M. Deitel, Francesco Santalucia, Kristine CarneyInterior Design: Harvey M. Deitel, Kristine Carney Manufacturing Manager: Alexis Heydt-Long Manufacturing Buyer: Lisa McDowell Executive Marketing Manager: Robin OBrienSPTIMA EDICIN, 2008 D.R. 2008 por Pearson Educacin de Mxico, S.A. de C.V. Atlacomulco 500-5o. piso Col. Industrial Atoto 53519, Naucalpan de Jurez, Estado de Mxico Cmara Nacional de la Industria Editorial Mexicana. Reg. Nm. 1031. Prentice Hall es una marca registrada de Pearson Educacin de Mxico, S.A. de C.V. Reservados todos los derechos. Ni la totalidad ni parte de esta publicacin pueden reproducirse, registrarse o transmitirse, por un sistema de recuperacin de informacin, en ninguna forma ni por ningn medio, sea electrnico, mecnico, fotoqumico, magntico o electroptico, por fotocopia, grabacin o cualquier otro, sin permiso previo por escrito del editor. El prstamo, alquiler o cualquier otra forma de cesin de uso de este ejemplar requerir tambin la autorizacin del editor o de sus representantes. ISBN 10: 970-26-1190-3 ISBN 13: 978-970-26-1190-5 Impreso en Mxico. Printed in Mexico. 1 2 3 4 5 6 7 8 9 0 - 11 10 09 08 4. A Vince OBrien, Director de Administracin de Proyectos, Prentice Hall. Es un privilegio para nosotros trabajar con un profesional consumado. Nuestros mejores deseos para tu xito continuo.Paul y Harvey 5. Marcas registradas DEITEL, el insecto con dos pulgares hacia arriba y DIVE INTO son marcas registradas de Deitel and Associates, Inc. Java y todas las marcas basadas en Java son marcas registradas de Sun Microsystems, Inc., en los Estados Unidos y otros pases. Pearson Education es independiente de Sun Microsystems, Inc. Microsoft, Internet Explorer y el logotipo de Windows son marcas registradas de Microsoft Corporation en los Estados Unidos y/o en otros pases UNIX es una marca registrada de The Open Group. 6. Contenido PrefacioxixAntes de empezarxxx1 Introduccin a las computadoras, Internet y Web11.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.202 4 4 5 5 6 6 7 8 8 9 10 10 13 14 19 23 24 25 25Introduccin Qu es una computadora? Organizacin de una computadora Los primeros sistemas operativos Computacin personal, distribuida y cliente/servidor Internet y World Wide Web Lenguajes mquina, ensambladores y de alto nivel Historia de C y C++ Historia de Java Bibliotecas de clases de Java FORTRAN, COBOL, Pascal y Ada BASIC, Visual Basic, Visual C++, C# y .NET Entorno de desarrollo tpico en Java Generalidades acerca de Java y este libro Prueba de una aplicacin en Java Ejemplo prctico de Ingeniera de Software: introduccin a la tecnologa de objetos y UML Web 2.0 Tecnologas de software Conclusin Recursos Web2 Introduccin a las aplicaciones en Java 2.1 Introduccin 2.2 Su primer programa en Java: imprimir una lnea de texto 2.3 Modificacin de nuestro primer programa en Java 2.4 Cmo mostrar texto con printf 2.5 Otra aplicacin en Java: suma de enteros 2.6 Conceptos acerca de la memoria 2.7 Aritmtica 2.8 Toma de decisiones: operadores de igualdad y relacionales 2.9 (Opcional) Ejemplo prctico de Ingeniera de Software: cmo examinar el documento de requerimientos de un problema 2.10 Conclusin3 Introduccin a las clases y los objetos 3.1 Introduccin 3.2 Clases, objetos, mtodos y variables de instancia34 35 35 41 43 44 48 49 52 56 6575 76 76 7. viii 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11ContenidoDeclaracin de una clase con un mtodo e instanciamiento de un objeto de una clase Declaracin de un mtodo con un parmetro Variables de instancia, mtodos establecer y mtodos obtener Comparacin entre tipos primitivos y tipos por referencia Inicializacin de objetos mediante constructores Nmeros de punto flotante y el tipo double (Opcional) Ejemplo prctico de GUI y grficos: uso de cuadros de dilogo (Opcional) Ejemplo prctico de Ingeniera de Software: identificacin de las clases en un documento de requerimientos Conclusin77 81 84 88 89 91 95 98 1054 Instrucciones de control: parte 11125 Instrucciones de control: parte 21644.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16Introduccin Algoritmos Seudocdigo Estructuras de control Instruccin de seleccin simple if Instruccin de seleccin doble if...else Instruccin de repeticin while Cmo formular algoritmos: repeticin controlada por un contador Cmo formular algoritmos: repeticin controlada por un centinela Cmo formular algoritmos: instrucciones de control anidadas Operadores de asignacin compuestos Operadores de incremento y decremento Tipos primitivos (Opcional) Ejemplo prctico de GUI y grficos: creacin de dibujos simples (Opcional) Ejemplo prctico de Ingeniera de Software: identificacin de los atributos de las clases Conclusin5.1 Introduccin 5.2 Fundamentos de la repeticin controlada por contador 5.3 Instruccin de repeticin for 5.4 Ejemplos sobre el uso de la instruccin for 5.5 Instruccin de repeticin do...while 5.6 Instruccin de seleccin mltiple switch 5.7 Instrucciones break y continue 5.8 Operadores lgicos 5.9 Resumen sobre programacin estructurada 5.10 (Opcional) Ejemplo prctico de GUI y grficos: dibujo de rectngulos y valos 5.11 (Opcional) Ejemplo prctico de Ingeniera de Software: cmo identificar los estados y actividades de los objetos 5.12 Conclusin6 Mtodos: un anlisis ms detallado 6.1 Introduccin 6.2 Mdulos de programas en Java 6.3 Mtodos static, campos static y la clase Math 6.4 Declaracin de mtodos con mltiples parmetros 6.5 Notas acerca de cmo declarar y utilizar los mtodos 6.6 Pila de llamadas a los mtodos y registros de activacin 6.7 Promocin y conversin de argumentos113 113 114 114 116 117 121 123 127 134 138 139 142 142 146 150165 165 167 171 174 176 183 185 190 194 197 200211 212 212 214 216 219 221 221 8. Contenido6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15Paquetes de la API de Java Ejemplo prctico: generacin de nmeros aleatorios 6.9.1 Escalamiento y desplazamiento generalizados de nmeros aleatorios 6.9.2 Repetitividad de nmeros aleatorios para prueba y depuracin Ejemplo prctico: un juego de probabilidad (introduccin a las enumeraciones) Alcance de las declaraciones Sobrecarga de mtodos (Opcional) Ejemplo prctico de GUI y grficos: colores y figuras rellenas (Opcional) Ejemplo prctico de Ingeniera de Software: identificacin de las operaciones de las clases Conclusin7 Arreglos 7.1 Introduccin 7.2 Arreglos 7.3 Declaracin y creacin de arreglos 7.4 Ejemplos acerca del uso de los arreglos 7.5 Ejemplo prctico: simulacin para barajar y repartir cartas 7.6 Instruccin for mejorada 7.7 Paso de arreglos a los mtodos 7.8 Ejemplo prctico: la clase LibroCalificaciones que usa un arreglo para almacenar las calificaciones 7.9 Arreglos multidimensionales 7.10 Ejemplo prctico: la clase LibroCalificaciones que usa un arreglo bidimensional 7.11 Listas de argumentos de longitud variable 7.12 Uso de argumentos de lnea de comandos 7.13 (Opcional) Ejemplo prctico de GUI y grficos: cmo dibujar arcos 7.14 (Opcional) Ejemplo prctico de Ingeniera de Software: colaboracin entre los objetos 7.15 Conclusin8 Clases y objetos: un anlisis ms detallado 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 8.10 8.11 8.12 8.13 8.14 8.15 8.16 8.17 8.18 8.19Introduccin Ejemplo prctico de la clase Tiempo Control del acceso a los miembros Referencias a los miembros del objeto actual mediante this Ejemplo prctico de la clase Tiempo: constructores sobrecargados Constructores predeterminados y sin argumentos Observaciones acerca de los mtodos Establecer y Obtener Composicin Enumeraciones Recoleccin de basura y el mtodo finalize Miembros de clase static Declaracin static import Variables de instancia final Reutilizacin de software Abstraccin de datos y encapsulamiento Ejemplo prctico de la clase Tiempo: creacin de paquetes Acceso a paquetes (Opcional) Ejemplo prctico de GUI y grficos: uso de objetos con grficos (Opcional) Ejemplo prctico de Ingeniera de Software: inicio de la programacin de las clases del sistema ATM 8.20 Conclusinix222 224 227 228 228 232 235 238 241 246260 261 261 262 264 272 274 276 279 284 288 293 294 296 299 305325 326 327 330 331 333 338 338 340 342 345 345 350 351 353 354 355 360 361 364 369 9. xContenido9 Programacin orientada a objetos: herencia 9.1 Introduccin 9.2 Superclases y subclases 9.3 Miembros protected 9.4 Relacin entre las superclases y las subclases 9.4.1 Creacin y uso de una clase EmpleadoPorCom s on 9.4.2 Creacin de una clase EmpleadoBaseMasCom s on sin usar la herencia 9.4.3 Creacin de una jerarqua de herencia EmpleadoPorCom s onEmpleadoBaseMasCom s on9.4.4 La jerarqua de herencia EmpleadoPorCom s on-EmpleadoBaseMasCom s on mediante el uso de variables de instancia protected 9.4.5 La jerarqua de herencia EmpleadoPorCom s on-EmpleadoBaseMasCom s on mediante el uso de variables de nstanc a pr vate 9.5 Los constructores en las subclases 9.6 Ingeniera de software mediante la herencia 9.7 La clase object 9.8 (Opcional) Ejemplo prctico de GUI y grficos: mostar texto e imgenes usando etiquetas 9.9 Conclusin10 Programacin orientada a objetos: polimorfismo 10.1 Introduccin 10.2 Ejemplos del polimorfismo 10.3 Demostracin del comportamiento polimrfico 10.4 Clases y mtodos abstractos 10.5 Ejemplo prctico: sistema de nmina utilizando polimorfismo 10.5.1 Creacin de la superclase abstracta Empleado 10.5.2 Creacin de la subclase concreta EmpleadoAsalar ado 10.5.3 Creacin de la subclase concreta EmpleadoPorHoras 10.5.4 Creacin de la subclase concreta EmpleadoPorCom s on 10.5.5 Creacin de la subclase concreta indirecta EmpleadoBaseMasCom s on 10.5.6 Demostracin del procesamiento polimrfico, el operador nstanceof y la conversin descendente 10.5.7 Resumen de las asignaciones permitidas entre variables de la superclase y de la subclase 10.6 Mtodos y clases final 10.7 Ejemplo prctico: creacin y uso de interfaces 10.7.1 Desarrollo de una jerarqua PorPagar 10.7.2 Declaracin de la interfaz PorPagar 10.7.3 Creacin de la clase Factura 10.7.4 Modificacin de la clase Empleado para implementar la interfaz PorPagar 10.7.5 Modificacin de la clase EmpleadoAsalar ado para usarla en la jerarqua PorPagar 10.7.6 Uso de la interfaz PorPagar para procesar objetos Factura y Empleado mediante el polimorfismo 10.7.7 Declaracin de constantes con interfaces 10.7.8 Interfaces comunes de la API de Java 10.8 (Opcional) Ejemplo prctico de GUI y grficos: realizar dibujos mediante el polimorfismo 10.9 (Opcional) Ejemplo prctico de Ingeniera de Software: incorporacin de la herencia en el sistema ATM 10.10 Conclusin378 379 380 382 382 383 387 391 394 399 404 409 410 411 413417 418 419 420 423 425 426 426 429 431 432 433 437 438 439 440 441 441 443 445 446 448 448 449 451 457 10. Contenido11 Componentes de la GUI: parte 146211.1 Introduccin 11.2 Entrada/salida simple basada en GUI con ]Opt onPane 11.3 Generalidades de los componentes de Swing 11.4 Mostrar texto e imgenes en una ventana 11.5 Campos de texto y una introduccin al manejo de eventos con clases anidadas 11.6 Tipos de eventos comunes de la GUI e interfaces de escucha 11.7 Cmo funciona el manejo de eventos 11.8 ]Button 11.9 Botones que mantienen el estado 11.9.1 ]CheckBox 11.9.2 ]Rad oButton 11.10 ]ComboBox y el uso de una clase interna annima para el manejo de eventos 11.11 ]L st 11.12 Listas de seleccin mltiple 11.13 Manejo de eventos de ratn 11.14 Clases adaptadoras 11.15 Subclase de ]Panel para dibujar con el ratn 11.16 Manejo de eventos de teclas 11.17 Administradores de esquemas 11.17.1 FlowLayout 11.17.2 BorderLayout 11.17.3 Gr dLayout 11.18 Uso de paneles para administrar esquemas ms complejos 11.19 ]TextArea 11.20 Conclusin12 Grficos y Java 2DTM463 464 467 469 474 479 481 483 486 486 489 492 495 497 500 504 507 510 513 514 517 520 522 523 52653912.1 Introduccin 12.2 Contextos y objetos de grficos 12.3 Control de colores 12.4 Control de tipos de letra 12.5 Dibujo de lneas, rectngulos y valos 12.6 Dibujo de arcos 12.7 Dibujo de polgonos y polilneas 12.8 La API Java 2D 12.9 Conclusin540 542 542 548 554 558 560 563 56913 Manejo de excepciones 13.1 Introduccin 13.2 Generalidades acerca del manejo de excepciones 13.3 Ejemplo: divisin entre cero sin manejo de excepciones 13.4 Ejemplo: manejo de excepciones tipo Ar thmet cExcept 13.5 Cundo utilizar el manejo de excepciones 13.6 Jerarqua de excepciones en Java 13.7 Bloque finally 13.8 Limpieza de la pila 13.9 pr ntStackTrace, getStackTrace y getMessage 13.10 Excepciones encadenadas 13.11 Declaracin de nuevos tipos de excepciones 13.12 Precondiciones y poscondicionesxi578one InputMsmatchExcept on579 580 580 582 587 587 590 594 595 597 599 600 11. xiiContenido13.13 Aserciones 13.14 Conclusin14 Archivos y flujos 14.1 Introduccin 14.2 Jerarqua de datos 14.3 Archivos y flujos 14.4 La clase File 14.5 Archivos de texto de acceso secuencial 14.5.1 Creacin de un archivo de texto de acceso secuencial 14.5.2 Cmo leer datos de un archivo de texto de acceso secuencial 14.5.3 Ejemplo prctico: un programa de solicitud de crdito 14.5.4 Actualizacin de archivos de acceso secuencial 14.6 Serializacin de objetos 14.6.1 Creacin de un archivo de acceso secuencial mediante el uso de la serializacin de objetos 14.6.2 Lectura y deserializacin de datos de un archivo de acceso secuencial 14.7 Clases adicionales de java.io 14.8 Abrir archivos con JFileChooser 14.9 Conclusin15 Recursividad 15.1 Introduccin 15.2 Conceptos de recursividad 15.3 Ejemplo de uso de recursividad: factoriales 15.4 Ejemplo de uso de recursividad: serie de Fibonacci 15.5 La recursividad y la pila de llamadas a mtodos 15.6 Comparacin entre recursividad e iteracin 15.7 Las torres de Hanoi 15.8 Fractales 15.9 Vuelta atrs recursiva (backtracking) 15.10 Conclusin 15.11 Recursos en Internet y Web16 Bsqueda y ordenamiento 16.1 Introduccin 16.2 Algoritmos de bsqueda 16.2.1 Bsqueda lineal 16.2.2 Bsqueda binaria 16.3 Algoritmos de ordenamiento 16.3.1 Ordenamiento por seleccin 16.3.2 Ordenamiento por insercin 16.3.3 Ordenamiento por combinacin 16.4 Invariantes 16.5 Conclusin17 Estructuras de datos 17.1 Introduccin 17.2 Clases de envoltura de tipos para los tipos primitivos 17.3 Autoboxing y autounboxing601 602608 609 610 611 613 617 617 623 625 630 630 631 636 638 640 643653 654 655 655 658 661 662 664 666 676 676 676685 686 687 687 690 695 695 699 702 708 709714 715 716 716 12. Contenido17.4 Clases autorreferenciadas 17.5 Asignacin dinmica de memoria 17.6 Listas enlazadas 17.7 Pilas 17.8 Colas 17.9 rboles 17.10 Conclusin18 Genricos 18.1 Introduccin 18.2 Motivacin para los mtodos genricos 18.3 Mtodos genricos: implementacin y traduccin en tiempo de compilacin 18.4 Cuestiones adicionales sobre la traduccin en tiempo de compilacin: mtodos que utilizan un parmetro de tipo como tipo de valor de retorno 18.5 Sobrecarga de mtodos genricos 18.6 Clases genricas 18.7 Tipos crudos (raw) 18.8 Comodines en mtodos que aceptan parmetros de tipo 18.9 Genricos y herencia: observaciones 18.10 Conclusin 18.11 Recursos en Internet y Web19 Colecciones 19.1 Introduccin 19.2 Generalidades acerca de las colecciones 19.3 La clase Arrays 19.4 La interfaz Collection y la clase Collections 19.5 Listas 19.5.1 ArrayList e Iterator 19.5.2 LinkedList 19.5.3 Vector 19.6 Algoritmos de las colecciones 19.6.1 El algoritmo sort 19.6.2 El algoritmo shuffle 19.6.3 Los algoritmos reverse, fill, copy, max y min 19.6.4 El algoritmo binarySearch 19.6.5 Los algoritmos addAll, frequency y disjoint 19.7 La clase Stack del paquete java.util 19.8 La clase PriorityQueue y la interfaz Queue 19.9 Conjuntos 19.10 Mapas 19.11 La clase Properties 19.12 Colecciones sincronizadas 19.13 Colecciones no modificables 19.14 Implementaciones abstractas 19.15 Conclusin20 Introduccin a los applets de Java 20.1 Introduccin 20.2 Applets de muestra incluidos en el JDK 20.3 Applet simple en Java: cmo dibujar una cadenaxiii 717 717 718 726 730 733 739761 762 762 764 767 770 770 779 783 787 787 787792 793 794 794 797 798 799 800 805 808 809 812 815 816 818 820 822 823 826 829 832 833 834 834841 842 842 846 13. xivContenido20.4 20.5 20.6 20.7 20.820.3.1 Cmo ejecutar un applet en el appletviewer 20.3.2 Ejecucin de un applet en un explorador Web Mtodos del ciclo de vida de los applets Cmo inicializar una variable de instancia con el mtodo int Modelo de seguridad caja de arena Recursos en Internet y Web Conclusin21Multimedia: applets y aplicaciones21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8Introduccin Cmo cargar, mostrar y escalar imgenes Animacin de una serie de imgenes Mapas de imgenes Carga y reproduccin de clips de audio Reproduccin de video y otros medios con el Marco de trabajo de medios de Java Conclusin Recursos Web22 Componentes de la GUI: parte 2 22.1 Introduccin 22.2 JSlider 22.3 Ventanas: observaciones adicionales 22.4 Uso de mens con marcos 22.5 JPopupMenu 22.6 Apariencia visual adaptable 22.7 JDesktopPane y JInternalFrame 22.8 JTabbedPane 22.9 Administradores de esquemas: BoxLayout y GridBagLayout 22.10 Conclusin23 Subprocesamiento mltiple 23.1 Introduccin 23.2 Estados de los subprocesos: ciclo de vida de un subproceso 23.3 Prioridades y programacin de subprocesos 23.4 Creacin y ejecucin de subprocesos 23.4.1 Objetos Runnable y la clase Thread 23.4.2 Administracin de subprocesos con el marco de trabajo Executor 23.5 Sincronizacin de subprocesos 23.5.1 Cmo compartir datos sin sincronizacin 23.5.2 Cmo compartir datos con sincronizacin: hacer las operaciones atmicas 23.6 Relacin productor/consumidor sin sincronizacin 23.7 Relacin productor/consumidor: ArrayBlockingQueue 23.8 Relacin productor/consumidor con sincronizacin 23.9 Relacin productor/consumidor: bferes delimitados 23.10 Relacin productor/consumidor: las interfaces Lock y Condition 23.11 Subprocesamiento mltiple con GUIs 23.11.1 Realizacin de clculos en un subproceso trabajador 23.11.2 Procesamiento de resultados inmediatos con SwingWorker 23.12 Otras clases e interfaces en java.util.concurrent 23.13 Conclusin848 850 850 851 853 853 854858 859 860 862 867 869 872 876 876883 884 884 888 889 896 899 903 906 908 920925 926 927 929 931 931 934 935 936 940 943 949 952 957 964 970 970 976 982 983 14. Contenidoxv24 Redes99224.1 Introduccin 24.2 Manipulacin de URLs 24.3 Cmo leer un archivo en un servidor Web 24.4 Cmo establecer un servidor simple utilizando sockets de flujo 24.5 Cmo establecer un cliente simple utilizando sockets de flujo 24.6 Interaccin entre cliente/servidor mediante conexiones de socket de flujo 24.7 Interaccin entre cliente/servidor sin conexin mediante datagramas 24.8 Juego de Tres en raya (Gato) tipo cliente/servidor, utilizando un servidor con subprocesamiento mltiple 24.9 La seguridad y la red 24.10 [Bono Web] Ejemplo prctico: servidor y cliente DeitelMessenger 24.11 Conclusin993 994 998 1001 1003 1004 101425 Acceso a bases de datos con JDBC1021 1034 1034 1035104125.1 Introduccin 25.2 Bases de datos relacionales 25.3 Generalidades acerca de las bases de datos relacionales: la base de datos libros 25.4 SQL 25.4.1 Consulta bsica SELECT 25.4.2 La clusula WHERE 25.4.3 La clusula ORDER BY 25.4.4 Cmo fusionar datos de varias tablas: INNER JOIN 25.4.5 La instruccin INSERT 25.4.6 La instruccin UPDATE 25.4.7 La instruccin DELETE 25.5 Instrucciones para instalar MySQL y MySQL Connector/J 25.6 Instrucciones para establecer una cuenta de usuario de MySQL 25.7 Creacin de la base de datos libros en MySQL 25.8 Manipulacin de bases de datos con JDBC 25.8.1 Cmo conectarse y realizar consultas en una base de datos 25.8.2 Consultas en la base de datos libros 25.9 La interfaz RowSet 25.10 Java DB/Apache Derby 25.11 Objetos PreparedStatement 25.12 Procedimientos almacenados 25.13 Procesamiento de transacciones 25.14 Conclusin 25.15 Recursos Web y lecturas recomendadas1042 1043 1044 1047 1047 1048 1050 1051 1053 1053 1054 1055 1056 1057 1057 1057 1062 1073 1075 1076 1090 1091 1091 1092Los captulos 26 a 30 as como los apndices, los encontrar en el CD que acompaa este libro.26 Aplicaciones Web: parte 1 26.1 Introduccin 26.2 Transacciones HTTP simples 26.3 Arquitectura de aplicaciones multinivel 26.4 Tecnologas Web de Java 26.4.1 Servlets 26.4.2 JavaServer Pages 26.4.3 JavaServer Faces 26.4.4 Tecnologas Web en Java Studio Creator 21101 1102 1103 1105 1106 1106 1106 1107 1108 15. xvi 26.526.6 26.7 26.8 26.9ContenidoCreacin y ejecucin de una aplicacin simple en Java Studio Creator 2 26.5.1 Anlisis de un archivo JSP 26.5.2 Anlisis de un archivo de bean de pgina 26.5.3 Ciclo de vida del procesamiento de eventos 26.5.4 Relacin entre la JSP y los archivos de bean de pgina 26.5.5 Anlisis del XHTML generado por una aplicacin Web de Java 26.5.6 Creacin de una aplicacin Web en Java Studio Creator 2 Componentes JSF 26.6.1 Componentes de texto y grficos 26.6.2 Validacin mediante los componentes de validacin y los validadores personalizados Rastreo de sesiones 26.7.1 Cookies 26.7.2 Rastreo de sesiones con el objeto SessionBean Conclusin Recursos Web27 Aplicaciones Web: parte 2 27.1 Introduccin 27.2 Acceso a bases de datos en las aplicaciones Web 27.2.1 Creacin de una aplicacin Web que muestra datos de una base de datos 27.2.2 Modificacin del archivo de bean de pgina para la aplicacin LibretaDirecciones 27.3 Componentes JSF habilitados para Ajax 27.3.1 Biblioteca de componentes Java BluePrints 27.4 Autocomplete Text Field y formularios virtuales 27.4.1 Configuracin de los formularios virtuales 27.4.2 Archivo JSP con formularios virtuales y un AutoComplete Text Field 27.4.3 Cmo proporcionar sugerencias para un AutoComplete Text Field 27.5 Componente Map Viewer de Google Maps 27.5.1 Cmo obtener una clave de la API Google Maps 27.5.2 Cmo agregar un componente y un Map Viewer a una pgina 27.5.3 Archivo JSP con un componente Map Viewer 27.5.4 Bean de pgina que muestra un mapa en el componente Map Viewer 27.6 Conclusin 27.7 Recursos Web28 Servicios Web JAX-WS, Web 2.0 y Mash-ups 28.128.2 28.3Introduccin 28.1.1 Descarga, instalacin y configuracin de Netbeans 5.5 y Sun Java System Application Server 28.1.2 Centro de recursos de servicios Web y Centros de recursos sobre Java en www.deitel.com Fundamentos de los servicios Web de Java Creacin, publicacin, prueba y descripcin de un servicio Web 28.3.1 Creacin de un proyecto de aplicacin Web y cmo agregar una clase de servicio Web en Netbeans 28.3.2 Definicin del servicio Web EnteroEnorme en Netbeans 28.3.3 Publicacin del servicio Web EnteroEnorme desde Netbeans 28.3.4 Prueba del servicio Web EnteroEnorme con la pgina Web Tester de Sun Java System Application Server 28.3.5 Descripcin de un servicio Web con el Lenguaje de descripcin de servicios Web (WSDL)1108 1109 1111 1115 1115 1115 1117 1123 1123 1128 1137 1138 1150 1162 11631173 1174 1174 1175 1183 1185 1186 1187 1187 1189 1192 1196 1196 1196 1197 1201 1206 12061212 1213 1214 1215 1215 1216 1216 1217 1221 1222 1224 16. Contenido28.4 Cmo consumir un servicio Web 28.4.1 Creacin de un cliente para consumir el servicio Web EnteroEnorme 28.4.2 Cmo consumir el servicio Web EnteroEnorme 28.5 SOAP 28.6 Rastreo de sesiones en los servicios Web 28.6.1 Creacin de un servicio Web Blackjack 28.6.2 Cmo consumir el servicio Web Blackjack 28.7 Cmo consumir un servicio Web controlado por base de datos desde una aplicacin Web 28.7.1 Configuracin de Java DB en Netbeans y creacin de la base de datos Reservac on 28.7.2 Creacin de una aplicacin Web para interactuar con el servicio Web Reservac on 28.8 Cmo pasar un objeto de un tipo definido por el usuario a un servicio Web 28.9 Conclusin 28.10 Recursos Web29 Salida con formato 29.1 Introduccin 29.2 Flujos 29.3 Aplicacin de formato a la salida con pr ntf 29.4 Impresin de enteros 29.5 Impresin de nmeros de punto flotante 29.6 Impresin de cadenas y caracteres 29.7 Impresin de fechas y horas 29.8 Otros caracteres de conversin 29.9 Impresin con anchuras de campo y precisiones 29.10 Uso de banderas en la cadena de formato de pr ntf 29.11 Impresin con ndices como argumentos 29.12 Impresin de literales y secuencias de escape 29.13 Aplicacin de formato a la salida con la clase Formatter 29.14 Conclusin30 Cadenas, caracteres y expresiones regulares 30.1 Introduccin 30.2 Fundamentos de los caracteres y las cadenas 30.3 La clase Str ng 30.3.1 Constructores de Str ng 30.3.2 Mtodos length, charAt y getChars de Str ng 30.3.3 Comparacin entre cadenas 30.3.4 Localizacin de caracteres y subcadenas en las cadenas 30.3.5 Extraccin de subcadenas de las cadenas 30.3.6 Concatenacin de cadenas 30.3.7 Mtodos varios de String 30.3.8 Mtodo valueOf de Str ng 30.4 La clase Str ngBu lder 30.4.1 Constructores de Str ngBu lder 30.4.2 Mtodos length, capac ty, setLength y ensureCapac ty de Str ngBu lder 30.4.3 Mtodos charAt, setCharAt, getChars y reverse de Str ngBu lder 30.4.4 Mtodos append de Str ngBu lder 30.4.5 Mtodos de insercin y eliminacin de Str ngBu lder 30.5 La clase Character 30.6 La clase Str ngToken zer 30.7 Expresiones regulares, la clase Pattern y la clase Matcher 30.8 Conclusinxvii 1224 1225 1227 1234 1234 1235 1239 1249 1249 1253 1258 1266 12671275 1276 1276 1276 1277 1278 1279 1280 1283 1284 1285 1289 1290 1290 12911297 1298 1298 1299 1299 1300 1301 1305 1307 1308 1308 1309 1311 1311 1312 1313 1314 1316 1317 1321 1322 1330 17. xviiiContenidoA Tabla de precedencia de los operadores1340B Conjunto de caracteres ASCII1342C Palabras clave y palabras reservadas1343D Tipos primitivos1344E Sistemas numricos1345E.1 Introduccin E.2 Abreviatura de los nmeros binarios como nmeros octales y hexadecimales E.3 Conversin de nmeros octales y hexadecimales a binarios E.4 Conversin de un nmero binario, octal o hexadecimal a decimal E.5 Conversin de un nmero decimal a binario, octal o hexadecimal E.6 Nmeros binarios negativos: notacin de complemento a dosF GroupLayout F.1 Introduccin F.2 Fundamentos de GroupLayout F.3 Creacin de un objeto SelectorColores F.4 Recursos Web sobre GroupLayoutG Componentes de integracin Java Desktop (JDIC) G.1 Introduccin G.2 Pantallas de inicio G.3 La clase Desktop G.4 Iconos de la bandeja G.5 Proyectos JDIC Incubator G.6 Demos de JDIC1346 1348 1349 1350 1351 13521357 1357 1357 1358 13671368 1368 1368 1370 1371 1373 1373H Mashups1374ndice1381 18. Prefacio No vivas ms en fragmentos, slo conctate. Edgar Morgan Foster Bienvenido a Java y Cmo programar en Java, 7 edicin! En Deitel & Associates escribimos para Prentice Hall libros de texto sobre lenguajes de programacin y libros de nivel profesional, impartimos capacitacin a empresas en todo el mundo y desarrollamos negocios en Internet. Fue un placer escribir esta edicin ya que refleja cambios importantes en el lenguaje Java y en las formas de impartir y aprender programacin. Se han realizado ajustes considerables en todos los captulos.Caractersticas nuevas y mejoradasHe aqu una lista de las actualizaciones que hemos realizado a la 6 y 7 ediciones: Actualizamos todo el libro a la nueva plataforma Java Standard Edition 6 (Mustang) y lo revisamos cuidadosamente, en base a la Especificacin del lenguaje Java. Revisamos la presentacin conforme a las recomendaciones del currculum de ACM/IEEE. Reforzamos nuestra pedagoga anticipada sobre las clases y los objetos, poniendo especial atencin a la orientacin de los profesores universitarios en nuestros equipos de revisin, para asegurarnos de obtener el nivel conceptual correcto. Todo el libro est orientado a objetos, y las explicaciones sobre la POO son claras y accesibles. En el captulo 1 presentamos los conceptos bsicos y la terminologa de la tecnologa de objetos. Los estudiantes desarrollan sus primeras clases y objetos personalizados en el captulo 3. Al presentar los objetos y las clases en los primeros captulos, hacemos que los estudiantes piensen acerca de objetos de inmediato, y que dominen estos conceptos con ms profundidad. La primera presentacin de clases y objetos incluye los ejemplos prcticos de las clases T empo, Empleado y L broCal ficac ones, los cuales van haciendo su propio camino a travs de varias secciones y captulos, presentando conceptos de OO cada vez ms profundos. Los profesores que imparten cursos introductorios tienen una amplia opcin en cuanto a la cantidad de GUI y grficos a cubrir; desde cero, a una secuencia introductoria de diez secciones breves, hasta un tratamiento detallado en los captulos 11, 12 y 22, y en el apndice F. Adaptamos nuestra presentacin orientada a objetos para utilizar la versin ms reciente de UMLTM (Lenguaje Unificado de ModeladoTM): UMLTM 2, el lenguaje grfico estndar en la industria para modelar sistemas orientados a objetos. En los captulos 1-8 y 10 presentamos y adaptamos el ejemplo prctico opcional del cajero automtico (ATM) de DOO/UML 2. Incluimos un apndice Web adicional, con la implementacin completa del cdigo. D un vistazo a los testimonios que se incluyen en la parte posterior del libro. Agregamos varios ejemplos prcticos sustanciales sobre programacin Web orientada a objetos. Actualizamos el captulo 25, Acceso a bases de datos con JDBC, para incluir JDBC 4 y utilizar el nuevo sistema de administracin de bases de datos Java DB/Apache Derby, adems de MySQL. Este captulo incluye un ejemplo prctico OO sobre el desarrollo de una libreta de direcciones controlada por una base de datos, la cual demuestra las instrucciones preparadas y el descubrimiento automtico de controladores de JDBC 4. Agregamos los captulos 26 y 27, Aplicaciones Web: partes 1 y 2, que introducen la tecnologa Java-Server Faces (JSF) y la utilizan con Sun Java Studio Creador 2 para construir aplicaciones Web de una manera rpida y sencilla. El captulo 26 incluye ejemplos sobre la creacin de GUIs de aplicaciones Web, 19. xxPrefacioel manejo de eventos, la validacin de formularios y el rastreo de sesiones. El material de JSF sustituye los captulos anteriores sobre servlets y JavaServer Pages (JSP). Agregamos el captulo 27, Aplicaciones Web: parte 2, que habla acerca del desarrollo de aplicaciones Web habilitadas para Ajax, usando las tecnologas JavaServer Faces y Java BluePrints. Este captulo incluye una aplicacin de libreta de direcciones Web multiniveles, controlada por una base de datos, que permite a los usuarios agregar y buscar contactos, y mostrar las direcciones de los contactos en mapas de GoogleTM Maps. Esta aplicacin habilitada para Ajax le proporciona una sensacin real del desarrollo Web 2.0. La aplicacin utiliza Componentes JSF habilitados para Ajax para sugerir los nombres de los contactos, mientras el usuario escribe un nombre para localizar y mostrar una direccin localizada en un mapa de Google Maps. Agregamos el captulo 28, Servicios Web JAX-WS, Web 2.0 y Mash-ups que utiliza un mtodo basado en herramientas para crear y consumir servicios Web, una capacidad tpica de Web 2.0. Los ejemplos prcticos incluyen el desarrollo de los servicios Web del juego de blackjack y un sistema de reservaciones de una aerolnea. Utilizamos el nuevo mtodo basado en herramientas para desarrollar aplicaciones Web con rapidez; todas las herramientas pueden descargarse sin costo. Fundamos la Iniciativa Deitel de Negocios por Internet (Deitel Internet Business Initiative) con 60 nuevos centros de recursos para apoyar a nuestros lectores acadmicos y profesionales. D un vistazo a nuestros nuevos centros de recursos (www.deitel.com/resourcecenters.html), incluyendo: Java SE 6 (Mustang), Java, Evaluacin y Certificacin de Java, Patrones de Diseo de Java, Java EE 5, Motores de Bsqueda de Cdigo y Sitios de Cdigo, Programacin de Juegos, Proyectos de Programacin y muchos ms. Regstrese en el boletn de correo electrnico gratuito Deitel Buzz Online (www.deitel. com/newsletter/subscribe.html); cada semana anunciamos nuestro(s) centro(s) de recurso(s) ms reciente(s); adems incluimos otros temas de inters para nuestros lectores. Hablamos sobre los conceptos clave de la comunidad de ingeniera de software, como Web 2.0, Ajax, SOA, servicios Web, software de cdigo fuente abierto, patrones de diseo, mashups, refabricacin, programacin extrema, desarrollo gil de software, prototipos rpidos y mucho ms. Rediseamos por completo el captulo 23, Subprocesamiento mltiple [nuestro agradecimiento especial a Brian Goetz y Joseph Bowbeer, coautores de Java Concurrency in Practice, Addison-Wesley, 2006]. Hablamos sobre la nueva clase SwingWorker para desarrollar interfaces de usuario con subprocesamien-to mltiple. Hablamos sobre los nuevos Componentes de Integracin de Escritorio de Java (JDIC), como las pantallas de inicio (splash screens) y las interacciones con la bandeja del sistema. Hablamos sobre el nuevo administrador de esquemas GroupLayout en el contexto de la herramienta de diseo de GUI NetBeans 5.5 Matisse para crear GUIs portables que se adhieran a los lineamientos de diseo de GUI de la plataforma subyacente. Presentamos las nuevas caractersticas de ordenamiento y filtrado de JTable, que permiten al usuario reordenar los datos en un objeto JTable y filtrarlos mediante expresiones regulares. Presentamos un tratamiento detallado de los genricos y las colecciones de genricos. Introducimos los mashups, aplicaciones que, por lo general, se crean mediante llamadas a servicios Web (y/o usando fuentes RSS) de dos o ms sitios; otra caracterstica tpica de Web 2.0. Hablamos sobre la nueva clase StringBuilder, que tiene un mejor desempeo que StringBuffer en aplicaciones sin subprocesamiento. Presentamos las anotaciones, que reducen en gran parte la cantidad de cdigo necesario para crear aplicaciones. Las caractersticas que se presentan en Cmo programar en Java, 7a edicin, incluyen: Cmo obtener entrada con formato mediante la clase Scanner. Mostrar salida con formato mediante el mtodo printf del objeto System.out. 20. PrefacioxxiInstrucciones for mejoradas para procesar elementos de arreglos y colecciones. Declaracin de mtodos con listas de argumentos de longitud variable (varargs). Uso de clases enum que declaran conjuntos de constantes. Importacin de los miembros static de una clase para usarlos en otra. Conversin de valores de tipo primitivo a objetos de envolturas de tipo y viceversa, usando autoboxing y auto-unboxing, respectivamente. Uso de genricos para crear modelos generales de mtodos y clases que pueden declararse una vez, pero usarse con muchos tipos de datos distintos. Uso de las estructuras de datos mejoradas para genricos de la API Collections. Uso de la API Concurrency para implementar aplicaciones con subprocesamiento mltiple. Uso de objetos RowSet de JDBC para acceder a los datos en una base de datos. Todo esto ha sido revisado cuidadosamente por distinguidos profesores y desarrolladores de la industria, que trabajaron con nosotros en Cmo programar en Java 6 y 7 ediciones. Creemos que este libro y sus materiales de apoyo proporcionarn a los estudiantes y profesionales una experiencia informativa, interesante, retadora y placentera. El libro incluye una extensa suite de materiales complementarios para ayudar a los profesores a maximizar la experiencia de aprendizaje de sus estudiantes. Cmo programar en Java 7 edicin presenta cientos de programas completos y funcionales, y describe sus entradas y salidas. ste es nuestro caracterstico mtodo de cdigo activo (live code); presentamos la mayora de los conceptos de programacin de Java en el contexto de programas funcionales completos. Si surge alguna duda o pregunta a medida que lee este libro, enve un correo electrnico a deitel@deitel. com; le responderemos a la brevedad. Para obtener actualizaciones sobre este libro y el estado de todo el software de soporte de Java, adems de las noticias ms recientes acerca de todas las publicaciones y servicios de Deitel, visite www.deitel.com. Regstrese en www.deitel.com/newsletter/subscribe.html para obtener el boletn de correo electrnico Deitel Buzz Online y visite la pgina www.deitel.com/resourcecenters.html para tener acceso a nuestra lista creciente de centros de recursos.Uso de UML 2 para desarrollar un diseo orientado a objetos de un ATM. UML 2 se ha convertido en el lenguaje de modelado grfico preferido para disear sistemas orientados a objetos. Todos los diagramas de UML en el libro cumplen con la especificacin UML 2. Utilizamos los diagramas de actividad de UML para demostrar el flujo de control en cada una de las instrucciones de control de Java, y usamos los diagramas de clases de UML para representar las clases y sus relaciones de herencia en forma visual. Incluimos un ejemplo prctico opcional (pero altamente recomendado) acerca del diseo orientado a objetos mediante el uso de UML. La revisin del ejemplo prctico estuvo a cargo de un distinguido equipo de profesores y profesionales de la industria relacionados con DOO/UML, incluyendo lderes en el campo de Rational (los creadores de UML) y el Grupo de administracin de objetos (responsable de la evolucin de UML). En el ejemplo prctico, diseamos e implementamos por completo el software para un cajero automtico (ATM) simple. Las secciones Ejemplo prctico de Ingeniera de Software al final de los captulos 1 a 8 y 10 presentan una introduccin cuidadosamente planeada al diseo orientado a objetos mediante el uso de UML. Presentamos un subconjunto conciso y simplificado de UML 2, y despus lo guiamos a travs de su primera experiencia de diseo, ideada para los principiantes. El ejemplo prctico no es un ejercicio, sino una experiencia de aprendizaje de principio a fin, que concluye con un recorrido detallado a travs del cdigo completo en Java. Las secciones del Ejemplo Prctico de Ingeniera de Software ayudan a los estudiantes a desarrollar un diseo orientado a objetos para complementar los conceptos de programacin orientada a objetos que empiezan a aprender en el captulo 1, y que implementan en el captulo 3. En la primera de estas secciones, al final del captulo 1, introducimos los conceptos bsicos y la terminologa del DOO. En las secciones opcionales Ejemplo Prctico de Ingeniera de Software al final de los captulos 2 a 5, consideramos cuestiones ms sustanciales al emprender la tarea de resolver un problema retador con las tcnicas del DOO. Analizamos un documento de requerimientos tpico que especifica un sistema a construir, determina los objetos necesarios para implementar ese sistema, establece los atributos que deben tener estos objetos, fija los comportamientos que deben exhibir estos objetos y especifica la forma en que deben interactuar los objetos entre s para cumplir con los requerimientos del sistema. En un apndice 21. xxiiPrefacioWeb adicional presentamos el cdigo completo de una implementacin en Java del sistema orientado a objetos que diseamos en los primeros captulos. El ejemplo prctico ayuda a preparar a los estudiantes para los tipos de proyectos sustanciales que encontrarn en la industria. Empleamos un proceso de diseo orientado a objetos cuidadosamente desarrollado e incremental para producir un modelo en UML 2 para nuestro sistema ATM. A partir de este diseo, producimos una implementacin sustancial funcional en Java, usando las nociones clave de la programacin orientada a objetos, incluyendo clases, objetos, encapsulamiento, visibilidad, composicin, herencia y polimorfismo. Grfico de dependencias En el grfico de la siguiente pgina se muestra las dependencias entre los captulos, para ayudar a los profesores a planear su programa de estudios. Cmo programar en Java 7' edicin es un libro extenso, apropiado para una variedad de cursos de programacin en distintos niveles. Los captulos 1-14 forman una secuencia de programacin elemental accesible, con una slida introduccin a la programacin orientada a objetos. Los captulos 11, 12, 20, 21 y 22 forman una secuencia sustancial de GUI, grficos y multimedia. Los captulos 15 a 19 forman una excelente secuencia de estructuras de datos. Los captulos 24 a 28 forman una clara secuencia de desarrollo Web con uso intensivo de bases de datos.Mtodo de enseanzaCmo programar en Java 7' edicin contiene una extensa coleccin de ejemplos. El libro se concentra en los principios de la buena ingeniera de software, haciendo hincapi en la claridad de los programas. Enseamos mediante ejemplos. Somos educadores que impartimos temas de vanguardia en salones de clases de la industria alrededor del mundo. El Dr. Harvey M. Deitel tiene 20 aos de experiencia en la enseanza universitaria y 17, en la enseanza en la industria. Paul Deitel tiene 15 aos de experiencia en la enseanza en la industria. Juntos han impartido cursos, en todos los niveles, a clientes gubernamentales, industriales, militares y acadmicos de Deitel & Associates. Mtodo del cdigo activo. Cmo programar en Java 7' edicin est lleno de ejemplos de cdigo activo; esto significa que cada nuevo concepto se presenta en el contexto de una aplicacin en Java completa y funcional, que es seguido inmediatamente por una o ms ejecuciones actuales, que muestran las entradas y salidas del programa. Este estilo ejemplifica la manera en que enseamos y escribimos acerca de la programacin; a ste le llamamos el mtodo del cdigo activo. Resaltado de cdigo. Colocamos rectngulos de color gris alrededor de los segmentos de cdigo clave en cada programa. Uso de fuentes para dar nfasis. Colocamos los trminos clave y la referencia a la pgina del ndice para cada ocurrencia de definicin en texto en negritas para facilitar su referencia. Enfatizamos los componentes en pantalla en la fuente Helvtica en negritas (por ejemplo, el men Archivo) y enfatizamos el texto del programa en la fuente Lucida (por ejemplo, int x = 5). Acceso Web. Todos los ejemplos de cdigo fuente para Cmo programar en Java 7' edicin (y para nuestras otras publicaciones) se pueden descargar en: www.deitel.com/books/jhtp7 www.pearsoneducacion.net/deitelEl registro en el sitio es un proceso fcil y rpido. Descargue todos los ejemplos y, a medida que lea las correspondientes discusiones en el libro de texto, despus ejecute cada programa. Realizar modificaciones a los ejemplos y ver los efectos de esos cambios es una excelente manera de mejorar su experiencia de aprendizaje en Java. Objetivos. Cada captulo comienza con una declaracin de objetivos. Esto le permite saber qu es lo que debe esperar y le brinda la oportunidad, despus de leer el captulo, de determinar si ha cumplido con ellos. Frases. Despus de los objetivos de aprendizaje aparecen una o ms frases. Algunas son graciosas, otras filosficas y las dems ofrecen ideas interesantes. Esperamos que disfrute relacionando las frases con el material del captulo. 22. Prefacioxxiii1 Introduccin a las computadoras, Internet y Web 29 Salida con formato (la mayor parte)2 Introduccin a las aplicaciones en Java (Opcional) Ruta de GUI y grficos3 Introduccin a las clases y los objetos3.9 Uso de cuadros de dilogo4 Instrucciones de control: parte 14.14 Creacin de dibujos simples5 Instrucciones de control: parte 25.10 Dibujo de rectngulos y valos6 Mtodos: Un anlisis ms detallado6.13 Colores y figuras rellenas7 Arreglos7.13 Cmo dibujar arcos30 Cadenas, caracteres y expresiones regulares8 Clases y objetos: un anlisis ms detallado 9 Programacin orientada a objetos: herencia16 Bsqueda y ordenamiento17 Estructuras de datos 18 Genricos 19 Colecciones9.8 Mostrar texto e imgenes usando etiquetas10 Programacin orientada a objetos: polimorfismo15 Recursividad38.18 Uso de objetos con grficos10.8 Realizar dibujos mediante el polimorfismo13 Manejo de excepciones111 Componentes de la GUI: parte 114 Archivos y flujos25 Acceso a base de datos con JDBC112 Grficos y Java2DTM 20 Introduccin a los applets de Java24 Redes 2 26 Aplicaciones Web: parte 123 Subprocesamiento mltiple427 Aplicaciones Web: parte 2 28 Servicios Web JAX-WS, Web 2.0 y Mash-ups21 Multimedia: applets y aplicaciones 22 Componentes de la GUI: parte 21. Los captulos 13 y 25 dependen del captulo 11 para la GUI que se utiliza en un ejemplo. 2. El captulo 24 depende del captulo 20 para un ejemplo que utiliza un applet. El ejemplo prctico extenso al final de este captulo depende del captulo 22 para la GUI y del captulo 23 para el subprocesamiento mltiple. 3. El captulo 15 depende de los captulos 11 y 12 para la GUI y los grficos que se utilizan en un ejemplo. 4. El captulo 23 depende del captulo 11 para la GUI que se utiliza en un ejemplo, y de los captulos 18-19 para un ejemplo.Plan general. El plan general de cada captulo le permite abordar el material de manera ordenada, para poder anticiparse a lo que est por venir y establecer un ritmo cmodo y efectivo de aprendizaje. Ilustraciones/Figuras. Incluimos una gran cantidad de grficas, tablas, dibujos lineales, programas y salidas de programa. Modelamos el flujo de control en las instrucciones de control mediante diagramas de actividad en 23. PrefacioxxivUML. Los diagramas de clases de UML modelan los campos, constructores y mtodos de las clases. En el ejemplo prctico opcional del ATM de DOO/UML 2 hacemos uso extensivo de seis tipos principales de diagramas en UML.Tips de programacin. Incluimos tips de programacin para ayudarle a enfocarse en los aspectos importantesdel desarrollo de programas. Estos tips y prcticas representan lo mejor que hemos podido recabar a lo largo de seis dcadas combinadas de experiencia en la programacin y la enseanza. Una de nuestras alumnas, estudiante de matemticas, recientemente nos coment que siente que este mtodo es similar al de resaltar axiomas, teoremas y corolarios en los libros de matemticas, ya que proporciona una base slida sobre la cual se puede construir buen software.Buena prctica de programacin Las buenas prcticas de programacin llaman la atencin hacia tcnicas que le ayudarn a producir programas ms claros, comprensibles y fciles de mantener.Error comn de programacin Con frecuencia, los estudiantes tienden a cometer ciertos tipos de errores; al poner atencin en estos Errores comunes de programacin se reduce la probabilidad de que usted pueda cometerlos.Tip para prevenir errores Estos tips contienen sugerencias para exponer los errores y eliminarlos de sus programas; muchos de ellos describen aspectos de Java que evitan que los errores entren a los programas.Tip de rendimiento A los estudiantes les gusta turbo cargar sus programas. Estos tips resaltan las oportunidades para hacer que sus programas se ejecuten ms rpido, o para minimizar la cantidad de memoria que ocupan.Tip de portabilidad Incluimos Tips de portabilidad para ayudarle a escribir el cdigo que pueda ejecutarse en una variedad de plataformas, y que expliquen cmo es que Java logra su alto grado de portabilidad.Observacin de ingeniera de software Las Observaciones de ingeniera de software resaltan los asuntos de arquitectura y diseo, lo cual afecta la construccin de los sistemas de software, especialmente los de gran escala. Ar ch i vo Nu ev o Ab r ir . .. Cer r arObservaciones de apariencia visual Le ofrecemos Observaciones de apariencia visual para resaltar las convenciones de la interfaz grfica de usuario. Estas observaciones le ayudan a disear interfaces grficas de usuario atractivas y amigables para el usuario, en conformidad con las normas de la industria.Seccin de conclusin. Cada uno de los captulos termina con una seccin breve de conclusin, que recapitula el contenido del captulo y la transicin al siguiente captulo. Vietas de resumen. Cada captulo termina con estrategias pedaggicas adicionales. Presentamos un resumen detallado del captulo, estilo lista con vietas, seccin por seccin.Terminologa. Incluimos una lista alfabetizada de los trminos importantes definidos en cada captulo. Ejercicios de autoevaluacin y respuestas. Se incluyen diversos ejercicios de autoevaluacin con sus respuestas, para que los estudiantes practiquen por su cuenta. 24. PrefacioxxvEjercicios. Cada captulo concluye con un diverso conjunto de ejercicios, incluyendo recordatorios simples de terminologa y conceptos importantes; identificar los errores en muestras de cdigo, escribir instrucciones individuales de programas; escribir pequeas porciones de mtodos y clases en Java; escribir mtodos, clases y programas completos; y crear proyectos finales importantes. El extenso nmero de ejercicios permite a los instructores adaptar sus cursos a las necesidades nicas de sus estudiantes, y variar las asignaciones de los cursos cada semestre. Los profesores pueden usar estos ejercicios para formar tareas, exmenes cortos, exmenes regulares y proyectos finales. [NOTA: No nos escriba para solicitarnos acceso al Centro de Recursos para Instructores. El acceso est limitado estrictamente a profesores universitarios que impartan clases en base al libro. Los profesores slo pueden obtener acceso a travs de los representantes de Pearson Educacin]. Asegrese de revisar nuestro centro de recursos de proyectos de programacin (http://www.de tel.com/ Programm ngProjects/) para obtener muchos ejercicios adicionales y posibilidades de proyectos. Miles de entradas en el ndice. Hemos incluido un extenso ndice, que es til, en especial, cuando se utiliza el libro como referencia. Doble indexado de ejemplos de cdigo activo de Java. Para cada programa de cdigo fuente en el libro, indexamos la leyenda de la figura en forma alfabtica y como subndice, bajo Ejemplos. Esto facilita encontrar los ejemplos usando las caractersticas especiales.Recursos para el estudiante incluidos en Cmo programar en Java 7 edicin Hay, disponibles a la venta, una variedad de herramientas de desarrollo, pero ninguna de ellas es necesaria para comenzar a trabajar con Java. Escribimos Cmo programar en Java 7' edicin utilizando slo el nuevo Kit de Desarrollo de Java Standard Edition (JDK), versin 6.0. Puede descargar la versin actual del JDK del sitio Web de Java de Sun: java.sun.com/javase/downloads/ ndex.jsp. Este sitio tambin contiene las descargas de la documentacin del JDK. El CD que se incluye con este libro contienen el Entorno de Desarrollo Integrado (IDE) NetBeansTM 5.5 para desarrollar todo tipo de aplicaciones en Java, y el software Sun JavaTM Studio Creator 2 Update 1 para el desarrollo de aplicaciones Web. Se proporciona tambin una versin en Windows de MySQL 5.0 Community Edition 5.0.27 y MySQL Connector/J 5.0.4, para el procesamiento de datos que se lleva a cabo en los captulos 25 a 28. El CD tambin contiene los ejemplos del libro y una pgina Web con vnculos al sitio Web de Deitel & Associates, Inc. Puede cargar esta pgina Web en un explorador Web para obtener un rpido acceso a todos los recursos. Encontrar recursos adicionales y descargas de software en nuestro centro de recursos de Java SE 6 (Mustang), ubicado en: www.de tel.com/JavaSE6Mustang/Java Multimedia Cyber Classroom 7 edicinCmo programar en Java 7' edicin incluye multimedia interactiva con mucho audio y basada en Web, complementaria para el libro Java Multimedia Cyber Classroom, 7' edicin, disponible en ingls. Nuestro Ciber saln de clases (Cyber Classroom) basado en Web incluye recorridos con audio de los ejemplos de cdigo de los captulos 1 a 14, soluciones a casi la mitad de los ejercicios del libro, un manual de laboratorio y mucho ms. Para obtener ms informacin acerca del Cyber Classroom basado en Web, visite: www.prenhall.com/de tel/cyberclassroom/A los estudiantes que utilizan nuestros Ciber salones de clases les gusta su interactividad y capacidades de referencia. Los profesores nos dicen que sus estudiantes disfrutan al utilizar el Ciber saln de clases y, en consecuencia, invierten ms tiempo en los cursos, dominando un porcentaje mayor del material que en los cursos que slo utilizan libros de texto. 25. xxviPrefacioRecursos para el instructor de Cmo programar en Java 7 edicin Cmo programar en Java 7' edicin tiene una gran cantidad de recursos para los profesores. El Centro de Recursos para Instructores de Prentice Hall contiene el Manual de soluciones, con respuestas para la mayora de los ejercicios al final de cada captulo, un Archivo de elementos de prueba de preguntas de opcin mltiple (aproximadamente dos por cada seccin del libro) y diapositivas en PowerPoint que contienen todo el cdigo y las figuras del texto, adems de los elementos en vietas que sintetizan los puntos clave del libro. Los profesores pueden personalizar las diapositivas. Si usted todava no es un miembro acadmico registrado, pngase en contacto con su representante de Pearson Educacin. Cabe mencionar que todos estos recursos se encuentran en ingls.Boletn de correo electrnico gratuito Deitel Buzz Online Cada semana, el boletn de correo electrnico Deitel Buzz Online anuncia nuestro(s) centro(s) de recursos ms reciente(s) e incluye comentarios acerca de las tendencias y desarrollos en la industria, vnculos a artculos y recursos gratuitos de nuestros libros publicados y de las prximas publicaciones, itinerarios de lanzamiento de productos, fe de erratas, retos, ancdotas, informacin sobre nuestros cursos de capacitacin corporativa impartidos por instructores y mucho ms. Tambin es una buena forma para que usted se mantenga actualizado acerca de todo lo relacionado con Cmo programar en Java 7' edicin. Para suscribirse, visite la pgina Web: www.deitel.com/newsletter/subscribe.htmlNovedades en Deitel Centros de recursos y la iniciativa de negocios por Internet de Deitel. Hemos creado muchos centros de recursos en lnea (en www.deitel.com/resourcecenters.html) para mejorar su experiencia de aprendizaje en Java. Anunciamos nuevos centros de recursos en cada edicin del boletn de correo electrnico Deitel Buzz Online. Aquellos de especial inters para los lectores de este libro incluyen: Java, Certificacin en Java, Patrones de Diseo en Java, Java EE 5, Java SE 6, AJAX, Apache, Motores de Bsqueda de Cdigo y Sitios de Cdigo, Eclipse, Programacin de Juegos, Mashups, MySQL, Cdigo Abierto, Proyectos de Programacin, Web2.0, Web 3.0, Servicios Web y XML. Los centros de recursos de Deitel adicionales incluyen: Programas Afiliados, Servicios de Alerta, ASP.NET, Economa de Atencin, Creacin de Comunidades Web, C, C++, C#, Juegos de Computadora, DotNetNuke, FireFox, Gadgets, Google AdSense, Google Analytics, Google Base, Google Services, Google Video, Google Web Toolkit, IE7, Iniciativa de Negocios por Internet, Publicidad por Internet, Internet Video, Linux, Microformatos, .NET, Ning, OpenGL, Perl, PHP, Podcasting, Python, Recommender Systems, RSS, Ruby, Motores de Bsqueda, Optimizacin de Motores de Bsqueda, Skype, Sudoku, Mundos Virtuales, Visual Basic, Wikis, Windows Vista, WinFX y muchos ms por venir. Iniciativa de contenido libre. Nos complace ofrecerle artculos de invitados y tutoriales gratuitos, seleccionados de nuestras publicaciones actuales y futuras como parte de nuestra iniciativa de contenido libre. En cada tema del boletn de correo electrnico Deitel Buzz Online, anunciamos las adiciones ms recientes a nuestra biblioteca de contenido libre.Reconocimientos Uno de los mayores placeres al escribir un libro de texto es el de reconocer el esfuerzo de mucha gente, cuyos nombres quiz no aparezcan en la portada, pero cuyo arduo trabajo, cooperacin, amistad y comprensin fue crucial para la elaboracin de este libro. Mucha gente en Deitel & Associates, Inc. dedic largas horas a este proyecto; queremos agradecer en especial a Abbey Deitel y Barbara Deitel. Tambin nos gustara agradecer a dos participantes de nuestro programa de Pasanta con Honores, que contribuyeron a esta publicacin: Megan Shuster, con especialidad en ciencias computacionales en el Swarthmore College, y Henry Klementowicz, con especialidad en ciencias computacionales en la Universidad de Columbia. Nos gustara mencionar nuevamente a nuestros colegas que realizaron contribuciones importantes a Cmo programar en Java 6' edicin: Andrew B. Goldberg, Jeff Listfield, Su Zhang, Cheryl Yaeger, Jing Hu, Sin Han Lo, John Paul Casiello y Christi Kelsey. Somos afortunados al haber trabajado en este proyecto con un talentoso y dedicado equipo de editores profesionales en Prentice Hall. Apreciamos el extraordinario esfuerzo de Marcia Horton, Directora Editorial de la Divisin de Ingeniera y Ciencias Computacionales de Prentice Hall. Jennifer Cappello y Dolores Mars hicieron 26. Prefacioxxviiun excelente trabajo al reclutar el equipo de revisin del libro y administrar el proceso de revisin. Francesco Santalucia (un artista independiente) y Kristine Carney de Prentice Hall hicieron un maravilloso trabajo al disear la portada del libro; nosotros proporcionamos el concepto y ellos lo hicieron realidad. Vince OBrien, Bob Engelhardt, Donna Crilly y Marta Samsel hicieron un extraordinario trabajo al administrar la produccin del libro. Deseamos reconocer el esfuerzo de nuestros revisores. Al adherirse a un estrecho itinerario, escrutinizaron el texto y los programas, proporcionando innumerables sugerencias para mejorar la precisin e integridad de la presentacin. Apreciamos con sinceridad los esfuerzos de nuestros revisores de post-publicacin de la 6 edicin, y nuestros revisores de la 7 edicin: Revisores de Cmo programar en Java 7' edicin(incluyendo los revisores de la post-publicacin de la 6' edicin)Revisores de Sun Microsystems: Lance Andersen (Lder de especificaciones de JDBC/Rowset, Java SE Engineering), Ed Burns, Ludovic Champenois (Servidor de Aplicaciones de Sun para programadores de Java EE con Sun Application Server y herramientas: NetBeans, Studio Enterprise y Studio Creador), James Davidson, Vadiraj Deshpande (Grupo de Integracin de Sistemas de Java Enterprise, Sun Microsystems India), Sanjay Dhamankar (Grupo Core Developer Platform), Jesse Glick (Grupo NetBeans), Brian Goetz (autor de Java Con-currency in Practice, Addison-Wesley, 2006), Doug Kohlert (Grupo Web Technologies and Standards), Sandeep Konchady (Organizacin de Ingeniera de Software de Java), John Morrison (Grupo Portal Server Product de Sun Java System), Winston Prakash, Brandon Taylor (grupo SysNet dentro de la Divisin de Software) y Jayashri Visvanathan (Equipo de Java Studio Creador de Sun Microsystems). Revisores acadmicos y de la industria: Akram Al-Rawi (Universidad King Faisal), Mark Biamonte (DataDiret), Ayad Boudiab (Escuela Internacional de Choueifat, Lbano), Joe Bowbeer (Mobile App Consulting), Harlan Brewer (Select Engineering Services), Marita Ellixson (Eglin AFB, Universidad Indiana Wesleyan, Facilitador en Jefe), John Goodson (DataDiret), Anne Horton (Lockheed Martin), Terrell Regis Hull (Logicalis Integration Solutions), Clark Richey (RABA Technologies, LLC, Java Sun Champion), Manfred Riem (UTA Interactive, LLC, Java Sun Champion), Karen Tegtmeyer (Model Technologies, Inc.), David Wolf (Universidad Pacific Lutheran) y Hua Yan (Borough of Manhattan Community Collage, City University of New York). Revisores de la post-publicacin de Cmo programar en Java 6 edicin: Anne Horton (Lockheed Martin), William Martz (Universidad de Colorado, en Colorado Springs), Bill OFarrell (IBM), Jeffry Babb (Universidad Virginia Commonwealth), Jeffrey Six (Universidad de Delaware, Instalaciones Adjuntas), Jesse Glick (Sun Microsystems), Karen Tegtmeyer (Model Technologies, Inc.), Kyle Gabhart (L-3 Communications), Marita Ellixson (Eglin AFB, Universidad Indiana Wesleyan, Facilitador en Jefe) y Sean Santry (Consultor independiente). Revisores de Cmo programar en Java 6' edicin (incluyendo a los revisores de la post-publicacin de la 5' edicin)Revisores acadmicos: Karen Arlien (Colegio Estatal de Bismarck), Ben Blake (Universidad Estatal de Cleve-land), Walt Bunch (Universidad Chapman), Marita Ellixson (Eglin AFB/Universidad de Arkansas), Ephrem Eyob (Universidad Estatal de Virginia), Bjorn Foss (Universidad Metropolitana de Florida), Bill Freitas (The Lawrenceville School), Joe Kasprzyk (Colegio Estatal de Salem), Brian Larson (Modesto Junior College), Roberto Lopez-Herrejon (Universidad de Texas en Austin), Dean Mellas (Cerritos College), David Messier (Eastern Uni-versity), Andy Novobilski (Universidad de Tennessee, Chattanooga), Richard Ord (Universidad de California, San Diego), Gavin Osborne (Saskatchewan Institute of Applied Science & Technology), Donna Reese (Universidad Estatal de Mississippi), Craig Slinkman (Universidad de Texas en Arlington), Sreedhar Thota (Western Iowa Tech Community Collage), Mahendran Velauthapillai (Universidad de Georgetown), Loran Walter (Universidad Tecnolgica de Lawrence) y Stephen Weiss (Universidad de Carolina del Norte en Chapel Hill). Revisores de la industria: Butch Anton (Wi-Tech Consulting), Jonathan Bruce (Sun Microsystems, Inc.; Lder de Especificaciones de JCP para JDBC), Gilad Bracha (Sun Microsystems, Inc.; Lder de Especificaciones de JCP para Genricos), Michael Develle (Consultor independiente), Jonathan Gadzik (Consultor independiente), Brian Goetz (Quiotix Corporation (Miembro del Grupo de Expertos de Especificaciones de Herramientas de Concurrencia de JCP), Anne Horton (AT&T Bell Laboratories), James Huddleston (Consultor independiente), Peter Jones (Sun Microsystems, Inc.), Doug Kohlert (Sun Microsystems, Inc.), Earl LaBatt (Altaworks Corp./Universidad de New Hampshire), Paul Monday (Sun Microsystems, Inc.), Bill OFarrell (IBM), Cameron Skinner (Embarcadero Technologies, Inc.), Brandon Taylor (Sun Microsystems, Inc.) y Karen Tegtmeyer (Consultor indepen- 27. xxviiiPrefaciodiente). Revisores del ejemplo prctico opcional de DOO/UML: Sinan Si Alhir (Consultor independiente), Gene Ames (Star HRG), Jan Bergandy (Universidad de Massachussetts en Dartmouth), Marita Ellixson (Eglin AFB/Universidad de Arkansas), Jonathan Gadzik (Consultor independiente), Thomas Harder (ITT ESI, Inc.), James Huddleston (Consultor independiente), Terrell Hull (Consultor independiente), Kenneth Hussey (IBM), Joe Kasprzyk (Colegio Estatal de Salem), Dan McCracken (City College of New York), Paul Monday (Sun Microsystems, Inc.), Davyd Norris (Rational Software), Cameron Skinner (Embarcadero Technologies, Inc.), Craig Slinkman (Universidad de Texas en Arlington) y Steve Tockey (Construx Software). Estos profesionales revisaron cada aspecto del libro y realizaron innumerables sugerencias para mejorar la precisin e integridad de la presentacin. Bueno ah lo tiene! Java es un poderoso lenguaje de programacin que le ayudar a escribir programas con rapidez y eficiencia. Escala sin problemas hacia el mbito del desarrollo de sistemas empresariales, para ayudar a las organizaciones a crear sus sistemas de informacin crticos. A medida que lea el libro, apreciaremos con sinceridad sus comentarios, crticas, correcciones y sugerencias para mejorar el texto. Dirija toda su correspondencia a: [email protected] responderemos oportunamente y publicaremos las correcciones y aclaraciones en nuestro sitio Web, www.deitel.com/books/jHTP7/Esperamos que disfrute aprendiendo con este libro tanto como nosotros disfrutamos el escribirlo! Paul J. Deitel Dr. Harvey M. Deitel Maynard, Massachussets Diciembre del 2006Acerca de los autores Paul J. Deitel, CEO y Director Tcnico de Deitel & Associates, Inc., es egresado del Sloan School of Management del MIT (Massachussets Institute of Technology), en donde estudi Tecnologa de la Informacin. Posee las certificaciones Programador Certificado en Java (Java Certified Programmer) y Desarrollador Certificado en Java (Java Certified Developer), y ha sido designado por Sun Microsystems como Java Champion. A travs de Deitel & Associates, Inc., ha impartido cursos en Java, C, C++, C# y Visual Basic a clientes de la industria, incluyendo: IBM, Sun Microsystems, Dell, Lucent Technologies, Fidelity, NASA en el Centro Espacial Kennedy, el Natio-nal Severe Storm Laboratory, White Sands Missile Range, Rogue Wave Software, Boeing, Stratus, Cambridge Technology Partners, Open Environment Corporation, One Wave, Hyperion Software, Adra Systems, Entergy, CableData Systems, Nortel Networks, Puma, iRobot, Invensys y muchos ms. Tambin ha ofrecido conferencias de Java y C++ para la Boston Chapter of the Association for Computing Machinery. l y su padre, el Dr. Harvey M. Deitel, son autores de los libros de programacin ms vendidos en el mundo. Dr. Harvey M. Deitel, es Presidente y Consejero de Estrategia de Deitel & Associates, Inc., tiene 45 aos de experiencia en el campo de la computacin; lo que incluye un amplio trabajo acadmico y en la industria. El Dr. Deitel tiene una licenciatura y una maestra por el MIT y un doctorado de la Universidad de Boston. Tiene 20 aos de experiencia como profesor universitario, la cual incluye un puesto vitalicio y el haber sido presidente del departamento de Ciencias de la computacin en el Boston College antes de fundar, con su hijo Paul J. Deitel, Deitel & Associates, Inc. l y Paul son coautores de varias docenas de libros y paquetes multimedia, y piensan escribir muchos ms. Los textos de los Deitel se han ganado el reconocimiento internacional y han sido traducidos al japons, alemn, ruso, espaol, chino tradicional, chino simplificado, coreano, francs, polaco, italiano, portugus, griego, urd y turco. El Dr. Deitel ha impartido cientos de seminarios profesionales para grandes empresas, instituciones acadmicas, organizaciones gubernamentales y diversos sectores del ejrcito.Acerca de Deitel & Associates, Inc. Deitel & Associates, Inc. es una empresa reconocida a nivel mundial, dedicada al entrenamiento corporativo y la creacin de contenido, con especializacin en lenguajes de programacin, tecnologa de software para Internet/World Wide Web, educacin de tecnologa de objetos y desarrollo de negocios por Internet a travs de su 28. PrefacioxxixIniciativa de Negocios en Internet. La empresa proporciona cursos, que son impartidos por instructores, sobre la mayora de los lenguajes y plataformas de programacin, como Java, Java Avanzado, C, C++, C#, Visual C++, Visual Basic, XML, Perl, Python, tecnologa de objetos y programacin en Internet y World Wide Web. Los fundadores de Deitel & Associates, Inc. son el Dr. Harvey M. Deitel y Paul J. Deitel. Sus clientes incluyen muchas de las empresas ms grandes del mundo, agencias gubernamentales, sectores del ejrcito e instituciones acadmicas. A lo largo de su sociedad editorial de 30 aos con Prentice Hall, Deitel & Associates Inc. ha publicado libros de texto de vanguardia sobre programacin, libros profesionales, multimedia interactiva en CD como los Cyber Classrooms, Cursos Completos de Capacitacin, cursos de capacitacin basados en Web y contenido electrnico para los populares sistemas de administracin de cursos WebCT, Blackboard y CourseCompass de Pearson. Deitel & Associates, Inc. y los autores pueden ser contactados mediante correo electrnico en: [email protected] conocer ms acerca de Deitel & Associates, Inc., sus publicaciones y su currculum mundial de la Serie de Capacitacin Corporativa DIVE INTO, visite: www.deitel.comy suscrbase al boletn gratuito de correo electrnico, Deitel Buzz Online, en: www.deitel.com/newsletter/subscribe.htmlPuede verificar la lista creciente de Centros de Recursos Deitel en: www.deitel.com/resourcecenters.htmlQuienes deseen comprar publicaciones de Deitel pueden hacerlo en: www.deitel.com/books/index.htmlLas empresas, el gobierno, las instituciones militares y acadmicas que deseen realizar pedidos en masa deben hacerlo directamente con Prentice Hall. Para obtener ms informacin, visite: www.prenhall.com/mischtm/support.html#order 29. Antes de empezar Antes de comenzar a utilizar este libro, debe seguir las instrucciones de esta seccin para asegurarse que Java est instalado de manera apropiada en su computadora. Convenciones de fuentes y nomenclatura Utilizamos varios tipos de letra para diferenciar los componentes en la pantalla (como los nombres de mens y los elementos de los mismos) y el cdigo o los comandos en Java. Nuestra convencin es hacer hincapi en los componentes en pantalla en una fuente Helvetica sans-serif en negritas (por ejemplo, el men Archivo) y enfatizar el cdigo y los comandos de Java en una fuente Luc da sans-serif (por ejemplo, System.out.pr ntln()).Kit de desarrollo de Java Standard Edition (JDK) 6 Los ejemplos en este libro se desarrollaron con el Kit de Desarrollo de Java Standard Edition (JDK) 6. Puede descargar la versin ms reciente y su documentacin en: java.sun.com/javase/6/download.jspSi tiene preguntas, enve un correo electrnico a de tel@de tel.com. Le responderemos en breve.Requerimientos de software y hardware del sistema Procesador Pentium III de 500 MHz (mnimo) o de mayor velocidad; Sun JavaTM Studio Creator 2 Update 1 requiere un procesador Intel Pentium 4 de 1 GHz (o equivalente). Microsoft Windows Server 2003, Windows XP (con Service Pack 2), Windows 2000 Professional (con Service Pack 4). Una de las siguientes distribuciones de Linux: Red Hat Enterprise Linux 3, o Red Hat Fedora Core 3. Mnimo 512 MB de memoria en RAM; Sun Java Studio Creator 2 Update 1 requiere 1 GB de RAM. Mnimo 1.5 GB de espacio en disco duro. Unidad de CD-ROM. Conexin a Internet. Explorador Web, Adobe Acrobat Reader y una herramienta para descomprimir archivos zip.Uso de los CDLos ejemplos para Cmo programar en Java, 7 edicin se encuentran en los CD (Windows y Linux) que se incluyen en este libro. Siga los pasos de la siguiente seccin, Cmo copiar los ejemplos del libro del CD, para copiar el directorio de ejemplos apropiado del CD a su disco duro. Le sugerimos trabajar desde su disco duro en lugar de hacerlo desde su unidad de CD por dos razones: 1, los CD son de slo lectura, por lo que no podr guardar sus aplicaciones en ellos; 2 es posible acceder a los archivos con mayor rapidez desde un disco duro que de un CD. Los ejemplos del libro tambin estn disponibles para descargarse de: www.de tel.com/books/jhtp7/ www.pearsoneducac on.net/de tel/La interfaz para el contenido del CD de Microsoft Windows est diseada para iniciarse de manera automtica, a travs del archivo AUTORUN.EXE. Si no aparece una pantalla de inicio cuando inserte el CD en su 30. Antes de empezarxxxicomputadora, haga doble clic en el archivo welcome.htm para iniciar la interfaz del CD para el estudiante, o consulte el archivo readme.txt en el CD. Para iniciar la interfaz del CD para Linux, haga doble clic en el archivo welcome.html.Cmo copiar los ejemplos del libro del CD Las capturas de pantalla de esta seccin pueden diferir un poco de lo que usted ver en su computadora, de acuerdo con el sistema operativo y el explorador Web de que disponga. Las instrucciones de los siguientes pasos asumen que est utilizando Microsoft Windows. 1. Insertar el CD. Inserte el CD que se incluye con este libro en la unidad de CD de su computadora. Acontinuacin deber aparecer de manera automtica la pgina Web welcome.htm (figura 1) en Windows. Tambin puede utilizar el Explorador de Windows para ver el contenido del CD y hacer doble clic en welcome.htm para mostrar esta pgina.2. Abrir el directorio del CD-ROM. Haga clic en el vnculo Browse CD Contents (Explorar contenidodel CD) (figura 1) para ver el contenido del CD.Haga clic en el vnculo Browse CD Contents para acceder al contenido del CDFigura 1 | Pgina de bienvenida para el CD de Cmo programar en Java. 3. Copiar el directorio ejemplos. Haga clic en el directorio ejemplos (figura 2), despus seleccione Copiar. A continuacin, use el Explorador de Windows para ver el contenido de su unidad C:. (Talvez necesite hacer clic en un vnculo para mostrar el contenido de la unidad). Una vez que se muestre el contenido, haga clic en cualquier parte y seleccione la opcin Pegar del men Editar para copiar el directorio ejemplos del CD a su unidad C:. [Nota: guardamos los ejemplos directamente en la unidad C: y hacemos referencia a esta unidad a lo largo del texto. Puede optar por guardar sus archivos en una unidad distinta, con base en la configuracin de su computadora, en el laboratorio de su escuela o sus preferencias personales. Si trabaja en un laboratorio de computadoras, consulte con su profesor para obtener ms informacin para confirmar en dnde se deben guardar los ejemplos].Modificacin de la propiedad de slo lectura de los archivos Los archivos de ejemplo que copi a su computadora desde el CD son de slo lectura. A continuacin eliminar la propiedad de slo lectura, para poder modificar y ejecutar los ejemplos. 1. Abrir el cuadro de dilogo Propiedades. Haga clic con el botn derecho del ratn en el directorio ejemplos y seleccione Propiedades. A continuacin aparecer el cuadro de dilogo Propiedades de ejemplos (figura 3). 31. xxxiiAntes de empezarHaga clic con el botn derecho del ratn en el directorio ejemplosSeleccione CopiarFigura 2 | Copia del directorio ejemplos.Figura 3 | Cuadro de dilogo Propiedades de ejemplos.2. Cambiar la propiedad de slo lectura. En la seccin Atributos de este cuadro de dilogo, haga clicen el botn Slo lectura para eliminar la marca de verificacin (figura 4). Haga clic en Aplicar para aplicar los cambios. 32. Antes de empezarxxxiiiDesactive el atributoSlo lecturaFigura 4 | Desactivar la casilla de verificacin Slo lectura.3. Cambiar la propiedad para todos los archivos. Al hacer clic enAplicar se mostrar la ventana Confirmar cambios de atributos (figura 5). En esta ventana, haga clic en el botn de opcin Aplicar cambios a esta carpeta y a todas las subcarpetas y archivos y haga clic en Aceptar para eliminar la propiedad de slo lectura para todos los archivos y directorios en el directorio ejemplos.Haga clic en este botn de opcin para eliminar la propiedad Slo lectura para todos los archivosFigura 5 | Eliminar la propiedad de slo lectura para todos los archivos en el directorio ejemplos .Instalacin del Kit de Desarrollo de Java Standard Edition (JDK) Antes de ejecutar las aplicaciones de este libro o de crear sus propias aplicaciones, debe instalar el Kit de Desarrollo de Java Standard Edition (JDK) 6 o una herramienta de desarrollo para Java que soporte a Java SE 6. Puede descargar el JDK 6 y su documentacin de java.sun.com/javase/6/download.jsp. Haga clic en el botn DOWNLOAD para JDK 6. Debe aceptar el acuerdo de licencia antes de descargar. Una vez que acepte el acuerdo, haga clic en el vnculo para el instalador de su plataforma. Guarde el instalador en su disco duro y no olvide en dnde lo guard. Antes de instalar, lea con cuidado las instrucciones de instalacin del JDK para su plataforma, que se encuentran en java.sun.com/javase/6/webnotes/install/index.html. Despus de descargar el instalador del JDK, haga doble clic en el programa instalador para empezar a instalarlo. Le recomendamos que acepte todas las opciones de instalacin predeterminadas. Si modifica el directorio predeterminado, asegrese de anotar el nombre y la ubicacin exactos que eligi, ya que necesitar esta informacin ms adelante en el proceso de instalacin. En Windows, el JDK se coloca, de manera predeterminada, en el siguiente directorio: C:Archivos de programaJavajdk1.6.0 33. xxxivAntes de empezarEstablecer la variable de entorno PATH La variable de entorno PATH en su computadora indica qu directorios debe buscar la computadora cuando intente localizar aplicaciones, como aquellas que le permiten compilar y ejecutar sus aplicaciones en Java (conocidas como javac.exe y java.exe, respectivamente). Ahora aprender a establecer la variable de entorno PATH en su computadora para indicar en dnde estn instaladas las herramientas del JDK. 1. Abrir el cuadro de dilogo Propiedades del sistema. Haga clic en Inicio > Panel de control > Sistema para mostrar el cuadro de dilogo Propiedades del sistema (figura 6). [Nota: su cuadro de dilogo Propiedades del sistema puede tener una apariencia distinta al que se muestra en la figura 6, dependiendode la versin de Microsoft Windows. Este cuadro de dilogo especfico es de una computadora que ejecuta Microsoft Windows XP. Sin embargo, el que aparece en su computadora podra incluir distinta informacin].2. Abrir el cuadro de dilogo Variables de entorno. Seleccione la ficha Opciones avanzadas de la parte superior del cuadro de dilogo Propiedades del sistema (figura 7). Haga clic en el botn Variables de entorno para desplegar el cuadro de dilogo Variables de entorno (figura 8). 3. Editar la variable PATH. Desplcese por el cuadro Variables del sistema para seleccionar la variable PATH. Haga clic en el botn Modificar. Esto har que se despliegue el cuadro de dilogo Modificar la variable del sistema (figura 9). 4. Modificar la variable PATH. Coloque el cursor dentro del campo Valor de variable. Use la flecha izquierdapara desplazar el cursor hasta el inicio de la lista. Al principio de la lista, escriba el nombre del directorio en el que coloc el JDK, seguido de bin; (figura 10). Agregue C:Archivos de programa Javajdk1.6.0bin; a la variable PATH, si eligi el directorio de instalacin predeterminado. No coloque espacios antes o despus de lo que escriba. No se permiten espacios antes o despus de cada valor en una variable de entorno. Haga clic en el botn Aceptar para aplicar sus cambios a la variable PATH.Si no establece la variable PATH de manera correcta, al utilizar las herramientas del JDK recibir un mensaje como ste: java no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.En este caso, regrese al principio de esta seccin y vuelva a comprobar sus pasos. Si ha descargado una versin ms reciente del JDK, tal vez necesite modificar el nombre del directorio de instalacin del JDK en la variable PATH.Figura 6 | Cuadro de dilogo Propiedades del sistema . 34. Antes de empezarSeleccione la ficha Opciones avanzadasHaga clic en el botn Variables de entornoFigura 7 | Ficha Opciones avanzadas del cuadro de dilogo Propiedades del sistema.Figura 8 | Cuadro de dilogo Variables de entorno.Figura 9 | Cuadro de dilogo Modificar la variable del sistema.Figura 10 | Modificacin de la variable PATH.xxxv 35. Antes de empezarxxxviEstablecer la variable de entorno CLASSPATH Si trata de ejecutar un programa en Java y recibe un mensaje como: Exception in thread main java.lang.NoClassDefFoundError: SuClaseentonces su sistema tiene una variable de entorno CLASSPATH que debe modificarse. Para corregir el error anterior, siga los pasos para establecer la variable de entorno PATH, localice la variable CLASSPATH y modifique su valor para que incluya lo siguiente: .;al principio de su valor (sin espacios antes o despus de estos caracteres). Ahora est listo para empezar sus estudios de Java con el libro Cmo programar en Java, 7 edicin. Esperamos que lo disfrute! 36. 1Nuestra vida se malgasta por los detalles... simplificar, simplificar. Henry David Thoreau La principal cualidad del lenguaje es la claridad. Galen Mi sublime objetivo deber llevarlo a cabo a tiempo. W. S. Gilbert Tena un maravilloso talento para empacar estrechamente el pensamiento, hacindolo portable. Thomas B. Macaulay Caray, creo que de los dos, el intrprete es el ms difcil de entender! Richard Brinsley Sheridan El hombre sigue siendo la computadora ms extraordinaria de todas. John F. KennedyIntroduccin a las computadoras, Internet y Web OBJETIVOS En este captulo aprender a: Comprender los conceptos bsicos de hardware y software. Conocer los conceptos bsicos de la tecnologa de objetos, como las clases, objetos, atributos, comportamientos, encapsulamiento, herencia y polimorfismo. Familiarizarse con los distintos lenguajes de programacin. Saber qu lenguajes de programacin se utilizan ms. Comprender un tpico entorno de desarrollo en Java. Entender el papel de Java en el desarrollo de aplicaciones cliente/servidor distribuidas para Internet y Web. Conocer la historia de UML: el lenguaje de diseo orientado a objetos estndar en la industria. Conocer la historia de Internet y World Wide Web. Probar aplicaciones en Java. 37. r e g n la P2Captulo 1 Introduccin a las computadoras, Internet y Web1.1 Introduccin 1.2 Qu es una computadora? 1.3 Organizacin de una computadora 1.4 Los primeros sistemas operativos 1.5 Computacin personal, distribuida y cliente/servidor 1.6 Internet y World Wide Web 1.7 Lenguajes mquina, ensambladores y de alto nivel 1.8 Historia de C y C++ 1.9 Historia de Java 1.10 Bibliotecas de clases de Java 1.11 FORTRAN, COBOL, Pascal y Ada 1.12 BASIC, Visual Basic, Visual C++, C# y .NET 1.13 Entorno de desarrollo tpico en Java 1.14 Generalidades acerca de Java y este libro 1.15 Prueba de una aplicacin en Java 1.16 Ejemplo prctico de Ingeniera de Software: introduccin a la tecnologa de objetos y UML 1.17 Web 2.0 1.18 Tecnologas de software 1.19 Conclusin 1.20 Recursos Web Resumen | Terminologa | Ejercicios de autoevaluacin | Respuestas a los ejercicios de autoevaluacin | Ejercicios1.1 IntroduccinBienvenido a Java! Hemos trabajado duro para crear lo que pensamos ser una experiencia de aprendizaje informativa, divertida y retadora para usted. Java es un poderoso lenguaje de programacin, divertido para los principiantes y apropiado para los programadores experimentados que desarrollan sistemas de informacin de tamao considerable. Cmo programar en Java, 7 edicin es una herramienta efectiva de aprendizaje para cada una de estas audiencias. Pedagoga La parte central del libro se enfoca en la claridad de los programas, a travs de las tcnicas comprobadas de la programacin orientada a objetos. Los principiantes aprendern programacin de manera correcta, desde el principio. La presentacin es clara, simple y tiene muchas ilustraciones. Incluye cientos de programas completos y funcionales en Java, y muestra la salida que se obtiene al ejecutar estos programas en una computadora. Enseamos las caractersticas de Java en un contexto de programas completos y funcionales; a esto le llamamos el mtodo de cdigo activo (Live-CodeTM). Los programas de ejemplo estn disponibles en el CD que acompaa a este libro. Tambin puede descargarlos de los sitios Web www.deitel.com/books/jhtp7/ o www.pearsoneducacion. net.com/deitel. Fundamentos Los primeros captulos presentan los fundamentos de las computadoras, la programacin de stas y el lenguaje de programacin Java, con lo cual se provee una base slida para un anlisis ms detallado de Java en los captulos posteriores. Los programadores experimentados tienden a leer los primeros captulos rpidamente, y descubren que el anlisis de Java en los captulos posteriores es riguroso y retador. La mayora de las personas estn familiarizadas con las emocionantes tareas que realizan las computadoras. Por medio de este libro, usted aprender a programar las computadoras para que realicen dichas tareas. El 38. 1.1 Introduccin3software (las instrucciones que usted escribe para indicar a la computadora que realice acciones y tome decisiones) es quien controla a las computadoras (conocidas comnmente como hardware). Java, desarrollado por Sun Microsystems, es uno de los lenguajes para desarrollo de software ms populares en la actualidad. Java Standard Edition 6 (Java SE 6) y el Kit de Desarrollo de Java 6 (JDK 6) Este libro se basa en la plataforma Java Standard Edition 6 (Java SE 6) de Sun, tambin conocida como Mustang. Sun ofrece una implementacin de Java SE 6, conocida como Kit de Desarrollo de Java (JDK), que incluye las herramientas necesarias para escribir software en Java. Nosotros utilizamos el JDK versin 6.0 para los programas en este libro. Por lo regular, Sun actualiza el JDK para corregir errores: para descargar la versin ms reciente del JDK 6, visite java.sun.com/javase/6/download.jsp. Evolucin de la computacin y de la programacin El uso de las computadoras se est incrementando en casi cualquier campo de trabajo; los costos de se han reducido en forma dramtica, debido al rpido desarrollo en la tecnologa de hardware y software. Las computadoras que ocupaban grandes habitaciones y que costaban millones de dlares, hace algunas dcadas, ahora pueden colocarse en las superficies de chips de silicio ms pequeos que una ua, y con un costo de quiz unos cuantos dlares cada uno. Por fortuna, el silicio es uno de los materiales ms abundantes en el planeta (es uno de los ingredientes de la tierra). La tecnologa de los chips de silicio ha vuelto tan econmica a la tecnologa de la computacin que cientos de millones de computadoras de uso general se encuentran actualmente ayudando a la gente de todo el mundo en: empresas, la industria, el gobierno y en sus vidas. Dicho nmero podra duplicarse fcilmente en unos cuantos aos. A travs de los aos, muchos programadores aprendieron la metodologa conocida como programacin estructurada. Usted aprender tanto la programacin estructurada como la novedosa y excitante metodologa de la programacin orientada a objetos. Por qu enseamos ambas? La programacin orientada a objetos es la metodologa clave utilizada hoy en da por los programadores. Usted crear y trabajar con muchos objetos de software en este libro. Sin embargo, descubrir que la estructura interna de estos objetos se construye, a menudo, utilizando tcnicas de programacin estructurada. Adems, la lgica requerida para manipular objetos se expresa algunas veces mediante la programacin estructurada. El lenguaje de eleccin para las aplicaciones en red Java se ha convertido en el lenguaje de eleccin para implementar aplicaciones basadas en Internet, y software para dispositivos que se comunican a travs de una red. Ahora, los estreos y otros dispositivos en los hogares pueden conectarse entre s mediante el uso de tecnologa Java. En la conferencia JavaOne en mayo del 2006, Sun anunci que haba mil millones de telfonos mviles y dispositivos porttiles habilitados para Java! Java ha evolucionado rpidamente en el mbito de las aplicaciones de gran escala. Es el lenguaje preferido para satisfacer la mayora de las necesidades de programacin de muchas organizaciones. Java ha evolucionado tan rpidamente que publicamos esta sptima edicin de Cmo programar en Java justamente 10 aos despus de publicar la primera edicin. Java ha crecido tanto que cuenta con otras dos ediciones. La edicin Java Enterprise Edition (Java EE) est orientada hacia el desarrollo de aplicaciones de red distribuidas, de gran escala, y aplicaciones basadas en Web. La plataforma Java Micro Edition (Java ME) est orientada hacia el desarrollo de aplicaciones para dispositivos pequeos, con memoria limitada, como los telfonos celulares, radiolocalizadores y PDAs. Permanezca en contacto con nosotros Est a punto de comenzar una ruta de desafos y recompensas. Mientras tanto, si desea comunicarse con nosotros, envenos un correo a de tel@de tel.com o explore nuestro sitio Web en www.de tel.com. Le responderemos a la brevedad. Para mantenerse al tanto de los desarrollos con Java en Deitel & Associates, regstrese para recibir nuestro boletn de correo electrnico, Deitel Buzz Online en www.de tel.com/newsletter/subscr be.htmlPara obtener material adicional sobre Java, visite nuestra creciente lista de centros de recursos en www.de com/ResourceCenters.html. Esperamos que disfrute aprender con Cmo programar en Java, 7 edicin.tel. 39. 4Captulo 1 Introduccin a las computadoras, Internet y Web1.2 Qu es una computadora? Una computadora es un dispositivo capaz de realizar clculos y tomar decisiones lgicas a velocidades de millones (incluso de miles de millones) de veces ms rpidas que los humanos. Por ejemplo, muchas de las computadoras personales actuales pueden realizar varios miles de millones de clculos en un segundo. Una persona con una calculadora podra requerir toda una vida para completar el mismo nmero de operaciones. (Puntos a considerar: cmo sabra que la persona sum los nmeros de manera correcta?, cmo sabra que la computadora sum los nmeros de manera correcta?) Las supercomputadoras actuales ms rpidas pueden realizar billones de sumas por segundo! Las computadoras procesan los datos bajo el control de conjuntos de instrucciones llamadas programas de cmputo. Estos programas guan a la computadora a travs de conjuntos ordenados de acciones especificadas por gente conocida como programadores de computadoras. Una computadora est compuesta por diversos dispositivos (como teclado, monitor, ratn, discos, memoria, DVD, CD-ROM y unidades de procesamiento) conocidos como hardware. A los programas que se ejecutan en una computadora se les denomina software. Los costos de las piezas de hardware han disminuido de manera espectacular en aos recientes, al punto en que las computadoras personales se han convertido en artculos domsticos. En este libro aprender mtodos comprobados que pueden reducir los costos de desarrollo del software: programacin orientada a ob