2. ACCESO A LOS CAPTULOS ADICIONALES DEL LIBRO Para acceder alos captulos 12 a 19 (en espaol), 20 a 31 y Apndices M a Q (eningls) mencionados en el texto, visite el sitio Web de este libro:www.pearsonenespafiol.coin/deitel Utilice una moneda para descubrirel cdigo de acceso. (No use objetos filosos porque podra daarlo).IMPORTANTE: Este cdigo de acceso tiene vigencia de 2 das! Asegreseque el cdigo no aparezca daado ya que slo puede usarse una vez y noser reemplazado en ningn caso. www.FreeLibros.me 3.www.FreeLibros.me 4. www.FreeLibros.me 5. P R O G I s g M A R N O VE N A E D I C l d ^ Paul Detel Deitel&Associates, Inc. HarveyDetel Deitel&Associates, Inc. Traductor Alfonso Vidal RomeroElizondo Ingeniero en SistemasElectrnicos ITESM, CampusMonterreyRevisin tcnica Roberto Martnez Romn Departamento de Tecnologa deInformaciny Computacin ITESM, CampusEstado deMxico Domingo AcostaInfante Departamento de Ingeniera en Informtica InstitutoTecnolgico deMorelia PEARSON www.FreeLibros.me 6. DEITEL, PAUL yHARVEY DEITEL Cmo programar en Java Novena edicin PEARSON EDUCACIN,Mxico, 2012 ISBN: 978-607-32-1150-5 rea: Computacin Formato: 20 X25.5 cm Pginas: 616 Authorized translation from the Englishlanguage edition entitledJAVAHOW TOPROGRAM, 9thEdition, byPaulDeitel &HarveyDeitel,publishedbyPearsonEducation, Inc.,publishing asPrentice Hall, Copyright 2012. Allrights reserved.ISBN9780132575669 Traduccin autorizada de la edicin en idioma inglstitulada JAVAHOW TOPROGRAM,9a. edicin por PaulDeitelyHarveyDeitel,publicada porPearson Education,Inc., publicadacomoPrentice Hall, Copyright 2012.Todoslosderechos reservados.Estaedicinen espaoles la nica autorizada. Edidn enespaolDireccinEducacin Superior: EditorSponsor: Editorde Desarrollo:Supervisorde Producdn: Gerente EditorialEducacinSuperiorLatinoamrica: NOVENAEDICIN, 2012 D.R. 2012por PearsonEducacinde Mxico, S.A. de C.V. Atlacomulco 500-5o. piso Col.Industrial Atoto 53519, Naucalpande Jurez, Estado de Mxico CmaraNacionalde la Industria Editorial Mexicana. Reg. nm. 1031.Reservados todos losderechos. Ni la totalidad ni partede estapublicacin pueden reproducirse, registrarseo transmitirse, porunsistema de recuperacin de informacin, en ninguna forma ni por ningnmedio, sea electrnico, mecnico, foto- qumico, magntico oelectroptico, por fotocopia, grabacino cualquierotro, sinpermisoprevio porescrito deleditor. Elprstamo, alquilero cualquierotraformade cesinde uso de este ejemplarrequerir tambin laautorizacindeleditor 0de sus representantes. ISBNVERSIN IMPRESA:978-607-32-1150-5 ISBNVERSINE-BOOK: 978-607-32-1151-2 ISBNE-CHAPTER: 978-607-32-1152-9 Impreso en Mxico. Printed in Mxico. 1234567890- 15 14 13 12 Mario Contreras LuisMiguel CruzCastilloe-mail: [email protected] Bernardino GutirrezHernndez Jos D.Hernndez Garduo Marisade Anta PEARSON www.FreeLibros.me 7. EnmemoriadesargentoShriver, 'ElprimerdirectordelCuerpodeTazyfundadordenumerosasorganizacionessociales: Toruna vida demarcaradiferencia.Pauly Harvey Deitel www.FreeLibros.me 8. www.FreeLibros.me 9.Contenido Prefacio Antes de empezar 1 Introduccin a lascomputadoras y a Java 1.1 Introduccin 1.2 Computadoras: hardwareysoftware 1.3 Jerarqua de datos 1.4 Organizacin de una computadora1.5 Lenguajes mquina, lenguajes ensambladores y lenguajes de altonivel 1.6 Introduccin a latecnologade los objetos 1.7 Sistemasoperativos 1.8 Lenguajesde programacin 1.9 Javay un tpico entornode desarrollo enJava 1.10 Prueba de una aplicacin enJava 1.11 Web2.0: Las redessociales 1.12 Tecnologas de software 1.13 Cmo estaral da con lastecnologas de informacin 1.14 Conclusin 2 Introduccina las aplicaciones en Java 2.1 Introduccin 2.2 Su primer programaenJava: imprimir una lnea de texto 2.3 Modificacin de nuestroprimer programa enJava 2.4 Cmo mostrar texto con pri ntf 2.5 Otraaplicacin enJava: suma de enteros 2.6 Conceptos acercade la memoria2.7 Aritmtica 2.8 Toma de decisiones: operadores de igualdad yrelacinales 2.9 Conclusin 3 Introduccin a las clases, objetos,mtodos ycadenas 3.1 Introduccin 3.2 Declaracin de una clasecon unmtodo e instanciamiento de un objeto de una clase 3-3 Declaracin deun mtodo con un parmetro 3.4 Variables de instancia, mtodosestablecery mtodos obtener 3.5 Comparacin entre tipos primitivos ytipos por referencia 3.6 Inicializacin de objetos medianteconstructores xxiii xxxiii 1 2 5 6 8 10 11 13 16 18 22 26 29 31 3237 38 38 44 46 47 52 53 56 60 71 72 72 76 79 84 85www.FreeLibros.me 10. 88 92 95 102 103 103 104 104 107 107 112 113118 125 130 130 134 134 138 151 152 152 154 158 162 164 172 173 179184 187 197 198 198 200 202 205 206 207 208 210 214 214 215 219 222224 227 Contenido 3.7 Los nmeros de punto flotantey el tipo double3.8 (Opcional) Caso de estudio de GUI y grficos: uso de cuadros dedilogo 3.9 Conclusin 4 Instrucciones de control: Parte I 4.1Introduccin 4.2 Algoritmos 4.3 Seudocdigo 4.4 Estructuras decontrol 4.5 Instruccin i f de seleccin simple 4.6 Instruccin i f ... el se de seleccin doble 4.7 Instruccin de repeticin whi1e 4.8Cmo formular algoritmos: repeticincontroladapor un contador 4.9 Cmoformular algoritmos: repeticincontroladapor un centinela 4.10 Cmoformular algoritmos: instrucciones de control anidadas 4.11Operadores de asignacin compuestos 4.12 Operadores de incremento ydecremento 4.13 Tipos primitivos 4.14 (Opcional) Caso de estudio deGUI y grficos: creacin de dibujos simples 4.15 Conclusin 5Instrucciones de control: Parte 2 5.1 Introduccin 5.2 Fundamentosde la repeticin controlada por contador 5.3 Instruccin de repeticinfor 5.4 Ejemplossobre el uso de la instruccin for 5.5 Instruccin derepeticin do... whi1e 5.6 Instruccin de seleccin mltiple switch 5.7Instrucciones break y continu 5.8 Operadores lgicos 5.9 Resumensobre programacin estructurada 5.10 (Opcional) Caso de estudio deGUI y grficos: dibujo de rectngulosy valos 5.11 Conclusin 6 Mtodos:un anlisis ms detallado 6.1 Introduccin 6.2 Mdulos de programasenJava 6.3 Mtodos st a t i c,campos st a t i cy laclaseMath 6.4Declaracin de mtodos con mltiples parmetros 6.5 Notas acerca de cmodeclarar y utilizar los mtodos 6.6 La pilade llamadasa los mtodosylosregistros de activacin 6.7 Promocin yconversin de argumentos 6.8Paquetesde laAPI deJava 6.9 Caso de estudio: generacin de nmerosaleatorios 6.9.1 Escalamiento y desplazamiento generalizados denmeros aleatorios 6.9.2 Repetitividad de nmeros aleatorios paraprueba y depuracin 6.10 Caso de estudio: un juego deprobabilidad(introduccin a las enumeraciones) 6.11 Alcance de las declaraciones6.12 Sobrecarga de mtodos 6.13 (Opcional) Caso de estudio de GUI ygrficos: coloresy figuras rellenas 6.14 Conclusin www.FreeLibros.me11. Contenido ix 7 Arreglos y objetos ArrayList 7.1 Introduccin 7.2Arreglos 7.3 Declaracin y creacin de arreglos 7.4 Ejemplosacercadel uso de los arreglos 7.5 Caso de estudio:simulacin parabarajar y repartir cartas 7.6 Instruccin for mejorada 7.7 Pasodearreglosa los mtodos 7.8 Caso de estudio: laclase L i broCal i f ica ci ones que usa un arreglo paraalmacenar las calificaciones 7.9Arreglos multidimensionales 7.10 Caso de estudio: la clase Libro Cal ific a c io n e s que usa un arreglo bidimensional 7.11 Listasde argumentos de longitud variable 7.12 Uso de argumentos de lneade comandos 7.13 LaclaseArrays 7.14 Introduccin a lascolecciones ylaclaseA rrayLi st 7.15 (Opcional) Caso de estudio de GUI ygrficos: dibujo de arcos 7.16 Conclusin 8 Clases y objetos: unanlisis ms detallado 8.1 Introduccin 8.2 Caso de estudio de laclaseTiempo 8.3 Control del accesoa los miembros 8.4 Referencias alos miembros delobjeto actual mediante this 8.5 Caso de estudio dela claseTiempo: constructoressobrecargados 8.6 Constructorespredeterminados y sin argumentos 8.7 Observaciones acercade losmtodosEstablecery Obtener 8.8 Composicin 8.9 Enumeraciones 8.10Recoleccin de basuray elmtodo fi nali ze 8.11 Miembros de clase s ta t i c 8.12 Declaracin static import 8.13 Variables de instanciafi nal 8.14 Caso de estudio de la claseT i empo: creacin depaquetes 8.15 Accesoa paquetes 8.16 (Opcional) Caso de estudio deGUI y grficos: uso de objetos con grficos 8.17 Conclusin 9Programacin orientada a objetos: herencia 9.1 Introduccin 9.2Superclasesy subclases 9.3 Miembros protected 9.4 Relacin entre lassuperclases y las subclases 9.4.1 Creaciny uso de una clase EmpleadoPorComi s i on 9.4.2 Creacin y uso de una clase EmpleadoBaseMasComi si on 9.4.3 Creacin de una jerarqua de herenciaEmpl eadoPorComi s i on- Empl eadoBaseMasComi sion 9.4.4 Lajerarquade herencia Empl eadoPorComi si on-Empl eadoBaseMasComi sionmediante el uso de variablesde instancia protected 9.4.5 Lajerarquade herencia Empl eadoPorComi si on-Empl eadoBaseMasComi sionmediante el uso de variablesde instancia pri vate 240 241 242 243244 254 258 259 262 268 271 278 279 281 284 286 289 311 312 312 316317 320 326 326 328 331 333 334 338 339 340 345 347 351 359 360 361363 364 364 370 375 377 380 www.FreeLibros.me 12. x Contenido 9.5Los constructores en lassubclases 9.6 Ingenierade software mediantela herencia 9.7 La clase Obj e ct 9.8 (Opcional) Caso de estudio deGUI y grfieos: mostartexto e imgenes usando etiquetas 9.9 Conclusin10 Programacin orientada a objetos: polimorfismo 10.1 Introduccin10.2 Ejemplos delpolimorfismo 10.3 Demostracin del comportamientopolimrfico 10.4 Clases y mtodos abstractos 10.5 Caso de estudio:sistema de nmina utilizando polimorfismo 10.5.1 Lasuperclaseabstracta Empleado 10.5.2 Lasubclase concreta EmpleadoAsalari ado10.5.3 Lasubclase concreta Empl eadoPorHoras 10.5.4 Lasubclaseconcreta Empl eadoPo rComi si on 10.5.5 Lasubclase concretaindirecta Empl eadoBaseMasComi sion 10.5.6 El procesamientopolimrfico, el operador i nstanceof y laconversin descendente10.5.7 Resumen de lasasignaciones permitidas entre variables delasuperclase yde lasubclase 10.6 Mtodos y clases fi nal 10.7 Casode estudio: creacin y uso de interfaces 10.7.1 Desarrollo de unajerarqua PorPagar 10.7.2 La interfaz PorPagar 10.7.3 Laclase Factura 10.7.4 Modificacin de la clase Empleado para implementar lainterfaz PorPagar 10.7.5 Modificacin de laclase Empl eadoAsal a riado para usarla en la jerarqua PorPagar 10.7.6 Uso de la nterfazPorPagar para procesar objetos Factura y Empleado mediante elpolimorfismo 10.7.7 Interfaces comunes de laAPI deJava 10.8(Opcional) Caso de estudio de GUI y grficos: realizar dibujosusando polimorfismo 10.9 Conclusin I I Manejo de excepciones: unanlisis ms profundo 11.1 Introduccin 11.2 Ejemplo: divisin entrecero sin manejo de excepciones 11.3 Ejemplo: manejo deexcepcionestipo A ritm eticException elnputMismatchException 11.4 Cundoutilizar el manejo deexcepciones 11.5 Jerarqua de excepcionesenJava11.6 Bloque finally 11.7 Limpieza de la pilay obtencin deinformacin de un objeto excepcin 11.8 Excepciones encadenadas 11.9Declaracin de nuevos tipos de excepciones 11.10 Precondicionesyposcondiciones 11.11 Aserciones 11.12 (Nuevo enJava SE 7): Clusulacatch mltiple: atrapar varias excepciones en un catch 11.13 (NuevoenJava SE 7): Clusulat rycon recursos (t ry-with-resources):desasignacin automtica de recursos 11.14 Conclusin 385 386 387 388391 394 395 397 398 400 403 404 407 408 410 412 413 418 418 419 421422 422 425 427 428 430 431 433 438 439 439 442 447 447 450 454 457459 460 461 462 463 463 www.FreeLibros.me 13. Contenido x i A Tablade precedencia de operadores B Conjunto de caracteres ASCII CPalabras clave y palabras reservadas D Tipos primitivos E Uso de ladocumentacin de la API deJava E.1 Introduccin E.2 Navegacin porlaAPI deJava F Uso del depurador E1 Introduccin E2 Los puntos deinterrupcin y los comandos run, stop, cont y pri nt F.3 Loscomandos pri nt y set E4 Cmo controlar laejecucin mediante loscomandos step, step upy next F.5 El comando watch F.6 El comandoclear F.7 Conclusin G Salida con formato G.l Introduccin G.2 FlujosG.3 Aplicacin de formato a lasalidacon pri ntf G.4 Impresin deenteros G.5 Impresin de nmeros de punto flotante G.6 Impresin decadenasy caracteres G.7 Impresin de fechas y horas G.8 Otroscaracteres de conversin G.9 Impresin con anchuras de campo yprecisiones G.10 Uso de banderas en lacadena de formato de pri ntfG.11 Impresin con ndices como argumentos G.12 Impresin deliteralesy secuencias de escape G.13 Aplicacin deformato a lasalidacon laclase Formatte r G.l4 Conclusin H Sistemas numricos H.lIntroduccin H.2 Abreviaturade los nmeros binarioscomo nmerosoctalesy hexadecimales H.3 Conversin de nmerosoctales y hexadecimales abinarios H.4 Conversin de un nmero binario,octal o hexadecimaladecimal H.5 Conversin de un nmero decimala binario, octalohexadecimal H.6 Nmeros binarios negativos: notacin de complemento ados A-l A-3 A-4 A-5 A-6 A-6 A-6 A-14 A-15 A-15 A-19 A-21 A-24 A-27A-29 A-31 A-32 A-32 A-32 A-33 A-34 A-36 A-37 A-39 A-41 A-43 A-47A-47 A-48 A-49 A-54 A-55 A-58 A-59 A-59 A-60 A-62 www.FreeLibros.me14. x ii Contenido I GroupLayout 1.1 Introduccin 1.2 Fundamentos deGroupLayout 1.3 Creacin de unobjeto SelectorColores 1.4RecursosWebsobre GroupLayout J Componentes de integracin JavaDesktop J.l Introduccin J.2 Pantallas deinicio J.3 LaclaseDesktopJ.4 Iconos de la bandeja K Mashups K.l Introduccin K.2 Mashupspopulares K.3 AlgunasAPI de uso comn en mashups K.4 CentroderecursosDeitelsobre mashups K.5 Centrode recursosDeitelsobre RSSK.6 Cuestiones de rendimiento y confiabilidad de los mashups LUnicode L.l Introduccin L2 Formatosde transformacin de Unicode L.3Caracteresy glifos L.4 Ventajas/Desventajasde Unicode L5 Uso deUnicode L.6 Rangos de caracteres ndice Los captulos 12a 19 seencuentran en espaol en el sitio Web del libro 12 Caso de estudiodel ATM, Parte I : Diseo orientado a objetos con UML 12.1Introduccin alcaso deestudio 12.2 Anlisis del documento derequerimientos 12.3 Cmo identificar lasclases en un documento derequerimientos 12.4 Cmo identificar los atributos de las clases12.5 Cmo identificar los estadosy actividades de losobjetos 12.6Cmo identificar lasoperaciones de lasclases 12.7 Cmo indicarlacolaboracin entreobjetos 12.8 Conclusin 469 470 470 478 484 489493 499 506 A-67 A-67 A-67 A-68 A-78 A-79 A-79 A-79 A-81 A-83 A-85A-85 A-85 A-86 A-86 A-87 A-87 A-88 A-88 A-89 A-90 A-90 A-91 A-93 I-l www.FreeLibros.me 15. Contenido x 13 Caso de estudio del ATM,Parte 2: Implementacii de un diseo orientado a objetos 13.1Introduccin 13.2 Inicio de laprogramacin de lasclases delsistemaATM13.3 Incorporacin de laherenciay el polimorfismo en el sistemaATM13.4 Implementacin delcaso deestudio delATM 13.4.1 Laclase ATM13.4.2 Laclase P a n ta lla 13.4.3 LaclaseTeclado 13.4.4 Laclase DispensadorEf e c ti vo 13.4.5 Laclase RanuraDeposito 13.4.6 LaclaseCuenta 13.4.7 Laclase BaseDatos Banco 13.4.8 Laclase Transacci n13.4.9 Laclase Sol i citud Sal do 13.4.10 Laclase R eti ro 13.4.11Laclase Depos i to 13.4.12 LaclaseCasoEstudioATM 13-5 Conclusin 14Componentes de la GUI: Parte I 14.1 Introduccin 14.2NuevaaparienciavisualNimbus deJava 14.3 Entrada/salidasimplebasadaen GUI con JOptionPane 14.4 Generalidades de los componentesde Swing 14.5 Mostrartexto e imgenes en unaventana 14.6 Camposdetexto y unaintroduccin al manejo deeventos con clases anidadas14.7 Tipos deeventos comunes de laGUI e interfaces de escucha 14.8Cmo funciona el manejo deeventos 14.9 JButton 14.10 Botones quemantienen elestado 14.10.1 JCheckBox 14.10.2 JRadioButton 14.11JComboBox: uso de una clase interna annima para el manejo deeventos 14.12 J L is t 14.13 Listas de seleccin mltiple 14.14Manejo de eventos de ratn 14.15 Clases adaptadoras 14.16 Subclasede JPanel paradibujarcon el ratn 14.17 Manejode eventos de teclas14.18 Introduccin a los administradores de esquemas 14.18.1FlowLayout 14.18.2 BorderLayout 14.18.3 G rid Layou t 14.19 Uso depanelesparaadministraresquemasms complejos 14.20 JTextA rea 14.21Conclusin 510 511 511 516 522 523 528 529 530 531 532 534 537 538539 543 546 546 549 550 551 552 555 557 561 567 569 571 574 574 577580 584 586 589 594 597 601 604 605 608 611 613 615 618www.FreeLibros.me 16. xiv Contenido 15 Grficos y Java 2D 15.1Introduccin 15.2 Contextosy objetos degrficos 15-3 Control decolores 15.4 Manipulacin de tipos de letra 15.5 Dibujo de lneas,rectngulosy valos 15.6 Dibujo de arcos 15.7 Dibujo de polgonos ypolilneas 15.8 LaAPI Java 2D 15.9 Conclusin 16 Cadenas, caracteresy expresiones regulares 16.1 Introduccin 16.2 Fundamentos de loscaracteres y las cadenas 16.3 Laclase String 16.3.1 Constructoresde Stri ng 16.3.2 Mtodos 1ength, charAt ygetChars de S trin g16.3.3 Comparacin entre cadenas 16.3.4 Localizacin de caracteres ysubcadenas en las cadenas 16.3.5 Extraccin de subcadenas delascadenas 16.3.6 Concatenacin de cadenas 16.3.7 Mtodos varios deStri ng 16.3.8 Mtodo valueOf de Stri ng 16.4 Laclase Stri ngBuilder 16.4.1 Constructores de Stri ngBuilder 16.4.2 Mtodos 1ength,capacity, setLengthy ensureCapaci ty de S tri ngBui ld er 16.4.3Mtodos charAt, setCharAt, getChars y reverse de S tri ngBui ld e r16.4.4 Mtodos append de Stri ngBuilder 16.4.5 Mtodos de insercin yeliminacin de Stri ngBui lder 16.5 LaclaseCharacter 16.6 Divisindeobjetos Stri ngen tokens 16.7 Expresiones regulares, laclasePattern y laclase Matcher 16.8 Conclusin 17 Archivos, flujos ysealizacin de objetos 17.1 Introduccin 17.2 Archivosy flujos 17.3Laclase File 17.4 Archivos de texto de acceso secuencial 17.4.1Creacin de un archivo de texto de acceso secuencial 17.4.2 Cmoleerdatos de un archivo de texto de acceso secuencial 17.4.3 Casodeestudio: un programade solicitud de crdito 17.4.4 Actualizacin dearchivos de acceso secuencial 17.5 Sealizacin deobjetos 17.5.1Creacin de un archivo de acceso secuencial mediante el uso delasealizacin deobjetos 17.5.2 Lecturay deserializacin de datos deun archivo de acceso secuencial 17.6 Clases adicionales de java, io17.6.1 Interfaces y clases para entrada y salida basadaen bytes17.6.2 Interfaces y clases para entrada y salida basadaencaracteres 632 634 635 642 647 651 654 657 664 672 673 673 674 674675 676 681 683 684 684 686 687 688 688 690 691 693 694 699 700 708719 720 720 722 726 726 733 736 741 742 743 749 751 751 753 631www.FreeLibros.me 17. Contenido x v 17.7 Abrir archivos conJFileChooser 17.8 Conclusin 18 Recursividad 18.1 Introduccin 18.2Conceptosde recursividad 18.3 Ejemplo de uso de recursividad:factoriales 18.4 Ejemplo de uso de recursividad: serie de Fibonacci18.5 Larecursividad y la pila de llamadas a mtodos 18.6 Comparacinentre recursividade iteracin 18.7 Lastorres de Hanoi 18.8 Fractales18.9 Vueltaatrs recursiva (backtracking) 18.10 Conclusin 19Bsqueda, ordenamiento y Big O 19.1 Introduccin 19.2 Algoritmos debsqueda 19.2.1 Bsqueda lineal 19.2.2 Bsqueda binaria 19.3Algoritmos de ordenamiento 19.3.1 Ordenamiento por seleccin 19.3.2Ordenamiento por insercin 19.3.3 Ordenamiento por combinacin 19.4Conclusin Los captulos 20 a 3 1se encuentran en ingls en el sitioWeb del libro 20 Generic Collections 20.1 Introduction 20.2Collections Overview 20.3 Type-Wrapper Classesfor PrimitiveTypes20.4 Autoboxing and Auto-Unboxing 20.5 Interface Col 1ect i on andClass C o ll e ctio n s 20.6 Lists 20.6.1 A r ra y L is t and Ite ra to r 20.6.2 L in k e d L is t 20.7 Collections Methods 20.7.1Method s o rt 20.7.2 Method s h u ffie 20.7.3 Methods re ve rse , fi 11, copy, max and mi n 20.7.4 Method binarySearch 20.7.5MethodsaddAll, frequency and d is jo in t 20.8 Stack ClassofPackage java, til 20.9 Class PriorityQueueand Interface Queue20.10 Sets 20.11 Maps 754 757 765 766 767 768 771 774 776 777 779790 790 798 799 800 800 804 809 810 814 817 824 829 830 830 831 832832 833 834 836 841 842 845 847 849 851 853 855 856 859www.FreeLibros.me 18. xv Contenido 20.12 Properties Class 20.13Synchronized Collections 20.14 Unmodifiable Collections 20.15Abstract Implementations 20.16 Wrap-Up 2 1 GenericClassesandMethods 21.1 Introduction 21.2 Motivation for Generic Methods21.3 Generic Methods: Implementation and Compile-TimeTranslation21.4 Additional Compile-TimeTranslation Issues: MethodsThat Use aType Parameter asthe Return Type 21.5 Overloading Generic Methods21.6 Generic Classes 21.7 RawTypes 21.8 Wildcards in MethodsThatAcceptType Parameters 21.9 Generics and Inheritance: Notes 21.10Wrap-Up 22 CustomGeneric DataStructures 22.1 Introduction 22.2Self-Referential Classes 22.3 Dynamic Memory Allocation 22.4 LinkedLists 22.5 Stacks 22.6 Queues 22.7 Trees 22.8 Wrap-Up 23 AppletsandJavaWebStart 23-1 Introduction 23.2 SampleApplets Provided withtheJDK 23-3 SimpleJavaApplet: Drawing a String 23-3.1 ExecutingWelcomeAppl et in the appletviewer 23-3.2 Executing an Applet inaWeb Browser 23.4 Applet Life-Cycle Methods 23-5 Initializationwith Method i nit 23.6 Sandbox Security Model 23.7 JavaWeb Startand theJava Network Launch Protocol (JNLP) 23.7.1 Packaging theDrawTest Appletfor Usewith JavaWeb Start 23.7.2 JNLP Document forthe DrawTest Applet 23.8 Wrap-Up 24 Multimedia: AppletsandApplications 24.1 Introduction 24.2 Loading, Displaying andScaling Images 24.3 Animaring a Series ofImages 24.4 Image Maps 863866 866 867 867 873 874 874 877 880 883 883 891 895 899 900 904 905905 906 907 917 921 924 930 941 942 943 947 949 951 951 952 954 956956 957 961 967 968 969 975 982 www.FreeLibros.me 19. Contenido x vii 24.5 Loading and PlayingAudio Clips 24.6 PlayingVideo and OtherMedia withJava Media Framework 24.7 Wrap-Up 24.8 Web Resources 2 5GUI Components: Part 2 25-1 Introduction 25.2 JS Iid e r 25-3Windows: Additional Notes 25.4 Using Menus with Frames 25-5JPopupMenu 25.6 Pluggable Look-and-Feel 25.7 JDesktopPane andJlnternalFrame 25.8 JTabbedPane 25.9 Layout Managers: BoxLayout andGridBagLayout 25.10 Wrap-Up 2 6 Multithreading 26.1 Introduction26.2 Thread States: Life Cycle ofaThread 26.3 Creating andExecutingThreads with Executor Framework 26.4 ThreadSynchronization 26.4.1 Unsynchronized Data Sharing 26.4.2Synchronized Data SharingMaking Operations Atomic 26.5Producer/Consumer Relationship without Synchronization 26.6Producer/Consumer Relationship: ArrayBlocki ngQueue 26.7Producer/Consumer Relationship with Synchronization 26.8Producer/Consumer Relationship: Bounded Buffers 26.9Producer/Consumer Relationship: The Lock and Condi t i onInterfaces 26.10 Concurrent Collections Overview 26.11Multithreadingwith GUI 26.11.1 Performing Computations inaWorkerThread 26.11.2 Processing Intermedate Results with SwingWorker 26.12 Interfaces Caliabl e and Futu re 26.13 Java SE 7:Fork/Join Framework 26.14 Wrap-Up 2 7 Networking 27.1 Introduction27.2 Manipulating URLs 27.3 Reading a Fileon aWeb Server 27.4Establishing a SimpleServer Using Stream Sockets 27.5 Establishinga Simple Client Using Stream Sockets 27.6 Client/Server Interactionwith Stream Socket Connections 27.7 Datagrams: ConnectionlessClient/ServerInteraction 27.8 Client/ServerTic-Tac-Toe UsingaMultithreaded Server 27.9 [Web Bonus] Case Study: DeitelMessenger27.10 Wrap-Up 985 988 992 992 1000 1001 1001 1005 1006 1014 10171022 1026 1028 1040 1045 1046 1048 1051 1054 1055 1059 1062 10701073 1079 1086 1093 1095 1096 1102 1109 1109 1110 I 118 1119 11201125 1128 1130 1130 1142 1150 1165 1165 www.FreeLibros.me 20. x vContenido 28 Accessing Databases with JDBC 28.1 Introduction 28.2Relational Databases 28.3 Relational Database Overview: The booksDatabase 28.4 SQL 28.4.1 Basic SELECT Query 28.4.2 WHERE Clause28.4.3 ORDER BY Clause 28.4.4 Merging Data from MltipleTables:INNER JOIN 28.4.5 I NSERT Statement 28.4.6 UPDATE Statement 28.4.7DELETE Statement 28.5 Instructions for Installing MySQL and MySQLConnector/J 28.6 Instructions forSetring Up a MySQL UserAccount28.7 Creating Database books in MySQL 28.8 ManipularingDatabaseswith JDBC 28.8.1 Connecring to and Querying a Database28.8.2 Querying the books Database 28.9 RowSet Interface 28.10 JavaDB/Apache Derby 28.11 P repa redStatem ents 28.12 Stored Procedures28.13 Transaction Processing 28.14 Wrap-Up 28.15 Web Resources 29JavaServer Faces Web Apps: Part I 29.1 Introduction 29.2HyperTextTransfer Protocol (HTTP) Transacrions 29.3MultirierApplication Architecture 29.4 YourFirstJSF Web App 29.4.1The Default i ndex .xhtml Document: Introducing Facelets 29.4.2Examining the WebTimeBean Class 29.4.3 Building theWebTi meJSF WebApp in NetBeans 29.5 Model-View-ControllerArchitecture ofJSF Apps29.6 CommonJSF Components 29.7 ValidationUsing JSFStandardValidators 29.8 SessionTracking 29.8.1 Cookies 29.8.2SessionTracking with @Sessi onScoped Beans 29.9 Wrap-Up 30JavaServer Faces Web Apps: Part 2 30.1 Introduction 30.2 AccessingDatabases in Web Apps 30.2.1 Setring Up the Database 30.2.2@ManagedBean ClassAddressBean 30.2.3 i ndex.xhtml Facelets Page30.2.4 addent r y . xhtml Facelets Page 1172 1173 1174 1177 11781179 1181 1182 1184 1185 1186 1186 1187 1188 1189 1189 1194 12071209 1211 1226 1227 1227 1228 1235 1236 1237 1240 1241 1242 12441246 1250 1250 1254 1261 1262 1263 1269 1276 1277 1277 1279 12821286 1288 I 171 www.FreeLibros.me 21. Contenido x x 30.3 Ajax 30.4AddingAjax Functionality to theValidation App 30.5 Wrap-Up 3 1 WebServices 31.1 Introduction 31.2 Web Service Basics 31.3 SimpleObjectAccess Protocol (SOAP) 31.4 Representational StateTransfer(REST) 31.5 JavaScript Object Notation (JSON) 31.6 Publishing andConsuming SOAP-BasedWeb Services 31.6.1 Creating aWeb ApplicationProject and Adding aWeb Service Class in NetBeans 31.6.2 Definingthe Wel comeSOAP Web Service in NetBeans 31.6.3 Publishing the WelcomeSOAPWeb Service from NetBeans 31.6.4 Testing the WelcomeSOAPWeb Service with GlassFish Application ServersTesterWebPage 1308 31.6.5 Describing aWeb Service with theWebServiceDescription Language (WSDL) 31.6.6 Creating a ClienttoConsume the Wel comeSOAPWeb Service 31.6.7 Consuming the WelcomeSOAPWeb Service 31.7 Publishing and Consuming REST-BasedXML WebServices 31.7.1 Creating a REST-Based XMLWeb Service 31.7.2Consuming a REST-BasedXMLWeb Service 31.8 Publishing and ConsumingREST-BasedJSON Web Services 31.8.1 Creating a REST-BasedJSON WebService 31.8.2 Consuming a REST-BasedJSON Web Service 31.9SessionTrackingin a SOAPWeb Service 31.9.1 Creating a B lackjackWeb Service 31.9.2 Consuming the BI ackj ackWeb Service 31.10Consuming a Database-Driven SOAP Web Service 31.10.1 Creating theReservati onDatabase 31.10.2 Creating aWeb Application toInteractwith the Reservation Service 1343 31.11 Equation Generator:Returning User-Defmed Types 31.11.1 Creating theEquationGeneratorXML Web Service 31.11.2 Consuming theEquationGeneratorXM L Web Service 31.11.3 Creating theEquationGeneratorJSONWeb Service 31.11.4 Consuming theEquationGeneratorJSONWeb Service 31.12 Wrap-Up 1290 1292 1295 12991300 1302 1302 1302 1303 1303 1303 1304 1307 1309 1310 1312 13151315 1318 1320 1320 1322 1324 1325 1328 1339 1340 1346 1349 13501354 1354 1357 www.FreeLibros.me 22. X X Contenido Los apndices M aQ se encuentran en ingls en el sitio Web del libro M CreatingDocumentation with javadoc M. 1 Introduction M.2 DocumentationComments M.3 DocumentingJava Source Code M .4 javadoc M.5 FilesProduced by javadoc N Bit Manipulation N.l Introduction N.2 BitManipulation and the Bitwise Operators N.3 B itS et Class O Labeledbreak and conti nue Statements 0.1 Introduction 0.2 Labeled breakStatement 0.3 Labeled continue Statement P UML 2: AdditionalDiagram Types P.1 Introduction P.2 Additional Diagram Types QDesign Patterns Q.l Introduction Q.2 Creational, Structural andBehavioral Design Patterns Q.2.1 Creational Design Patterns Q.2.2Structural Design Patterns Q.2.3 Behavioral Design Patterns Q.2.4Conclusin Q.3 Design Patterns in Packages java.awt and javax.swingQ.3.1 Creational Design Patterns Q.3.2 Structural Design PatternsQ.3.3 Behavioral Design Patterns Q.3.4 Conclusin Q.4 ConcurrencyDesign Patterns Q.5 Design Patterns Used in Packages java, io andjava, net Q.5.1 Creational Design Patterns Q.5.2 Structural DesignPatterns Q.5.3 ArchitecturaJ Patterns Q.5.4 Conclusin Q.6 DesignPatterns Used in Package java.uti 1 Q.6.1 Creational DesignPatterns Q.6.2 Behavioral Design Patterns Q.7 Wrap-Up M-i M-l M-lM-l M-8 M-9 N-l N-l N-l N -ll 0 - 1 o - i o - i 0-2 P-l P-l P-l Q-iQ -l Q-2 Q-3 Q-5 Q-6 Q-7 Q-7 Q-7 Q-8 Q-l0 Q-13 Q-14 Q-i5 Q-i5 Q-15Q-16 Q-19 Q-19 Q-19 Q-19 Q-20 www.FreeLibros.me 23. PrefacioNovivas msenfragmentos, conctate. EdgarMorgan Foster Bienvenido aCmoprogramarenJava,novenaedicin. Este libro presentalas tecnologasde vanguardia paraestudiantes, profesoresy desarroliadoresdesoftware. El nuevo captulo 1 atrae la atencin de los estudiantescon hechos y cifras fascinantes, para que encuentren ms emocionanteel hecho de estudiar sobre las computadoras y la programacin.Ofrece los siguiente: una tabla sobre algunos proyectos deinvestigacin que se hacen posibles gracias a las computadoras; unanlisis sobre el hardware y las tendencias tecnolgicas actuales;jerarqua de datos; unatabladeplataformasdeaplicacionesmvilesydeInternet; unanuevaseccinsobreredessociales; una introduccinaAndrid; una tabla de los servicios Web ms populares; una tabla delas publicaciones tecnolgicasy de negocios, adems de lossiriosWebque le ayudarnaestar aldacon las noticias y ten dencias msrecientes sobre tecnologa;y ejercicios actualizados. El libro esapropiado para secuencias de cursos introductorios apoyados en lasrecomendaciones curriculares de ACM/IEEE y sirve como preparacinpara el examen de Colocacin avanzada (AP) decienciascomputacinales. Nosenfocamosenlasmejoresprcticasdeingenieradesoftware. Labasedellibroesnuestroreconocido mtodo decdigo activo:los conceptosse presentanen el contextode programasfuncionales completos, en lugar de hacerlo a travsde fragmentosseparados de cdigo. Cada ejemplo de cdigo completo vieneacompaadodeejemplosdeejecucionesactuales.Todoelcdigofuenteestdisponibleenwww.deitel.com/ books/jhtp9/ (eningls)yenelsirioWebdeestelibrowww.pearsonenespaol.com/deitel (enespaol).Sisurgealgunadudaopreguntamientrasleeestelibro,enveuncorreo[email protected]l.com; leresponderemosalabrevedad.Paraobteneractualizacionessobreeste libro,visitevavw.deitel.com/books/ jhtp9/, sganosenFacebook (vmm deite l.com/deitelfan)yTwitter(@deitel). Tambinpuedesuscribirsealboletndecorreoelectrnico DeitePBuzzOnline(vom.deitel.com/newsletter/subscri be.html). Caractersticas nuevas ymejoradas He aqu las actualizaciones que realizamosala9aedicin:Java StandardEdition (SE) 7 Fcil de usar como libro para Java SE 6y Java SE 7. Hay unas cuantas caractersticas de JavaStandardEdition (SE) 7que afectan aloscursosdecienciascomputacionales CS 1yCS 2. Cubrimos esas caractersticas ensecciones modulares opcionales que se pueden incluir u omitir confacilidad. He aqu una parte de la nueva funcionalidad: objetos String en instrucciones switch, la instruc cin try con recursos(try-with-resources) paraadministrarobjetosAutoClosable,multi-catch para definir un solo manejador de excepciones ensustitucin de varios que realizan la misma tarea, las API delsistema de archivos NIO y la inferencia de tipos de objetosgenricos a partir de lavariable alaque estn asignados, mediante eluso de lanotacin o . Tambin veremos las generalidades sobre lasnuevas caractersticas de laAPI concurrente. www.FreeLibros.me 24. xx Prefacio Nuevas API del sistema de archivos de Java SE 7.Ofrecemos una versin en lnea alternativa (en ingls) del captulo 17,Archivos, flujos y sealizacin de objetos, que se volvi aimplementar con las nuevasAPI del sistemade archivosdeJava SE 7.VersionesAutoClosable de Connection, Statem enty ResultSetdeJava SE7. Con elcdigo fuen te para el captulo 28 (en ingls),proporcionamos unaversin del primer ejemplo del captulo que seimplement mediante el uso de lasversiones AutoClosable deConnection, Statementy ResultSet. Los objetos AutoClosable reducenla probabilidad de fugas de recursos cuando se utilizan con lainstruccin try con recursos (try-with-resources) de Java SE 7, lacual cierra de manera automtica los objetos AutoClosabl e que seasignan en los parntesis despus de la palabra clave try.Caractersticaspedaggicas Mejoramoselconjunto deejerciciosMarcarladiferencia* Lealentamosautilizarlascomputadoras e Internet parainvestigar y resolver problemas sociales relevantes. Estosejercicios estn diseados para aumentar la conciencia y el anlisisen torno a los problemas importantes a los que se enfrenta elmundo. Esperamos que usted los aborde con sus propios valores,polticas y creencias. D un vis tazo a nuestro nuevo Centro derecursos para marcar una diferencia (en ingls) en www.dei te l.com/MakingADif ference, en dondeobtendr ideas adicionales que talvezdesee investigar ms a fondo. Nmerosdepginapara lostrminosclaveen losresmenesde cada capitulo. En lalistade trmi nos clavequeaparece en el resumen de cada captulo incluimos el nmero depginadonde se define el trmino. Comentarios en video. En el sitioWebde este libro encontrar comentarios en video (VideoNotes), eningls, en las que el coautor Paul Deitel explica con detalle lamayora de los programas de los captulos bsicos. Los profesores noshan dicho que estos comentariosconstituyen un recurso valiosoparasus estudiantes. Tecnologa de objetos Programacin y diseoorientados a objetos. En el captulo 1 presentamos la terminologa ylos conceptos bsicos de latecnologadeobjetos. En el captulo 3losestudiantes desarrollansusprimeras clases y objetospersonalizados. Al presentar los objetos y las clases en losprimeros captulos hace mos que los estudiantes de inmediato piensenen objetosy dominen estos conceptos [en los cursos que requierenuna metodologa en la que se presenten los objetos en captulosposteriores, le reco mendamos el libro Java How to Program, LateObjects Versin, 8aedition (en ingls), el cual presenta en losprimeros seis captulos los fundamentos de la programacin(incluyendo dos sobre instruc ciones de control) y contina convarios captulos que introducen los conceptos de programacinorientada aobjetos en forma gradual]. Manejo de excepciones.Integramos el manejo bsico de excepciones en los primeros captulosdel libro; adems los profesores pueden extraer con facilidad msmaterial del captulo 11, Manejo de excepciones: un anlisis msdetallado, para mostrarlo con anticipacin. Las clases ArraysyArrayList. El captulo 7 cubre la clase Arrays que contiene mtodospara realizar manipulaciones comunes de arreglos y la claseArrayList que implementa una estruc tura de datos tipo arreglo,cuyo tamao se puede ajustar en forma dinmica. Esto va de acuerdocon nuestra filosofa de obtener mucha prctica al utilizar lasclases existentes, al tiempo que el estudiante aprendeadefinirsuspropias clases. Casos de estudio orientados a objetos(OO). La presentacin de las clases y los objetos en los pri meroscaptulos del libro aportan casos de estudio de Tiempo, Empleado yLibroCali ficaciones, que se entretejen a travs varias secciones ycaptulos, e introducen conceptos de OO cada vez ms profundos.www.FreeLibros.me 25. Prefacio x x i Ejemploprctico opcional: usode UMLpara desarrollar un diseo orientado a objetosy unaimplementacin en Java de un cajero automtico (ATM). El UML(Lenguaje Unificado de Modelado) es el lenguaje grfico estndar enla industria para modelar sistemas orientados a ob jetos. Loscaptulos 12 y 13 (en el sitio Web) contienen un Ejemplo prcticoopcionalsobre diseo orientado a objetos mediante el uso de UML.Diseamos e implementamos el software para un cajero automtico (ATM)simple. Analizamos un documento de requerimientos tpico, el cualespe cificaelsistemaquesevaaconstruir.Determinamoslasclasesnecesarias paraimplementresesistema, los atributos quedeben tener esas clases, los comportamientos que necesitan exhibir,y especificamos cmo deben interactuar las clases entre s paracumplir con los requerimientos del sistema. A partir del diseocreamos una implementacin completa en Java. A menudo losestudiantes informan que pasan por un momento de revelacin:elEjemplo prctico les ayuda a atar cabos y comprender enverdadlaorientacin a objetos. Se reorden lapresentacin de estructuras dedatos. Empezamos con la clase genrica ArrayList en el captulo 7.Como los estudiantes comprendern los conceptos bsicos sobrelosgenricos en lospri meros captulos del libro,nuestros anlisisposteriores sobre lasestructuras de datos ofrecen un trata mientoms detallado de las colecciones de genricos, puesto que ensean autilizar las colecciones integradas de laAPI deJava. Luegomostramoscmo implementar losmtodos y las clases genricas. Porltimo, mostraremos cmo crearestructuras de datos genricaspersonalizadas. Desarrollo Weby de basesde datos (materialeninglsen elsitio Web dellibro) JDBC 4. Elcaptulo 28, trata sobreJDBC 4; aquse utilizan lossistemas de administracin de bases dedatos Java DB/Apache Derby y MySQL. El captulo contiene un Ejemploprctico de OO sobre cmo desarrollar una libreta de direccionescontrolada por una base de datos; en este ejemplo se de muestranlasinstrucciones preparadasy el descubrimiento automtico decontroladores de JDBC 4. Java Server Faces (JSF) 2.0. Los captulos29 y 30 se actualizaron para introducir la tecnologa JavaServerFaces (JSF) 2.0, que simplifica en gran medida la creacin deaplicaciones Web con JSF. El captulo 29 presenta ejemplos sobre lacreacin de interfaces GUI de aplicaciones Web, la vali dacin deformularios y el rastreo de sesiones. El captulo 30 habla sobre lasaplicaciones JSF con troladas por datos y habilitadas para Ajax.Este captulo cuenta con una libreta de direcciones Web muldnivelcontrolada por una base de datos, la cual permite a los usuariosagregar contactos y bus carlos. Esta aplicacin habilitada para Ajaxproporciona al lector una sensacin real del desarrollodesoftwareWeb 2.0. Servicios Web. Elcaptulo 31, Web Services,demuestra cmo crear y consumir servicios Web basa dosen SOAP^REST.Los Ejemplos prcticos presentan eldesarrollo delosserviciosWebdeljuego de blackjacky un sistemade reservaciones deuna aerolnea. Java WebStarty elProtocolo delanzamiento de reddeJava(JNLP). PresentamosJavaWeb Start y JNLP, que permiten lanzarapplets aplicaciones a travs de un navegador Web. Los usuariospueden instalar estos applets y aplicaciones en forma local paraejecutarlos despus. Los progra mas tambin pueden solicitar permisoal usuario para acceder a los recursos locales del sistema y a losarchivos: con lo cual usted podr desarrollar applets y aplicacionesms robustas que se ejecuten en forma segura mediante el modelo deseguridad de caja de arena (sandbox) de Java, el cual se aplica alcdigo descargado. Multihilos (en inglsen elsitio Web) Multihilos.Rediseamos por completo el captulo 26, Multithreading [conagradecimiento especial a laorientacinde Brian GoetzyJosephBowbeer,dos de loscoautores deJava Concurrencyin Practi-ce,Addison-Wesley, 2006]. La clase SwingWorker. Utilizamos laclaseSwingWorker para crearinterfacesde usuario multihilos.www.FreeLibros.me 26. x x iv Prefacio GUIy grficos Presentacinescalable de GUIy grficos. Los profesores que impartan cursosintroductorios tie nen una amplia gama de dnde elegir en cuanto ala cantidad de GUI y grficos por cubrir: desde cero hasta unasecuencia introductoria de 10 secciones breves, las cuales seentrelazan con los pri meros captulos hasta llegar a un anlisisdetallado en los captulos 14, 15 y 25 y en el apndice I (este ltimoy el apndice, en ingls en el sitio Web). Administrador de esquemasGroupLayout. Analizamos el administrador de esquemas GroupLayoutdentro del contexto de la herramienta de diseo de GUI en elentornode desarrollo integrado (IDE) NetBeans. Herramientas deordenamientoy filtrado de JTable. Elcaptulo 28 (en ingls en elsitioWeb) uti liza estas herramientas para reordenar los datos en unobjeto JTable y filtrarlos mediante expresio nes regulares.Otrascaractersticas Android Debido alenorme intersen los telfonosinteligentesy tabletas basadasen Android, hemos integradounaintroduccinde trescaptulos paraeldesarrollo de aplicacionesdeAndroid (losencon trar en ingls en elsitio Web del libro). Estoscaptulos son de nuestro nuevo libro Androidfor Pro-grammers:AnApp-DrivenApproach delaserieDeitelDeveloper. Una vez queaprendaJava, descubrir que es bastante simple desarrollary ejecutaraplicaciones Android en elemulador gratuito que puede descargar dedeveloper.android.com. Conceptos comunes de ingeniera de software.Analizamos el desarrollo gil de software, la refac- torizacin, lospatrones de diseo, LAMP, SaaS (Software as a Service), PaaS(Platform as a Service), lacomputacin en la nube, elsoftware decdigo abierto y muchos conceptos ms. Grfico de dependencias Elgrfico de la siguiente pgina muestra las dependencias entre loscaptulos para ayudar a los profe sores a planear su programa deestudios. Cmoprogramar enJava 9aedicin es un libro extenso, apropiado para una gran variedad de cursos de programacin en distintosniveles, en especial CS 1 y CS 2, adems de las secuencias de cursosde introduccin en disciplinas relacionadas. El libro tiene unaorganizacin modular, claramente delineada. Los captulos 1 a 11 y 14a 17 forman una secuencia de programacin elemental accesible, conuna slida introduccin a la programacin orientada a objetos. Loscaptulos opcionales 12 y 13 constituyen una introduccin accesibleal diseo orientado a obje tos con UML. Tanto la trayectoria de GUIy grficos como los captulos 14, 15, 23, 24 y 25 forman unasecuencia sustancial de GUI, grficos y multimedia. Los captulos 18a 22 forman una excelente cadena de estructuras de datos. Loscaptulos 26 y 27 constituyen una slida introduccin a los conceptosde multihilos yel trabajo en red atravs de Internet.Loscaptulos 28 a31 forman una secuencia enriquecida de desarrolloWeb con uso intensivo de bases de datos. Mtodos de enseanzaCmoprogramarenJava 9a edicinoontiene cientos de ejemplosfuncionales completos. Hacemos hin capi en la claridad de losprogramasy nos concentramos encrear software bien diseado.www.FreeLibros.me 27. Prefacio x x v Grfico de dependencias decaptulos y mdulos [Nota: las flechas que apuntan hada un captuloindican las dependencias de ste. Algunos captulos tienen variasdependencias]. Programacin orientada a objetos 8 Clases yobjetos:-* iri anlisis ms detallado 9 Programadn orientada aobjetos: herencia I 10 Programadn orientada aobjetos: polimorfismoII Manejo de excepciones Diseo orientado a objetos con UML 12(Opcional) Diseo orientado aobjetos con UML I 13 (Opcional)Implementacin de un diseo orientado a objetos /^structuras de datos18 Recursividad1 19 Bsqueda, ordenamiento y Big O 20 GenericCollections 21 Generic Classes and Methods 22Custom Generic DataStructures I . El captulo 18 depende de los captulos 14 y 15 parala GUI y los grficos que se utilizan en un ejemplo. Introduccin IIntroduccin a las computadoras ya Java Introduccinalaprogramacin,lasclasesylosobjetos 2 Introduccin a lasapfcacionesenJava- 3Introduccin a lascbses. objetos, mtodosycadenasInstruccionesdecontrol, mtodosy arreglos 4 Instrucciones decontrol: Parte I 5 Instrucciones de control: Parte 2 I 6 Mtodos: unanlisis ms detallado . 7 Arreglos y objetos A rra y L i s t VCadenas y archivos 16Cadenas, caracteres y expresiones regulares -17Archivos, flujos y serializadn de objetos Multihilos y redes 26Multithreading2 27 Networking3 Diseo de aplicaciones de escritorioy Web controladas por bases de datos 28 JDBC4 ------------- 29JSFWeb Apps: Part I30 JSF Web Apps: Part 2 31 Web Services (Opcional)Trayectoria de GUI y grficos 3.8 Uso de cuadros de dilogo4.14Creacin de dibujos simples5.10 Dibujo de rectngulos yvalos I 6.13Cobres y figuras rellenas7.15 Dibujo de arcos8.16Uso de objetos congrficos9.8 Mostrartexto e imgnes usando etiquetas i10.8 Realizardibujos usando polimorfismo GUI, grficos, applets y multimedia14Componentes de GUI: Parte I15 Grficos y Java2D - * 23 Applets andJava Web Start5 I 24 Multimedia: Applets and ApplicationsI25GUIComponents: Rart 2 2. El captulo 26depende del captulo 14para la GUI que se utiliza en un ejemplo yde los captulos 20-21paraotro ejemplo. 3. El captulo 27depende del captulo 23 para unejemplo que utiliza un applet. El Ejemplo prctico extenso (en Web)depende del captulo 25 para la GUI y del captulo 26 para losmultihilos. 4. El captulo 28dependedel captulo 14 para la GUI quese utiliza en un ejemplo. 5. En los captulos 24y27se cubren msapplets. www.FreeLibros.me 28. x x v i Prefacio Resaltado de cdigo.Colocamos rectngulos de color gris alrededor de los segmentos decdigo clave en cada programa. Uso defuentespara dar nfasis.Resaltamos en negritas, dentro del texto, y en el ndice, los trminos claveen los lugaresdonde se define. Enfatizamos los componentesen pantalla en la fuente Helvtica en negritas (por ejemplo, el menArchivo) y enfatizamos el texto del programa en la fuente Lucida(por ejemplo, int x = 5;). Acceso Web. Todo elcdigo fuenteutilizadoeneste libro se puede descargar de: Captulos 2 a 19 (en espaol):www.pearsonenespaol .com/deitel Captulos2 a31 (en ingls):www.deitel .com/books/jhtp9 Objetivos. Las citas de aperturavanseguidas de una lista de objetivos del captulo.Ilustraciones/figuras. Integramos una gran cantidad de tablas,dibujos lineales, diagramas UML, pro gramas ysalidas de programa.lips deprogramacin. Incluimos tips de programacin para ayudarle aenfocarse en los aspectos im portantes del desarrollo de programas.Estos tips y prcticas representan lo mejor que hemos podido recabara lo largo de siete dcadas combinadas de experienciaen laprogramacin y laenseanza. Buenas prcticas de programacin LasBuenasprcticas de programacin sontcnicasque leayudarn aproducirprogramasmsclaros,comprensiblesyfcilesdemantener. Errores comunes deprogramacin AlponeratencinenestosErrores comunes de programacinsereducelaprobabilidad dequeustedpuedacaerenellos. Tips paraprevenir errores Estostips contienen sugerenciasparaexponerloserrores ogusanosinformticosy elimi narlosde susprogramas;muchosde ellosdescriben aspectosdejava que evitan que entrensiquieraasusprogramas. Tips de rendimientoEstosrecuadrosresaltan lasoportunidadespara hacerquesusprogramasseejecuten ms rpidooparaminimizarlacantidaddememoriaqueocupan. Tips de portabilidad Los Tips deportabilidad le ayudan a escribir cdigo que pueda ejecutarse envarias plataformas. Observaciones de ingeniera de softwareLasObservaciones de ingeniera desoftwareresaltantemasdearquitecturay diseo, locualafectalaconstruccindelossistemasdesofiware,especialmentelosdegranescala.* n i Observaciones de apariencia visual B5B Las Observaciones deapariencia visual resaltan lasconvencionesde la interfazgrficatleusuario.Adems,leayudanadisearinterfacesgrficasdeusuarioatractivasyamiga blesenconformidadconlasnormasdelaindustria. www.FreeLibros.me29. Prefacio x x v ii Vietas de resumen. Presentamos un resumendetallado del captulo, estilo lista con vietas, seccin por seccin.Para facilitar la referencia, incluimos dentro del texto el nmerode pgina donde aparecen bs trminos clave. Ejercicios deautoevaluacin y respuestas. Se proveen diversos ejercicios deautoevaluacin con sus respuestas para que los estudiantespractiquen por su cuenta. Todos losejercicios en el Ejemplo prcticoopcional sobre elATM estn resueltosen su totalidad. Ejercicios. Losejerciciosde los captulos abarcan: Recordatorio simple delaterminologay los conceptos importantes. Cul esel error enestecdigo? Qu haceeste cdigo? Escriturade instrucciones individuales ypequeas porciones de mtodos y clases. Escriturade mtodos, clases yprogramas completos. Proyectos importantes. En muchos captulos,ejerciciosdel tipo Hacer ladiferencia. ndice. Incluimos un ndiceextenso. Donde se definen los trminos clave se resaltan con unnmero de pgina en negritas. Software utilizado en CmoprogramarenJava 9aedicin Podr descargar todo elsoftware necesarioparaeste libro sincosto a travs deWeb. En laseccin Antesdeempezar,despus deeste Prefacio, encontrar vnculos paracadadescarga. Para escribir la mayora de los ejemplos de este libroutilizamos el kit de desarrollo gratuito Java Standard EditionDevelopment Kit (JDK) 6. Para los mdulos opcionales de Java SE 7utilizamos la ersin JDK 7 de acceso anticipado de OpenJDK. En loscaptulos 29 a 31 tambin utilizamos el IDE Netbeans; en el captulo28 usamos MySQL y MySQL Connector/J. Encontrar recursos y descargasdesoftware adicionales en nuestros Centros de recursos deJava,ubicados en: www.deitel.com/ResoureeCenters.html Suplementos parael profesor (en ingls) Lossiguientessuplementosestndisponiblessloparaprofesoresatravs del Centro de recursosparael pro fesorde Pearson (www.pearsonenespaol.com/deitel):Diapositivas de PowerPoint!oon todo elcdigo y las figuras deltexto, adems de elementos envietasque sintetizan los puntos clave.Test Item File (Archivo de pruebas) oon preguntas de opcin mltiple(aproximadamente dos por cadaseccin del libro).Manualdesolucionesconsoluciones para lagran mayorade losejerciciosdefinal de captulo. El accesoa estos recursosest limitadoestrictamente aprofesores universitarios que impartan cla ses conbase en el libro. Slo ellospueden obtener acceso atravsdelosrepresentantesde Pearson. No se proveen soluciones para losejercicios de proyectos. Revise nuestro Centro de recursos deproyectos de programacin (www.deitel .com/Programmi ngProjects/),en donde encontrar muchos ejerciciosadicionalesy proyectos nuevos.Si no es un miembro docente registrado, pngase encontacto con surepresentante de Pearson. www.FreeLibros.me 30. x x v iii PrefacioReconocimientos Queremos agradeceraAbbeyDeitely BarbaraDeitelporlasextensas horasque dedicaron aesteproyecto. Somos afortunados alhaber trabajado en este proyecto con el dedicado equipo de editoresprofesionales de Pearson. Apreciamos laorientacin, inteligenciayenergade Michael Hirsch, editor en jefe de Cienciascomputacionales. CaroleSnyderreclut alosrevisores dellibroysehizo cargo delproceso de revisin. Bob Engelhardtsehizo cargodelaproduccin dellibro. Revisores Queremos agradecer los esfuerzosde los revisores de laoctava y novenaediciones, quienes revisaronex haustivamente el texto y los programas, y proporcionaroninnumerables sugerencias para mejorar la presentacin: LanceAndersen(Oracle),Soundararajan Angusamy (SunMicrosystems),Joseph Bowbeer(Consultor),WilliamE. Duncan (LouisianaState University),DianaFranklin (UniversityofCalifornia, Santa Barbara), Edward EGehringer (North Carolina State University), Huiwei Guan(Northshore Community College), Ric Heishman (George MasnUniversity), Dr. Heinz Kabutz (JavaSpecialists. eu), Patty Kraft(SanDiego StateUniversity), Lawrence Premkumar(SunMicrosystems),Tim Margush (University ofAkron), Sue McFarlandMetzger (Villanova University), Shyamal Mitra (The UniversityofTexas at Austin), Peter Pilgrim (Consultor), Manjeet Rege, Ph.D.(Rochester Insritute of Techno logy), Manfred Riem (Java Champion,Consultor, Robert Half), Simn Ritter (Oracle), Susan Rodger (DukeUniversity), Amr Sabry (Indiana University), Jos Antonio GonzlezSeco (Parlamento de Andaluca), Sang Shin (Sun Microsystems), S.Sivakumar (Astra Infotech Prvate Limited), Raghavan Rags Srinivas(Inmit), Monica Sweat (Georgia Tech), Vinod Varma (Astra InfotechPrvate Limited) yAlexander Zuev (Sun Microsystems). Bueno,ahlotiene!A medida queleaellibro,apreciaremosconsinceridadsuscomentarios,crticas,correccionesy sugerencias para mejorarlo. Dirija todasucorrespondencia a: d e ite [email protected] d e ite l. com Leresponderemosoportunamente. Esperamos quedisfrute el trabajo coneste libro.Buenasuerte! Pauly Harvey Deitel Acerca de los autores Paul J.Deitel, CEO y Director Tcnico de Deitel & Associates, Inc., esegresado del Sloan School of Management del MIT, en donde estudiTecnologa de la Informacin. A travs de Deitel & Asso ciates,Inc., haimpartido cursos deJava, C, C++, C#,Visual Basicyprogramacin en Internet aclientes de la industria, como: Cisco,IBM, Siemens, Sun Microsystems, Dell, Lucent Technologies,Fidelity, NASA en el Centro Espacial Kennedy, el National SevereStorm Laboratory, White Sands Missile Range, Rogue Wave Software,Boeing, SunGard Higher Education, Stratus, Cambridge TechnologyPartners, OneWave,Hyperion Software, AdraSystems, Entergy,CableData Systems, NortelNetworks, Puma, iRobot, Invensys y muchosms. l y su coautor, el Dr. Harvey M. Deitel, son autores de los libros de programacin ms vendidos en el mundo. Dr. Harvey M. Deitel,Presidente y Consejero de Estrategia de Deitel & Associates,Inc., tiene 50 aos de experiencia en el campo de lacomputacin. ElDr. Deitel obtuvo una licenciatura y una maes tra por el MIT y undoctorado de la Universidad de Boston. Tiene muchos aos deexperienciacomo profesor universitario, la cual incluye un puestovitalicio y el haber sido presidente del Departamento de Cienciasde laComputacin en Boston College antes de fundar, con su hijoPaulJ. Deitel, Deitel & Associates, Inc. l y Paul son coautoresde varias docenas de libros y paquetes multimedia LiveLessons,ypiensanescribir muchos ms. Lostextosde losDeitelse han ganadoelreconocimiento internacionaly han sido traducidos al japons,alemn, ruso, chino, espaol, coreano, francs, polaco, italiano,portu gus, griego, urdti y turco. El Dr. Deitel ha impartidocientos de seminarios profesionales para grandes empresas,instituciones acadmicas, organizaciones gubernamentalesy diversossectores del ejrcito. www.FreeLibros.me 31. Prefacio x x ixCapacitacin corporativa de Deitel & Associates, Inc. Deitel& Associates, Inc., es una empresa reconocida a nivel mundial,dedicada al entrenamiento cor porativo y la creacin de contenido.La empresa proporciona cursos impartidos por profesores en lasinstalaciones de sus clientes en todo el mundo, sobre la mayora delos lenguajes y plataformas de programacin, como Java, C++, VisualC++, C, Visual C#, Visual Basic,XML, Python, tec nologa de objetos,programacin en Internet y World Wide Web, desarrollo deaplicaciones para Android e Phone, y una lista cada vez mayor decursos adicionales de programacin y desarrollo desoftware. Losfundadores de Deitel & Associates, Inc. son Paul J. Deitel y elDr. Harvey M. Deitel. Entre sus clientes estn muchas de lasempresas ms grandes del mundo, agencias gubernamentales, sectoresdel ejrcito e instituciones acadmicas. A lo largo de su sociedadeditorial de 35 aos con Hentice Hall/Pearson, Deitel &Associates, Inc. ha publicado libros de texto de vanguardia sobreprogramacin, libros profesionales, y cursos de video UveLessons conbase en DVD y Web. Puede contactarse con Deitel & Associates,Inc. y con los autores por medio de correo electrnico: d e ite l de ite l. com Para conocer ms acerca de Deitel & Associates,Inc., sus publicaciones y su currculum mundial de laSerie deCapacitacin CorporativaDive Int
Deitel P J Deitel H M Cpp How To Program 9th Edition 2011 PdfDeitel P J Deitel H M Cpp
2ff7e9595c
Comments