como programar java, 9na edicion deitel

618
COMO P R O G R A M A R PAUL DEITEL HARVEY DEITEL ALWAYS LEARNING PEARSON www.FreeLibros.me

Upload: xeabstian-realpe

Post on 14-Nov-2014

2.240 views

Category:

Engineering


203 download

DESCRIPTION

No lo compartan, si no me lo borran >_

TRANSCRIPT

  • 1. C O M O P R O G R A M A R PAUL DEITEL HARVEY DEITEL A L W A Y S L E A R N I N G PEARSONwww.FreeLibros.me

2. ACCESO A LOS CAPTULOS ADICIONALES DEL LIBRO Para acceder a los captulos 12 a 19 (en espaol), 20 a 31 y Apndices M a Q (en ingls) mencionados en el texto, visite el sitio Web de este libro: www.pearsonenespafiol.coin/deitel Utilice una moneda para descubrir el cdigo de acceso. (No use objetos filosos porque podra daarlo). IMPORTANTE: Este cdigo de acceso tiene vigencia de 2 das! Asegrese que el cdigo no aparezca daado ya que slo puede usarse una vez y no ser 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 V E N A E D I C l d ^ Paul Detel Deitel&Associates, Inc. Harvey Detel Deitel&Associates, Inc. Traductor Alfonso Vidal Romero Elizondo Ingeniero en SistemasElectrnicos ITESM, CampusMonterrey Revisin tcnica Roberto Martnez Romn Departamento de Tecnologa de Informaciny Computacin ITESM, CampusEstado deMxico Domingo Acosta Infante Departamento de Ingeniera en Informtica Instituto Tecnolgico deMorelia PEARSON www.FreeLibros.me 6. DEITEL, PAUL y HARVEY DEITEL Cmo programar en Java Novena edicin PEARSON EDUCACIN, Mxico, 2012 ISBN: 978-607-32-1150-5 rea: Computacin Formato: 20 X 25.5 cm Pginas: 616 Authorized translation from the English language edition entitledJAVAHOW TOPROGRAM, 9thEdition, by PaulDeitel &HarveyDeitel,publishedbyPearsonEducation, Inc., publishing asPrentice Hall, Copyright 2012. Allrights reserved. ISBN9780132575669 Traduccin autorizada de la edicin en idioma ingls titulada JAVAHOW TOPROGRAM,9a. edicin por PaulDeitely HarveyDeitel,publicada porPearson Education,Inc., publicadacomo Prentice Hall, Copyright 2012.Todoslosderechos reservados. Estaedicinen espaoles la nica autorizada. Edidn enespaol DireccinEducacin Superior: EditorSponsor: Editorde Desarrollo: Supervisorde Producdn: Gerente EditorialEducacin SuperiorLatinoamrica: NOVENAEDICIN, 2012 D.R. 2012por Pearson Educacinde Mxico, S.A. de C.V. Atlacomulco 500-5o. piso Col. Industrial Atoto 53519, Naucalpande Jurez, Estado de Mxico Cmara Nacionalde la Industria Editorial Mexicana. Reg. nm. 1031. Reservados todos losderechos. Ni la totalidad ni partede esta publicacin pueden reproducirse, registrarseo transmitirse, porun sistema de recuperacin de informacin, en ninguna forma ni por ningn medio, sea electrnico, mecnico, foto- qumico, magntico o electroptico, por fotocopia, grabacino cualquierotro, sinpermiso previo porescrito deleditor. Elprstamo, alquilero cualquierotra formade cesinde uso de este ejemplarrequerir tambin la autorizacindeleditor 0de sus representantes. ISBNVERSIN IMPRESA: 978-607-32-1150-5 ISBNVERSINE-BOOK: 978-607-32-1151-2 ISBN E-CHAPTER: 978-607-32-1152-9 Impreso en Mxico. Printed in Mxico. 12 34567890- 15 14 13 12 Mario Contreras LuisMiguel CruzCastillo e-mail: [email protected] Bernardino GutirrezHernndez Jos D. Hernndez Garduo Marisade Anta PEARSON www.FreeLibros.me 7. En memoriadesargentoShriver, 'ElprimerdirectordelCuerpodeTazyfundador denumerosasorganizacionessociales: Toruna vida demarcaradiferencia. Pauly Harvey Deitel www.FreeLibros.me 8. www.FreeLibros.me 9. Contenido Prefacio Antes de empezar 1 Introduccin a las computadoras y a Java 1.1 Introduccin 1.2 Computadoras: hardwarey software 1.3 Jerarqua de datos 1.4 Organizacin de una computadora 1.5 Lenguajes mquina, lenguajes ensambladores y lenguajes de alto nivel 1.6 Introduccin a latecnologade los objetos 1.7 Sistemas operativos 1.8 Lenguajesde programacin 1.9 Javay un tpico entorno de desarrollo enJava 1.10 Prueba de una aplicacin enJava 1.11 Web 2.0: Las redessociales 1.12 Tecnologas de software 1.13 Cmo estar al da con lastecnologas de informacin 1.14 Conclusin 2 Introduccin a las aplicaciones en Java 2.1 Introduccin 2.2 Su primer programa enJava: imprimir una lnea de texto 2.3 Modificacin de nuestro primer programa enJava 2.4 Cmo mostrar texto con pri ntf 2.5 Otra aplicacin enJava: suma de enteros 2.6 Conceptos acercade la memoria 2.7 Aritmtica 2.8 Toma de decisiones: operadores de igualdad y relacinales 2.9 Conclusin 3 Introduccin a las clases, objetos, mtodos ycadenas 3.1 Introduccin 3.2 Declaracin de una clasecon un mtodo e instanciamiento de un objeto de una clase 3-3 Declaracin de un mtodo con un parmetro 3.4 Variables de instancia, mtodos establecery mtodos obtener 3.5 Comparacin entre tipos primitivos y tipos por referencia 3.6 Inicializacin de objetos mediante constructores xxiii xxxiii 1 2 5 6 8 10 11 13 16 18 22 26 29 31 32 37 38 38 44 46 47 52 53 56 60 71 72 72 76 79 84 85 www.FreeLibros.me 10. 88 92 95 102 103 103 104 104 107 107 112 113 118 125 130 130 134 134 138 151 152 152 154 158 162 164 172 173 179 184 187 197 198 198 200 202 205 206 207 208 210 214 214 215 219 222 224 227 Contenido 3.7 Los nmeros de punto flotantey el tipo double 3.8 (Opcional) Caso de estudio de GUI y grficos: uso de cuadros de dilogo 3.9 Conclusin 4 Instrucciones de control: Parte I 4.1 Introduccin 4.2 Algoritmos 4.3 Seudocdigo 4.4 Estructuras de control 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.8 Cmo formular algoritmos: repeticincontroladapor un contador 4.9 Cmo formular algoritmos: repeticincontroladapor un centinela 4.10 Cmo formular algoritmos: instrucciones de control anidadas 4.11 Operadores de asignacin compuestos 4.12 Operadores de incremento y decremento 4.13 Tipos primitivos 4.14 (Opcional) Caso de estudio de GUI y grficos: creacin de dibujos simples 4.15 Conclusin 5 Instrucciones de control: Parte 2 5.1 Introduccin 5.2 Fundamentos de la repeticin controlada por contador 5.3 Instruccin de repeticin for 5.4 Ejemplossobre el uso de la instruccin for 5.5 Instruccin de repeticin do... whi1e 5.6 Instruccin de seleccin mltiple switch 5.7 Instrucciones break y continu 5.8 Operadores lgicos 5.9 Resumen sobre programacin estructurada 5.10 (Opcional) Caso de estudio de GUI y grficos: dibujo de rectngulosy valos 5.11 Conclusin 6 Mtodos: un anlisis ms detallado 6.1 Introduccin 6.2 Mdulos de programas enJava 6.3 Mtodos st a t i c,campos st a t i cy laclaseMath 6.4 Declaracin de mtodos con mltiples parmetros 6.5 Notas acerca de cmo declarar y utilizar los mtodos 6.6 La pilade llamadasa los mtodosy losregistros de activacin 6.7 Promocin yconversin de argumentos 6.8 Paquetesde laAPI deJava 6.9 Caso de estudio: 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 6.10 Caso de estudio: un juego deprobabilidad (introduccin a las enumeraciones) 6.11 Alcance de las declaraciones 6.12 Sobrecarga de mtodos 6.13 (Opcional) Caso de estudio de GUI y grficos: coloresy figuras rellenas 6.14 Conclusin www.FreeLibros.me 11. Contenido ix 7 Arreglos y objetos ArrayList 7.1 Introduccin 7.2 Arreglos 7.3 Declaracin y creacin de arreglos 7.4 Ejemplos acercadel uso de los arreglos 7.5 Caso de estudio:simulacin para barajar y repartir cartas 7.6 Instruccin for mejorada 7.7 Pasode arreglosa los mtodos 7.8 Caso de estudio: laclase L i broCal i f i ca ci ones que usa un arreglo paraalmacenar las calificaciones 7.9 Arreglos multidimensionales 7.10 Caso de estudio: la clase Libro C al ific a c io n e s que usa un arreglo bidimensional 7.11 Listas de argumentos de longitud variable 7.12 Uso de argumentos de lnea de comandos 7.13 LaclaseArrays 7.14 Introduccin a lascolecciones y laclaseA rrayLi st 7.15 (Opcional) Caso de estudio de GUI y grficos: dibujo de arcos 7.16 Conclusin 8 Clases y objetos: un anlisis ms detallado 8.1 Introduccin 8.2 Caso de estudio de la claseTiempo 8.3 Control del accesoa los miembros 8.4 Referencias a los miembros delobjeto actual mediante this 8.5 Caso de estudio de la claseTiempo: constructoressobrecargados 8.6 Constructores predeterminados y sin argumentos 8.7 Observaciones acercade los mtodosEstablecery Obtener 8.8 Composicin 8.9 Enumeraciones 8.10 Recoleccin de basuray elmtodo fi nali ze 8.11 Miembros de clase s t a t i c 8.12 Declaracin static import 8.13 Variables de instancia fi nal 8.14 Caso de estudio de la claseT i empo: creacin de paquetes 8.15 Accesoa paquetes 8.16 (Opcional) Caso de estudio de GUI y grficos: uso de objetos con grficos 8.17 Conclusin 9 Programacin orientada a objetos: herencia 9.1 Introduccin 9.2 Superclasesy subclases 9.3 Miembros protected 9.4 Relacin entre las superclases y las subclases 9.4.1 Creaciny uso de una clase Empl eadoPorComi s i on 9.4.2 Creacin y uso de una clase Empl eadoBaseMasComi si on 9.4.3 Creacin de una jerarqua de herencia Empl eadoPorComi s i on- Empl eadoBaseMasComi sion 9.4.4 Lajerarqua de herencia Empl eadoPorComi si on-Empl eadoBaseMasComi sion mediante el uso de variablesde instancia protected 9.4.5 Lajerarqua de herencia Empl eadoPorComi si on-Empl eadoBaseMasComi sion mediante el uso de variablesde instancia pri vate 240 241 242 243 244 254 258 259 262 268 271 278 279 281 284 286 289 311 312 312 316 317 320 326 326 328 331 333 334 338 339 340 345 347 351 359 360 361 363 364 364 370 375 377 380 www.FreeLibros.me 12. x Contenido 9.5 Los constructores en lassubclases 9.6 Ingenierade software mediante la herencia 9.7 La clase Obj e ct 9.8 (Opcional) Caso de estudio de GUI y grfieos: mostartexto e imgenes usando etiquetas 9.9 Conclusin 10 Programacin orientada a objetos: polimorfismo 10.1 Introduccin 10.2 Ejemplos delpolimorfismo 10.3 Demostracin del comportamiento polimrfico 10.4 Clases y mtodos abstractos 10.5 Caso de estudio: sistema de nmina utilizando polimorfismo 10.5.1 Lasuperclase abstracta Empleado 10.5.2 Lasubclase concreta EmpleadoAsalari ado 10.5.3 Lasubclase concreta Empl eadoPorHoras 10.5.4 Lasubclase concreta Empl eadoPo rComi si on 10.5.5 Lasubclase concreta indirecta Empl eadoBaseMasComi sion 10.5.6 El procesamiento polimrfico, el operador i nstanceof y laconversin descendente 10.5.7 Resumen de lasasignaciones permitidas entre variables de lasuperclase yde lasubclase 10.6 Mtodos y clases fi nal 10.7 Caso de estudio: creacin y uso de interfaces 10.7.1 Desarrollo de una jerarqua PorPagar 10.7.2 La interfaz PorPagar 10.7.3 Laclase Factu ra 10.7.4 Modificacin de la clase Empleado para implementar la interfaz PorPagar 10.7.5 Modificacin de laclase Empl eadoAsal a ri ado para usarla en la jerarqua PorPagar 10.7.6 Uso de la nterfaz PorPagar para procesar objetos Factura y Empleado mediante el polimorfismo 10.7.7 Interfaces comunes de laAPI deJava 10.8 (Opcional) Caso de estudio de GUI y grficos: realizar dibujos usando polimorfismo 10.9 Conclusin I I Manejo de excepciones: un anlisis ms profundo 11.1 Introduccin 11.2 Ejemplo: divisin entre cero sin manejo de excepciones 11.3 Ejemplo: manejo deexcepciones tipo A ritm eticException elnputMismatchException 11.4 Cundo utilizar el manejo deexcepciones 11.5 Jerarqua de excepcionesenJava 11.6 Bloque finally 11.7 Limpieza de la pilay obtencin de informacin de un objeto excepcin 11.8 Excepciones encadenadas 11.9 Declaracin de nuevos tipos de excepciones 11.10 Precondicionesy poscondiciones 11.11 Aserciones 11.12 (Nuevo enJava SE 7): Clusula catch mltiple: atrapar varias excepciones en un catch 11.13 (Nuevo enJava SE 7): Clusulat rycon recursos (t ry-with-resources): desasignacin automtica de recursos 11.14 Conclusin 385 386 387 388 391 394 395 397 398 400 403 404 407 408 410 412 413 418 418 419 421 422 422 425 427 428 430 431 433 438 439 439 442 447 447 450 454 457 459 460 461 462 463 463 www.FreeLibros.me 13. Contenido x i A Tabla de precedencia de operadores B Conjunto de caracteres ASCII C Palabras clave y palabras reservadas D Tipos primitivos E Uso de la documentacin de la API deJava E.1 Introduccin E.2 Navegacin por laAPI deJava F Uso del depurador E1 Introduccin E2 Los puntos de interrupcin y los comandos run, stop, cont y pri nt F.3 Los comandos pri nt y set E4 Cmo controlar laejecucin mediante los comandos step, step upy next F.5 El comando watch F.6 El comando clear F.7 Conclusin G Salida con formato G.l Introduccin G.2 Flujos G.3 Aplicacin de formato a lasalidacon pri ntf G.4 Impresin de enteros G.5 Impresin de nmeros de punto flotante G.6 Impresin de cadenasy caracteres G.7 Impresin de fechas y horas G.8 Otros caracteres de conversin G.9 Impresin con anchuras de campo y precisiones G.10 Uso de banderas en lacadena de formato de pri ntf G.11 Impresin con ndices como argumentos G.12 Impresin de literalesy secuencias de escape G.13 Aplicacin deformato a lasalida con laclase Formatte r G.l4 Conclusin H Sistemas numricos H.l Introduccin H.2 Abreviaturade los nmeros binarioscomo nmerosoctales y hexadecimales H.3 Conversin de nmerosoctales y hexadecimales a binarios H.4 Conversin de un nmero binario,octal o hexadecimal adecimal H.5 Conversin de un nmero decimala binario, octalo hexadecimal H.6 Nmeros binarios negativos: notacin de complemento a dos 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-27 A-29 A-31 A-32 A-32 A-32 A-33 A-34 A-36 A-37 A-39 A-41 A-43 A-47 A-47 A-48 A-49 A-54 A-55 A-58 A-59 A-59 A-60 A-62 www.FreeLibros.me 14. x ii Contenido I GroupLayout 1.1 Introduccin 1.2 Fundamentos de GroupLayout 1.3 Creacin de unobjeto SelectorColores 1.4 RecursosWebsobre GroupLayout J Componentes de integracin Java Desktop J.l Introduccin J.2 Pantallas deinicio J.3 LaclaseDesktop J.4 Iconos de la bandeja K Mashups K.l Introduccin K.2 Mashups populares K.3 AlgunasAPI de uso comn en mashups K.4 Centrode recursosDeitelsobre mashups K.5 Centrode recursosDeitelsobre RSS K.6 Cuestiones de rendimiento y confiabilidad de los mashups L Unicode L.l Introduccin L2 Formatosde transformacin de Unicode L.3 Caracteresy glifos L.4 Ventajas/Desventajasde Unicode L5 Uso de Unicode L.6 Rangos de caracteres ndice Los captulos 12a 19 se encuentran en espaol en el sitio Web del libro 12 Caso de estudio del ATM, Parte I : Diseo orientado a objetos con UML 12.1 Introduccin alcaso deestudio 12.2 Anlisis del documento de requerimientos 12.3 Cmo identificar lasclases en un documento de requerimientos 12.4 Cmo identificar los atributos de las clases 12.5 Cmo identificar los estadosy actividades de losobjetos 12.6 Cmo identificar lasoperaciones de lasclases 12.7 Cmo indicar lacolaboracin entreobjetos 12.8 Conclusin 469 470 470 478 484 489 493 499 506 A-67 A-67 A-67 A-68 A-78 A-79 A-79 A-79 A-81 A-83 A-85 A-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.1 Introduccin 13.2 Inicio de laprogramacin de lasclases delsistemaATM 13.3 Incorporacin de laherenciay el polimorfismo en el sistemaATM 13.4 Implementacin delcaso deestudio delATM 13.4.1 Laclase ATM 13.4.2 Laclase P a n ta lla 13.4.3 LaclaseTeclado 13.4.4 Laclase Di spensadorEf e c ti vo 13.4.5 Laclase RanuraDeposito 13.4.6 Laclase Cuenta 13.4.7 Laclase BaseDatos Banco 13.4.8 Laclase Transacci n 13.4.9 Laclase Sol i citud Sal do 13.4.10 Laclase R eti ro 13.4.11 Laclase Depos i to 13.4.12 LaclaseCasoEstudioATM 13-5 Conclusin 14 Componentes de la GUI: Parte I 14.1 Introduccin 14.2 NuevaaparienciavisualNimbus deJava 14.3 Entrada/salidasimple basadaen GUI con JOptionPane 14.4 Generalidades de los componentes de Swing 14.5 Mostrartexto e imgenes en unaventana 14.6 Campos detexto y unaintroduccin al manejo deeventos con clases anidadas 14.7 Tipos deeventos comunes de laGUI e interfaces de escucha 14.8 Cmo funciona el manejo deeventos 14.9 JButton 14.10 Botones que mantienen elestado 14.10.1 JCheckBox 14.10.2 JRadioButton 14.11 JComboBox: uso de una clase interna annima para el manejo de eventos 14.12 J L is t 14.13 Listas de seleccin mltiple 14.14 Manejo de eventos de ratn 14.15 Clases adaptadoras 14.16 Subclase de JPanel paradibujarcon el ratn 14.17 Manejode eventos de teclas 14.18 Introduccin a los administradores de esquemas 14.18.1 FlowLayout 14.18.2 BorderLayout 14.18.3 G rid Layou t 14.19 Uso de panelesparaadministraresquemasms complejos 14.20 JTextA rea 14.21 Conclusin 510 511 511 516 522 523 528 529 530 531 532 534 537 538 539 543 546 546 549 550 551 552 555 557 561 567 569 571 574 574 577 580 584 586 589 594 597 601 604 605 608 611 613 615 618 www.FreeLibros.me 16. xiv Contenido 15 Grficos y Java 2D 15.1 Introduccin 15.2 Contextosy objetos degrficos 15-3 Control de colores 15.4 Manipulacin de tipos de letra 15.5 Dibujo de lneas, rectngulosy valos 15.6 Dibujo de arcos 15.7 Dibujo de polgonos y polilneas 15.8 LaAPI Java 2D 15.9 Conclusin 16 Cadenas, caracteres y expresiones regulares 16.1 Introduccin 16.2 Fundamentos de los caracteres y las cadenas 16.3 Laclase String 16.3.1 Constructores de Stri ng 16.3.2 Mtodos 1ength, charAt ygetChars de S trin g 16.3.3 Comparacin entre cadenas 16.3.4 Localizacin de caracteres y subcadenas en las cadenas 16.3.5 Extraccin de subcadenas de lascadenas 16.3.6 Concatenacin de cadenas 16.3.7 Mtodos varios de Stri ng 16.3.8 Mtodo valueOf de Stri ng 16.4 Laclase Stri ngBui lder 16.4.1 Constructores de Stri ngBuilder 16.4.2 Mtodos 1ength, capacity, setLengthy ensureCapaci ty de S tri ngBui ld er 16.4.3 Mtodos charAt, setCharAt, getChars y reverse de S tri ngBui ld e r 16.4.4 Mtodos append de Stri ngBuilder 16.4.5 Mtodos de insercin y eliminacin de Stri ngBui lder 16.5 LaclaseCharacter 16.6 Divisinde objetos Stri ngen tokens 16.7 Expresiones regulares, laclase Pattern y laclase Matcher 16.8 Conclusin 17 Archivos, flujos y sealizacin de objetos 17.1 Introduccin 17.2 Archivosy flujos 17.3 Laclase File 17.4 Archivos de texto de acceso secuencial 17.4.1 Creacin de un archivo de texto de acceso secuencial 17.4.2 Cmo leerdatos de un archivo de texto de acceso secuencial 17.4.3 Caso deestudio: un programade solicitud de crdito 17.4.4 Actualizacin de archivos de acceso secuencial 17.5 Sealizacin deobjetos 17.5.1 Creacin de un archivo de acceso secuencial mediante el uso de lasealizacin deobjetos 17.5.2 Lecturay deserializacin de datos de un archivo de acceso secuencial 17.6 Clases adicionales de java, io 17.6.1 Interfaces y clases para entrada y salida basadaen bytes 17.6.2 Interfaces y clases para entrada y salida basadaen caracteres 632 634 635 642 647 651 654 657 664 672 673 673 674 674 675 676 681 683 684 684 686 687 688 688 690 691 693 694 699 700 708 719 720 720 722 726 726 733 736 741 742 743 749 751 751 753 631 www.FreeLibros.me 17. Contenido x v 17.7 Abrir archivos con JFileChooser 17.8 Conclusin 18 Recursividad 18.1 Introduccin 18.2 Conceptosde recursividad 18.3 Ejemplo de uso de recursividad: factoriales 18.4 Ejemplo de uso de recursividad: serie de Fibonacci 18.5 Larecursividad y la pila de llamadas a mtodos 18.6 Comparacin entre recursividade iteracin 18.7 Lastorres de Hanoi 18.8 Fractales 18.9 Vueltaatrs recursiva (backtracking) 18.10 Conclusin 19 Bsqueda, ordenamiento y Big O 19.1 Introduccin 19.2 Algoritmos de bsqueda 19.2.1 Bsqueda lineal 19.2.2 Bsqueda binaria 19.3 Algoritmos de ordenamiento 19.3.1 Ordenamiento por seleccin 19.3.2 Ordenamiento por insercin 19.3.3 Ordenamiento por combinacin 19.4 Conclusin Los captulos 20 a 3 1se encuentran en ingls en el sitio Web del libro 20 Generic Collections 20.1 Introduction 20.2 Collections Overview 20.3 Type-Wrapper Classesfor PrimitiveTypes 20.4 Autoboxing and Auto-Unboxing 20.5 Interface Col 1ect i on and Class C o ll e ctio n s 20.6 Lists 20.6.1 A r ra y L is t and Ite r a to r 20.6.2 L in k e d L is t 20.7 Collections Methods 20.7.1 Method s o rt 20.7.2 Method s h u ffie 20.7.3 Methods re ve rse , f i 11, copy, max and mi n 20.7.4 Method binarySearch 20.7.5 MethodsaddAll, frequency and d is jo in t 20.8 Stack Class ofPackage java, til 20.9 Class PriorityQueueand Interface Queue 20.10 Sets 20.11 Maps 754 757 765 766 767 768 771 774 776 777 779 790 790 798 799 800 800 804 809 810 814 817 824 829 830 830 831 832 832 833 834 836 841 842 845 847 849 851 853 855 856 859 www.FreeLibros.me 18. xv Contenido 20.12 Properties Class 20.13 Synchronized Collections 20.14 Unmodifiable Collections 20.15 Abstract Implementations 20.16 Wrap-Up 2 1 GenericClasses andMethods 21.1 Introduction 21.2 Motivation for Generic Methods 21.3 Generic Methods: Implementation and Compile-TimeTranslation 21.4 Additional Compile-TimeTranslation Issues: MethodsThat Use a Type Parameter asthe Return Type 21.5 Overloading Generic Methods 21.6 Generic Classes 21.7 RawTypes 21.8 Wildcards in MethodsThat AcceptType Parameters 21.9 Generics and Inheritance: Notes 21.10 Wrap-Up 22 CustomGeneric DataStructures 22.1 Introduction 22.2 Self-Referential Classes 22.3 Dynamic Memory Allocation 22.4 Linked Lists 22.5 Stacks 22.6 Queues 22.7 Trees 22.8 Wrap-Up 23 Applets andJavaWebStart 23-1 Introduction 23.2 SampleApplets Provided with theJDK 23-3 SimpleJavaApplet: Drawing a String 23-3.1 Executing WelcomeAppl et in the appletviewer 23-3.2 Executing an Applet in aWeb Browser 23.4 Applet Life-Cycle Methods 23-5 Initialization with Method i nit 23.6 Sandbox Security Model 23.7 JavaWeb Start and theJava Network Launch Protocol (JNLP) 23.7.1 Packaging the DrawTest Appletfor Usewith JavaWeb Start 23.7.2 JNLP Document for the DrawTest Applet 23.8 Wrap-Up 24 Multimedia: Applets andApplications 24.1 Introduction 24.2 Loading, Displaying and Scaling Images 24.3 Animaring a Series ofImages 24.4 Image Maps 863 866 866 867 867 873 874 874 877 880 883 883 891 895 899 900 904 905 905 906 907 917 921 924 930 941 942 943 947 949 951 951 952 954 956 956 957 961 967 968 969 975 982 www.FreeLibros.me 19. Contenido x v ii 24.5 Loading and PlayingAudio Clips 24.6 PlayingVideo and Other Media withJava Media Framework 24.7 Wrap-Up 24.8 Web Resources 2 5 GUI Components: Part 2 25-1 Introduction 25.2 JS Iid e r 25-3 Windows: Additional Notes 25.4 Using Menus with Frames 25-5 JPopupMenu 25.6 Pluggable Look-and-Feel 25.7 JDesktopPane and JlnternalFrame 25.8 JTabbedPane 25.9 Layout Managers: BoxLayout and GridBagLayout 25.10 Wrap-Up 2 6 Multithreading 26.1 Introduction 26.2 Thread States: Life Cycle ofaThread 26.3 Creating and ExecutingThreads with Executor Framework 26.4 Thread Synchronization 26.4.1 Unsynchronized Data Sharing 26.4.2 Synchronized Data SharingMaking Operations Atomic 26.5 Producer/Consumer Relationship without Synchronization 26.6 Producer/Consumer Relationship: ArrayBlocki ngQueue 26.7 Producer/Consumer Relationship with Synchronization 26.8 Producer/Consumer Relationship: Bounded Buffers 26.9 Producer/Consumer Relationship: The Lock and Condi t i on Interfaces 26.10 Concurrent Collections Overview 26.11 Multithreadingwith GUI 26.11.1 Performing Computations in aWorkerThread 26.11.2 Processing Intermedate Results with Swi ngWorker 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 Introduction 27.2 Manipulating URLs 27.3 Reading a Fileon aWeb Server 27.4 Establishing a SimpleServer Using Stream Sockets 27.5 Establishing a Simple Client Using Stream Sockets 27.6 Client/Server Interaction with Stream Socket Connections 27.7 Datagrams: Connectionless Client/ServerInteraction 27.8 Client/ServerTic-Tac-Toe Usinga Multithreaded Server 27.9 [Web Bonus] Case Study: DeitelMessenger 27.10 Wrap-Up 985 988 992 992 1000 1001 1001 1005 1006 1014 1017 1022 1026 1028 1040 1045 1046 1048 1051 1054 1055 1059 1062 1070 1073 1079 1086 1093 1095 1096 1102 1109 1109 1110 I 118 1119 1120 1125 1128 1130 1130 1142 1150 1165 1165 www.FreeLibros.me 20. x v Contenido 28 Accessing Databases with JDBC 28.1 Introduction 28.2 Relational Databases 28.3 Relational Database Overview: The books Database 28.4 SQL 28.4.1 Basic SELECT Query 28.4.2 WHERE Clause 28.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.7 DELETE Statement 28.5 Instructions for Installing MySQL and MySQL Connector/J 28.6 Instructions forSetring Up a MySQL UserAccount 28.7 Creating Database books in MySQL 28.8 Manipularing Databaseswith JDBC 28.8.1 Connecring to and Querying a Database 28.8.2 Querying the books Database 28.9 RowSet Interface 28.10 Java DB/Apache Derby 28.11 P repa redStatem ents 28.12 Stored Procedures 28.13 Transaction Processing 28.14 Wrap-Up 28.15 Web Resources 29 JavaServer Faces Web Apps: Part I 29.1 Introduction 29.2 HyperTextTransfer Protocol (HTTP) Transacrions 29.3 MultirierApplication Architecture 29.4 YourFirstJSF Web App 29.4.1 The Default i ndex .xhtml Document: Introducing Facelets 29.4.2 Examining the WebTimeBean Class 29.4.3 Building theWebTi meJSF Web App in NetBeans 29.5 Model-View-ControllerArchitecture ofJSF Apps 29.6 CommonJSF Components 29.7 ValidationUsing JSF StandardValidators 29.8 SessionTracking 29.8.1 Cookies 29.8.2 SessionTracking with @Sessi onScoped Beans 29.9 Wrap-Up 30 JavaServer Faces Web Apps: Part 2 30.1 Introduction 30.2 Accessing Databases in Web Apps 30.2.1 Setring Up the Database 30.2.2 @ManagedBean ClassAddressBean 30.2.3 i ndex.xhtml Facelets Page 30.2.4 addent r y . xhtml Facelets Page 1172 1173 1174 1177 1178 1179 1181 1182 1184 1185 1186 1186 1187 1188 1189 1189 1194 1207 1209 1211 1226 1227 1227 1228 1235 1236 1237 1240 1241 1242 1244 1246 1250 1250 1254 1261 1262 1263 1269 1276 1277 1277 1279 1282 1286 1288 I 171 www.FreeLibros.me 21. Contenido x x 30.3 Ajax 30.4 AddingAjax Functionality to theValidation App 30.5 Wrap-Up 3 1 Web Services 31.1 Introduction 31.2 Web Service Basics 31.3 Simple ObjectAccess Protocol (SOAP) 31.4 Representational StateTransfer (REST) 31.5 JavaScript Object Notation (JSON) 31.6 Publishing and Consuming SOAP-BasedWeb Services 31.6.1 Creating aWeb Application Project and Adding aWeb Service Class in NetBeans 31.6.2 Defining the Wel comeSOAP Web Service in NetBeans 31.6.3 Publishing the Wel comeSOAPWeb Service from NetBeans 31.6.4 Testing the Wel comeSOAPWeb Service with GlassFish Application ServersTesterWeb Page 1308 31.6.5 Describing aWeb Service with theWeb ServiceDescription Language (WSDL) 31.6.6 Creating a Clientto Consume the Wel comeSOAPWeb Service 31.6.7 Consuming the Wel comeSOAPWeb Service 31.7 Publishing and Consuming REST-BasedXML Web Services 31.7.1 Creating a REST-Based XMLWeb Service 31.7.2 Consuming a REST-BasedXMLWeb Service 31.8 Publishing and Consuming REST-BasedJSON Web Services 31.8.1 Creating a REST-BasedJSON Web Service 31.8.2 Consuming a REST-BasedJSON Web Service 31.9 SessionTrackingin a SOAPWeb Service 31.9.1 Creating a B lackjack Web Service 31.9.2 Consuming the BI ackj ackWeb Service 31.10 Consuming a Database-Driven SOAP Web Service 31.10.1 Creating the Reservati onDatabase 31.10.2 Creating aWeb Application to Interactwith the Reservation Service 1343 31.11 Equation Generator: Returning User-Defmed Types 31.11.1 Creating the EquationGeneratorXML Web Service 31.11.2 Consuming the EquationGeneratorXM L Web Service 31.11.3 Creating the EquationGeneratorJSONWeb Service 31.11.4 Consuming the EquationGeneratorJSONWeb Service 31.12 Wrap-Up 1290 1292 1295 1299 1300 1302 1302 1302 1303 1303 1303 1304 1307 1309 1310 1312 1315 1315 1318 1320 1320 1322 1324 1325 1328 1339 1340 1346 1349 1350 1354 1354 1357 www.FreeLibros.me 22. X X Contenido Los apndices M a Q se encuentran en ingls en el sitio Web del libro M Creating Documentation with javadoc M. 1 Introduction M.2 Documentation Comments M.3 DocumentingJava Source Code M .4 javadoc M.5 Files Produced by javadoc N Bit Manipulation N.l Introduction N.2 Bit Manipulation and the Bitwise Operators N.3 B itS et Class O Labeled break and conti nue Statements 0.1 Introduction 0.2 Labeled break Statement 0.3 Labeled continue Statement P UML 2: Additional Diagram Types P.1 Introduction P.2 Additional Diagram Types Q Design Patterns Q.l Introduction Q.2 Creational, Structural and Behavioral Design Patterns Q.2.1 Creational Design Patterns Q.2.2 Structural Design Patterns Q.2.3 Behavioral Design Patterns Q.2.4 Conclusin Q.3 Design Patterns in Packages java.awt and javax.swing Q.3.1 Creational Design Patterns Q.3.2 Structural Design Patterns Q.3.3 Behavioral Design Patterns Q.3.4 Conclusin Q.4 Concurrency Design Patterns Q.5 Design Patterns Used in Packages java, io and java, net Q.5.1 Creational Design Patterns Q.5.2 Structural Design Patterns Q.5.3 ArchitecturaJ Patterns Q.5.4 Conclusin Q.6 Design Patterns Used in Package java.uti 1 Q.6.1 Creational Design Patterns Q.6.2 Behavioral Design Patterns Q.7 Wrap-Up M-i M-l M-l M-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-i Q -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-15 Q-16 Q-19 Q-19 Q-19 Q-19 Q-20 www.FreeLibros.me 23. Prefacio Novivas msenfragmentos, conctate. EdgarMorgan Foster Bienvenido a CmoprogramarenJava,novenaedicin. Este libro presentalas tecnologas de vanguardia paraestudiantes, profesoresy desarroliadores desoftware. El nuevo captulo 1 atrae la atencin de los estudiantes con hechos y cifras fascinantes, para que encuentren ms emocionante el hecho de estudiar sobre las computadoras y la programacin. Ofrece los siguiente: una tabla sobre algunos proyectos de investigacin que se hacen posibles gracias a las computadoras; un anlisis sobre el hardware y las tendencias tecnolgicas actuales; jerarqua de datos; unatabladeplataformasdeaplicacionesmvilesyde Internet; unanuevaseccinsobreredessociales; una introduccin aAndrid; una tabla de los servicios Web ms populares; una tabla de las publicaciones tecnolgicasy de negocios, adems de lossiriosWeb que le ayudarnaestar aldacon las noticias y ten dencias ms recientes sobre tecnologa;y ejercicios actualizados. El libro es apropiado para secuencias de cursos introductorios apoyados en las recomendaciones curriculares de ACM/IEEE y sirve como preparacin para el examen de Colocacin avanzada (AP) de cienciascomputacinales. Nosenfocamosenlasmejoresprcticasde ingenieradesoftware. Labasedellibroesnuestroreconocido mtodo de cdigo activo:los conceptosse presentanen el contextode programas funcionales completos, en lugar de hacerlo a travsde fragmentos separados de cdigo. Cada ejemplo de cdigo completo viene acompaadodeejemplosdeejecucionesactuales.Todoelcdigofuenteestdisponibleenwww.deite l.com/ books/jhtp9/ (eningls)yen elsirioWebdeestelibrowww.pearsonenespaol.com/deitel (enespaol). Sisurgealgunadudaopreguntamientrasleeestelibro,enveuncorreoelectrnicoadeitel@deite l.com; leresponderemosalabrevedad. Paraobteneractualizacionessobreeste libro,visitevavw.deite l.com/books/ jhtp9/, sganosenFacebook (vmm deite l.com/deitel fan)yTwitter(@deitel). Tambinpuedesuscribirse alboletndecorreoelectrnico DeitePBuzzOnline(vom.deite l.com/newsletter/subscri be.html). Caractersticas nuevas y mejoradas He aqu las actualizaciones que realizamosala9aedicin: Java StandardEdition (SE) 7 Fcil de usar como libro para Java SE 6 y Java SE 7. Hay unas cuantas caractersticas de Java StandardEdition (SE) 7que afectan aloscursosde cienciascomputacionales CS 1yCS 2. Cubrimos esas caractersticas en secciones modulares opcionales que se pueden incluir u omitir con facilidad. He aqu una parte de la nueva funcionalidad: objetos Stri ng en instrucciones switch, la instruc cin try con recursos (try-with-resources) paraadministrarobjetosAutoClosabl e,multi-catch para definir un solo manejador de excepciones en sustitucin de varios que realizan la misma tarea, las API del sistema de archivos NIO y la inferencia de tipos de objetos genricos a partir de lavariable alaque estn asignados, mediante el uso de lanotacin o . Tambin veremos las generalidades sobre las nuevas caractersticas de laAPI concurrente. www.FreeLibros.me 24. x x 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 a implementar con las nuevasAPI del sistemade archivosdeJava SE 7. VersionesAutoClosable de Connection, Statem enty ResultSetdeJava SE 7. Con elcdigo fuen te para el captulo 28 (en ingls), proporcionamos unaversin del primer ejemplo del captulo que se implement mediante el uso de lasversiones AutoClosable de Connection, Statementy ResultSet. Los objetos AutoClosable reducen la probabilidad de fugas de recursos cuando se utilizan con la instruccin try con recursos (try-with-resources) de Java SE 7, la cual cierra de manera automtica los objetos AutoClosabl e que se asignan en los parntesis despus de la palabra clave try. Caractersticaspedaggicas Mejoramoselconjunto deejerciciosMarcarla diferencia* Lealentamosautilizarlascomputadoras e Internet para investigar y resolver problemas sociales relevantes. Estos ejercicios estn diseados para aumentar la conciencia y el anlisis en torno a los problemas importantes a los que se enfrenta el mundo. Esperamos que usted los aborde con sus propios valores, polticas y creencias. D un vis tazo a nuestro nuevo Centro de recursos para marcar una diferencia (en ingls) en www.dei te l.com/ MakingADif ference, en dondeobtendr ideas adicionales que tal vezdesee investigar ms a fondo. Nmerosdepginapara lostrminos claveen losresmenesde cada capitulo. En lalistade trmi nos claveque aparece en el resumen de cada captulo incluimos el nmero de pginadonde se define el trmino. Comentarios en video. En el sitio Webde este libro encontrar comentarios en video (VideoNotes), en ingls, en las que el coautor Paul Deitel explica con detalle la mayora de los programas de los captulos bsicos. Los profesores nos han dicho que estos comentariosconstituyen un recurso valioso parasus estudiantes. Tecnologa de objetos Programacin y diseo orientados a objetos. En el captulo 1 presentamos la terminologa y los conceptos bsicos de latecnologadeobjetos. En el captulo 3 losestudiantes desarrollansusprimeras clases y objetos personalizados. Al presentar los objetos y las clases en los primeros captulos hace mos que los estudiantes de inmediato piensen en objetosy dominen estos conceptos [en los cursos que requieren una metodologa en la que se presenten los objetos en captulos posteriores, le reco mendamos el libro Java How to Program, Late Objects Versin, 8aedition (en ingls), el cual presenta en los primeros seis captulos los fundamentos de la programacin (incluyendo dos sobre instruc ciones de control) y contina con varios captulos que introducen los conceptos de programacin orientada aobjetos en forma gradual]. Manejo de excepciones. Integramos el manejo bsico de excepciones en los primeros captulos del libro; adems los profesores pueden extraer con facilidad ms material del captulo 11, Manejo de excepciones: un anlisis ms detallado, para mostrarlo con anticipacin. Las clases Arraysy ArrayList. El captulo 7 cubre la clase Arrays que contiene mtodos para realizar manipulaciones comunes de arreglos y la clase ArrayList que implementa una estruc tura de datos tipo arreglo, cuyo tamao se puede ajustar en forma dinmica. Esto va de acuerdo con nuestra filosofa de obtener mucha prctica al utilizar las clases existentes, al tiempo que el estudiante aprendea definirsuspropias clases. Casos de estudio orientados a objetos (OO). La presentacin de las clases y los objetos en los pri meros captulos del libro aportan casos de estudio de Tiempo, Empleado y LibroCali ficaciones, que se entretejen a travs varias secciones y captulos, e introducen conceptos de OO cada vez ms profundos. www.FreeLibros.me 25. Prefacio x x i Ejemploprctico opcional: uso de UMLpara desarrollar un diseo orientado a objetosy una implementacin en Java de un cajero automtico (ATM). El UML (Lenguaje Unificado de Modelado) es el lenguaje grfico estndar en la industria para modelar sistemas orientados a ob jetos. Los captulos 12 y 13 (en el sitio Web) contienen un Ejemplo prctico opcionalsobre 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 cual espe cificaelsistemaquesevaaconstruir.Determinamos lasclasesnecesarias paraimplementresesistema, los atributos que deben tener esas clases, los comportamientos que necesitan exhibir, y especificamos cmo deben interactuar las clases entre s para cumplir con los requerimientos del sistema. A partir del diseo creamos una implementacin completa en Java. A menudo los estudiantes informan que pasan por un momento de revelacin:el Ejemplo prctico les ayuda a atar cabos y comprender enverdad laorientacin a objetos. Se reorden lapresentacin de estructuras de datos. Empezamos con la clase genrica ArrayList en el captulo 7. Como los estudiantes comprendern los conceptos bsicos sobre losgenricos en lospri meros captulos del libro,nuestros anlisis posteriores sobre lasestructuras de datos ofrecen un trata miento ms detallado de las colecciones de genricos, puesto que ensean a utilizar las colecciones integradas de laAPI deJava. Luego mostramoscmo implementar losmtodos y las clases genricas. Por ltimo, mostraremos cmo crearestructuras de datos genricas personalizadas. Desarrollo Weby de basesde datos (materialen inglsen elsitio Web dellibro) JDBC 4. Elcaptulo 28, trata sobre JDBC 4; aquse utilizan lossistemas de administracin de bases de datos Java DB/Apache Derby y MySQL. El captulo contiene un Ejemplo prctico de OO sobre cmo desarrollar una libreta de direcciones controlada por una base de datos; en este ejemplo se de muestran lasinstrucciones preparadasy el descubrimiento automtico de controladores de JDBC 4. Java Server Faces (JSF) 2.0. Los captulos 29 y 30 se actualizaron para introducir la tecnologa JavaServer Faces (JSF) 2.0, que simplifica en gran medida la creacin de aplicaciones Web con JSF. El captulo 29 presenta ejemplos sobre la creacin de interfaces GUI de aplicaciones Web, la vali dacin de formularios y el rastreo de sesiones. El captulo 30 habla sobre las aplicaciones JSF con troladas por datos y habilitadas para Ajax. Este captulo cuenta con una libreta de direcciones Web muldnivel controlada por una base de datos, la cual permite a los usuarios agregar contactos y bus carlos. Esta aplicacin habilitada para Ajax proporciona al lector una sensacin real del desarrollo desoftwareWeb 2.0. Servicios Web. Elcaptulo 31, Web Services, demuestra cmo crear y consumir servicios Web basa dosen SOAP^REST. Los Ejemplos prcticos presentan eldesarrollo de losserviciosWebdeljuego de blackjacky un sistemade reservaciones de una aerolnea. Java WebStarty elProtocolo delanzamiento de reddeJava (JNLP). PresentamosJavaWeb Start y JNLP, que permiten lanzar applets aplicaciones a travs de un navegador Web. Los usuarios pueden instalar estos applets y aplicaciones en forma local para ejecutarlos despus. Los progra mas tambin pueden solicitar permiso al usuario para acceder a los recursos locales del sistema y a los archivos: con lo cual usted podr desarrollar applets y aplicaciones ms robustas que se ejecuten en forma segura mediante el modelo de seguridad de caja de arena (sandbox) de Java, el cual se aplica al cdigo descargado. Multihilos (en inglsen elsitio Web) Multihilos. Rediseamos por completo el captulo 26, Multithreading [con agradecimiento especial a laorientacinde Brian GoetzyJoseph Bowbeer,dos de loscoautores deJava Concurrencyin Practi- ce,Addison-Wesley, 2006]. La clase SwingWorker. Utilizamos laclase SwingWorker para crearinterfacesde usuario multihilos. www.FreeLibros.me 26. x x iv Prefacio GUIy grficos Presentacin escalable de GUIy grficos. Los profesores que impartan cursos introductorios tie nen una amplia gama de dnde elegir en cuanto a la cantidad de GUI y grficos por cubrir: desde cero hasta una secuencia introductoria de 10 secciones breves, las cuales se entrelazan con los pri meros captulos hasta llegar a un anlisis detallado en los captulos 14, 15 y 25 y en el apndice I (este ltimo y el apndice, en ingls en el sitio Web). Administrador de esquemas GroupLayout. Analizamos el administrador de esquemas GroupLayout dentro del contexto de la herramienta de diseo de GUI en elentorno de desarrollo integrado (IDE) NetBeans. Herramientas de ordenamientoy filtrado de JTable. Elcaptulo 28 (en ingls en elsitio Web) uti liza estas herramientas para reordenar los datos en un objeto JTable y filtrarlos mediante expresio nes regulares. Otrascaractersticas Android Debido alenorme intersen los telfonos inteligentesy tabletas basadasen Android, hemos integrado unaintroduccinde trescaptulos paraeldesarrollo de aplicaciones deAndroid (losencon trar en ingls en elsitio Web del libro). Estos captulos son de nuestro nuevo libro Androidfor Pro- grammers:AnApp-DrivenApproach delaserieDeitelDeveloper. Una vez que aprendaJava, descubrir que es bastante simple desarrollary ejecutar aplicaciones Android en elemulador gratuito que puede descargar de developer.android.com. Conceptos comunes de ingeniera de software. Analizamos el desarrollo gil de software, la refac- torizacin, los patrones de diseo, LAMP, SaaS (Software as a Service), PaaS (Platform as a Service), lacomputacin en la nube, elsoftware de cdigo abierto y muchos conceptos ms. Grfico de dependencias El grfico de la siguiente pgina muestra las dependencias entre los captulos para ayudar a los profe sores a planear su programa de estudios. Cmoprogramar enJava 9aedicin es un libro extenso, apro piado para una gran variedad de cursos de programacin en distintos niveles, en especial CS 1 y CS 2, adems de las secuencias de cursos de introduccin en disciplinas relacionadas. El libro tiene una organizacin modular, claramente delineada. Los captulos 1 a 11 y 14 a 17 forman una secuencia de programacin elemental accesible, con una slida introduccin a la programacin orientada a objetos. Los captulos opcionales 12 y 13 constituyen una introduccin accesible al diseo orientado a obje tos con UML. Tanto la trayectoria de GUI y grficos como los captulos 14, 15, 23, 24 y 25 forman una secuencia sustancial de GUI, grficos y multimedia. Los captulos 18 a 22 forman una excelente cadena de estructuras de datos. Los captulos 26 y 27 constituyen una slida introduccin a los con ceptosde multihilos yel trabajo en red atravs de Internet. Loscaptulos 28 a31 forman una secuencia enriquecida de desarrollo Web con uso intensivo de bases de datos. Mtodos de enseanza CmoprogramarenJava 9a edicinoontiene cientos de ejemplos funcionales completos. Hacemos hin capi en la claridad de los programasy nos concentramos encrear software bien diseado. www.FreeLibros.me 27. Prefacio x x v Grfico de dependencias de captulos y mdulos [Nota: las flechas que apuntan hada un captulo indican las dependencias de ste. Algunos captulos tienen varias dependencias]. Programacin orientada a objetos 8 Clases y objetos:-* iri anlisis ms detallado 9 Programadn orientada a objetos: herencia I 10 Programadn orientada aobjetos: polimorfismo II 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 datos 18 Recursividad1 19 Bsqueda, ordenamiento y Big O 20 Generic Collections 21 Generic Classes and Methods 22Custom Generic Data Structures I . El captulo 18 depende de los captulos 14 y 15 para la GUI y los grficos que se utilizan en un ejemplo. Introduccin I Introduccin a las computadoras ya Java Introduccinalaprogramacin, lasclasesylosobjetos 2 Introduccin a lasapfcacionesenJava- 3 Introduccin a lascbses. objetos, mtodosycadenas Instruccionesdecontrol, mtodosy arreglos 4 Instrucciones de control: Parte I 5 Instrucciones de control: Parte 2 I 6 Mtodos: un anlisis ms detallado . 7 Arreglos y objetos A rra y L i s t V Cadenas y archivos 16Cadenas, caracteres y expresiones regulares - 17Archivos, flujos y serializadn de objetos Multihilos y redes 26 Multithreading2 27 Networking3 Diseo de aplicaciones de escritorio y Web controladas por bases de datos 28 JDBC4 ------------- 29JSF Web Apps: Part I30 JSF Web Apps: Part 2 31 Web Services (Opcional) Trayectoria de GUI y grficos 3.8 Uso de cuadros de dilogo4.14 Creacin de dibujos simples5.10 Dibujo de rectngulos yvalos I 6.13 Cobres y figuras rellenas7.15 Dibujo de arcos8.16Uso de objetos con grficos9.8 Mostrartexto e imgnes usando etiquetas i10.8 Realizar dibujos usando polimorfismo GUI, grficos, applets y multimedia 14Componentes de GUI: Parte I15 Grficos y Java2D - * 23 Applets and Java Web Start5 I 24 Multimedia: Applets and Applications I25GUIComponents: Rart 2 2. El captulo 26depende del captulo 14 para la GUI que se utiliza en un ejemplo yde los captulos 20-21para otro ejemplo. 3. El captulo 27depende del captulo 23 para un ejemplo que utiliza un applet. El Ejemplo prctico extenso (en Web) depende del captulo 25 para la GUI y del captulo 26 para los multihilos. 4. El captulo 28dependedel captulo 14 para la GUI que se utiliza en un ejemplo. 5. En los captulos 24y27se cubren ms applets. www.FreeLibros.me 28. x x v i Prefacio Resaltado de cdigo. Colocamos rectngulos de color gris alrededor de los segmentos de cdigo clave en cada programa. Uso defuentespara dar nfasis. Resaltamos en negritas, dentro del texto, y en el ndice, los trmi nos claveen los lugaresdonde se define. 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. Todo elcdigo fuenteutilizado eneste 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 aperturavan seguidas 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 a enfocarse en los aspectos im portantes del desarrollo de programas. Estos tips y prcticas representan lo mejor que hemos podido recabar a lo largo de siete dcadas combinadas de experienciaen la programacin y laenseanza. Buenas prcticas de programacin LasBuenas prcticas de programacin sontcnicasque leayudarn aproducirprogra masmsclaros,comprensiblesyfcilesdemantener. Errores comunes de programacin AlponeratencinenestosErrores comunes de programacin sereducelaprobabilidad dequeustedpuedacaerenellos. Tips para prevenir errores Estostips contienen sugerenciasparaexponer loserrores ogusanosinformticosy elimi narlosde susprogramas; muchosde ellosdescriben aspectosdejava que evitan que en trensiquieraasusprogramas. Tips de rendimiento Estosrecuadrosresaltan lasoportunidadespara hacerque susprogramasseejecuten ms rpidooparaminimizar lacantidaddememoriaqueocupan. Tips de portabilidad Los Tips de portabilidad le ayudan a escribir cdigo que pueda ejecutarse en varias plataformas. Observaciones de ingeniera de software LasObservaciones de ingeniera de softwareresaltantemasdearquitecturay diseo, lo cualafectalaconstruccindelossistemasdesofiware,especialmentelosdegranescala. * n i Observaciones de apariencia visual B5B Las Observaciones de apariencia visual resaltan lasconvencionesde la interfazgrfica tleusuario.Adems,leayudanadisearinterfacesgrficasdeusuarioatractivasy amiga blesenconformidadconlasnormasdelaindustria. www.FreeLibros.me 29. Prefacio x x v ii Vietas de resumen. Presentamos un resumen detallado del captulo, estilo lista con vietas, seccin por seccin. Para facilitar la referencia, incluimos dentro del texto el nmero de pgina donde aparecen bs trminos clave. Ejercicios de autoevaluacin y respuestas. Se proveen diversos ejercicios de autoevaluacin con sus respuestas para que los estudiantes practiquen por su cuenta. Todos losejercicios en el Ejemplo prctico opcional sobre elATM estn resueltosen su totalidad. Ejercicios. Los ejerciciosde los captulos abarcan: Recordatorio simple de laterminologay los conceptos importantes. Cul esel error eneste cdigo? Qu haceeste cdigo? Escriturade instrucciones individuales y pequeas porciones de mtodos y clases. Escriturade mtodos, clases y programas completos. Proyectos importantes. En muchos captulos, ejerciciosdel tipo Hacer ladiferencia. ndice. Incluimos un ndice extenso. Donde se definen los trminos clave se resaltan con un nmero de pgina en negritas. Software utilizado en Cmo programarenJava 9aedicin Podr descargar todo elsoftware necesario paraeste libro sincosto a travs deWeb. En laseccin Antes deempezar,despus deeste Prefacio, encontrar vnculos paracada descarga. Para escribir la mayora de los ejemplos de este libro utilizamos el kit de desarrollo gratuito Java Standard Edition Development Kit (JDK) 6. Para los mdulos opcionales de Java SE 7 utilizamos la ersin JDK 7 de acceso anticipado de OpenJDK. En los captulos 29 a 31 tambin utilizamos el IDE Netbeans; en el captulo 28 usamos MySQL y MySQL Connector/J. Encontrar recursos y descargas desoftware adicionales en nuestros Centros de recursos deJava, ubicados en: www.deitel.com/ResoureeCenters.html Suplementos para el profesor (en ingls) Lossiguientessuplementos estndisponiblessloparaprofesoresatravs del Centro de recursos parael pro fesorde Pearson (www.pearsonenespaol.com/deitel): Diapositivas de PowerPoint!oon todo elcdigo y las figuras del texto, 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 losejercicios definal de captulo. El accesoa estos recursosest limitado estrictamente aprofesores universitarios que impartan cla ses con base en el libro. Slo ellospueden obtener acceso atravsde losrepresentantesde Pearson. No se proveen soluciones para los ejercicios de proyectos. Revise nuestro Centro de recursos de proyectos de programacin (www.deitel .com/Programmi ngProjects/), en donde encontrar muchos ejerciciosadicionalesy proyectos nuevos. Si no es un miembro docente registrado, pngase encontacto con su representante de Pearson. www.FreeLibros.me 30. x x v iii Prefacio Reconocimientos Queremos agradeceraAbbeyDeitely BarbaraDeitelpor lasextensas horasque dedicaron aesteproyecto. Somos afortunados al haber trabajado en este proyecto con el dedicado equipo de editores profesionales de Pearson. Apreciamos laorientacin, inteligenciay energade Michael Hirsch, editor en jefe de Cien ciascomputacionales. CaroleSnyderreclut alosrevisores dellibro ysehizo cargo delproceso de revisin. Bob Engelhardtsehizo cargo delaproduccin dellibro. Revisores Queremos agradecer los esfuerzos de los revisores de laoctava y novenaediciones, quienes revisaron ex haustivamente el texto y los programas, y proporcionaron innumerables sugerencias para mejorar la presentacin: LanceAndersen (Oracle),Soundararajan Angusamy (SunMicrosystems),Joseph Bowbeer (Consultor),WilliamE. Duncan (LouisianaState University),Diana Franklin (UniversityofCalifornia, Santa Barbara), Edward E Gehringer (North Carolina State University), Huiwei Guan (Northshore Community College), Ric Heishman (George Masn University), Dr. Heinz Kabutz (JavaSpecialists. eu), Patty Kraft (SanDiego StateUniversity), Lawrence Premkumar (SunMicrosystems),Tim Margush (University ofAkron), Sue McFarland Metzger (Villanova University), Shyamal Mitra (The University ofTexas 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 (Duke University), Amr Sabry (Indiana University), Jos Antonio Gonzlez Seco (Parlamento de Andaluca), Sang Shin (Sun Microsystems), S. Sivakumar (Astra Infotech Prvate Limited), Raghavan Rags Srinivas (Inmit), Monica Sweat (Georgia Tech), Vinod Varma (Astra Infotech Prvate Limited) yAlexander Zuev (Sun Microsystems). Bueno,ahlo tiene!A medida que leaellibro,apreciaremosconsinceridadsuscomentarios,crticas, correccionesy sugerencias para mejorarlo. Dirija todasu correspondencia a: d e ite l@ d e ite l. com Leresponderemos oportunamente. 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., es egresado del Sloan School of Management del MIT, en donde estudi Tecnologa de la Informacin. A travs de Deitel & Asso ciates, Inc., haimpartido cursos deJava, C, C++, C#,Visual Basicy programacin en Internet aclientes de la industria, como: Cisco, IBM, Siemens, Sun Microsystems, Dell, Lucent Technologies, Fidelity, NASA en el Centro Espacial Kennedy, el National Severe Storm Laboratory, White Sands Missile Range, Rogue Wave Software, Boeing, SunGard Higher Education, Stratus, Cambridge Technology Partners, OneWave,Hyperion Software, AdraSystems, Entergy, CableData Systems, NortelNetworks, Puma, iRobot, Invensys y muchos ms. l y su coautor, el Dr. Harvey M. Deitel, son autores de los li bros 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. El Dr. Deitel obtuvo una licenciatura y una maes tra por el MIT y un doctorado de la Universidad de Boston. Tiene muchos aos de experienciacomo profesor universitario, la cual incluye un puesto vitalicio y el haber sido presidente del Departamento de Ciencias de laComputacin en Boston College antes de fundar, con su hijo PaulJ. Deitel, Deitel & Associates, Inc. l y Paul son coautores de varias docenas de libros y paquetes multimedia LiveLessons, ypiensanescribir muchos ms. Lostextosde losDeitelse han ganado elreconocimiento internacionaly han sido traducidos al japons, alemn, ruso, chino, espaol, coreano, francs, polaco, italiano, portu gus, griego, urdti y turco. El Dr. Deitel ha impartido cientos de seminarios profesionales para grandes empresas, instituciones acadmicas, organizaciones gubernamentalesy diversos sectores del ejrcito. www.FreeLibros.me 31. Prefacio x x ix Capacitacin 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 las instalaciones de sus clientes en todo el mundo, sobre la mayora de los lenguajes y plataformas de programacin, como Java, C++, Visual C++, C, Visual C#, Visual Basic,XML, Python, tec nologa de objetos, programacin en Internet y World Wide Web, desarrollo de aplicaciones para Android e Phone, y una lista cada vez mayor de cursos adicionales de programacin y desarrollo desoftware. Los fundadores de Deitel & Associates, Inc. son Paul J. Deitel y el Dr. Harvey M. Deitel. Entre sus clientes estn muchas de las empresas ms grandes del mundo, agencias gubernamentales, sectores del ejrcito e instituciones acadmicas. A lo largo de su sociedad editorial de 35 aos con Hentice Hall/Pearson, Deitel & Associates, Inc. ha publicado libros de texto de vanguardia sobre programacin, libros profesionales, y cursos de video UveLessons con base en DVD y Web. Puede contactarse con Deitel & Associates, Inc. y con los autores por medio de correo electrnico: d e ite l d e ite l. com Para conocer ms acerca de Deitel & Associates, Inc., sus publicaciones y su currculum mundial de laSerie de Capacitacin CorporativaDive Int

cd C:exam plesch01ATM ------------------------------------------ C: exam plesch01ATM> = i Fig. l.l I | Abrir una ventana Smbolo del sistema en Windows XP y cambiar de directorio. Ejecute la aplicacin delATM. Escriba el comando ja v a Ejem ploPracticoATM y oprima Intro (figura 1.12). Recuerde que elcomando j ava, seguido del nombre del archivo .el ass de la aplicacin (en este caso, Ejem ploPracticoATM ), ejecuta la aplicacin. Si especificamos la extensin .el ass al usarelcomando ja v a se produce un error [Nota: loscomandos enJavason sensibles a maysculas/minsculas. Es importante escribir el nombre de esta aplicacin con las letras A,T y M maysculas en ATM,una letra E maysculaen Ejemplo y una letra P ma ysculaenPractico.De locontrario,laaplicacinno seejecutar.] Sirecibeelmensajedeerror Exceptio n in thread main java.lan g .N o C lassD e fFo u n d Erro r: Ejem ploPracticoATM , entonces su sistema tiene un problema con CLASSPATH. Consulte laseccin Antes de empezar este libro paraobtener instrucciones acercadecmo corregireste problema. IAdministrator Command Prompt J n J x J C :>cd C:examplesch01ATM C : exampl esch01ATM>java ATT^CaseStudy Fig. 1.12 | Uso del comando java para ejecutar la aplicacin del ATM. 4 . Escriba un nmero de cuenta. Cuando la aplicacin se ejecuta por primera vez, muestra el mensaje jB ie n ve n id o !" y le pide un nmero de cuenta. Escriba 12345 en el indicador E s c rib a su numero de cu e n ta : (figura 1.13) y oprima Intro. www.FreeLibros.me 60. 24 Captulo I Introduccin a las computadoras y a Java Mensaje de bienvenida del ATM Indicador para introducir el nmero de cuenta Ga Adminstrate Command Prompt-java ATMCaseStudy -sJO J-Xf C:exam ples Welcome!---- P le ase enter ch01ATM>java ATMCaseStudy your account number: 12345 --------- d _________________________________________________ d F ig . 1.13 | La aplicacin pide al usuario un nmero de cuenta. 5. Escriba un NIP. Una vez que introduzca un nmero de cuenta vlido, la aplicacin mostrar el indicador Escriba su NIP:. Escriba 54321 como su NIP (Nmero de Identificacin Personal) vlido y oprima Intro. A continuacin aparecer el men principal del ATM, que contiene una lista de opciones (figura 1.14). En el captulo 14 le mostraremos cmo puede introducir un NIP en forma privada mediante el uso de un objeto JPasswordField. Introduzca un NIP vlido Men principal ATM 09 Admmistrator Comma d Prompt-java ATMCaseStudy - iD lX i Welcome! P le ase enter your En ter your PIN : 54 iccount number: 12345 321 ....4 __ ti 1 - view my balance 2 - Withdraw cash 3 - Deposit funds 4 - E x it En ter a ch o ice : _______________________________________________ d Fig. 1.14 | El usuario escribe un nmero NIP vlido y aparece el men principal de la aplicacin del ATM. 6. Revise elsaldo de la cuenta. Seleccione la opcin 1, Ver mi saldodel men del ATM (fi gura 1.15).Acontinuacinlaaplicacinmostrardosnmeros: Saldo disponibl e($1,000.00) y Saldo total (SI,200.00). Elsaldo disponibleesla mximacantidad dedinero en sucuenta, disponible pararetirarla en un momento dado. En algunos casos, ciertos fondos como los de psitos recientes, no estn disponibles de inmediato para que el usuario pueda retirarlos, por lo que el saldo disponible puede ser menor que el saldo total, como en este caso. Despus de mostrar la informacin de los saldos de la cuenta, se vuelve a mostrar el men principal de la aplicacin. 7. Retire dinero de la cuenta. Seleccione laopcin 2, Reti rar efectivo", del men de laapli cacin. Acontinuacin aparecer (figura 1.16) unalistademontos endlares (porejemplo: 20, 40,60,100 y 200).Tambin tendr laoportunidad de cancelar latransaccin y regresaral men principal. Retire $100 seleccionando laopcin 4. La aplicacin mostrar el mensaje Tome su efectivo ahoray regresaralmen principal. [Nota: pordesgracia,estaaplicacinslo simula elcomportamiento de un verdadero ATM,por lo cual no dispensa efectivo en realidad]. www.FreeLibros.me 61. 1.10 Prueba de una aplicacin en Java 25 Informacin del saldo de la cuenta E J Administrator Command Prompt - iava ATMCaseStudy _ |D |X | En ter a ch o ice : 1 Balance In fo rm a tio n :-------- - A v a ila b le b alan ce: $1,0 - T o tal b alan ce: $1,2 Main men: 1 - View my balance 2 - Withdraw cash 3 - Deposit funds 4 - E x it E n ter a ch o ice : j 00.00 00.00 A F ig . 1.15 | La aplicacin del ATM muestra la informacin del saldo de la cuenta del usuario. Men de retiro del ATM Fig. 1.16 | Se retira el dinero de la cuenta y la aplicacin regresa al men principal. 8. Confirme que la informacin de la cuenta se haya actualizado. En el men principal, se leccione la opcin 1de nuevo paraver el saldo actual de su cuenta (figura 1.17). Observe que tanto el saldo disponible como el saldo total se han actualizado para reflejar su transaccin de retiro. 9. Finalice la transaccin. Para finalizar su sesin actual en el ATM, seleccione la opcin 4, Sali r del men principal (figura 1.18.) El ATM saldr del sistema y mostrar un mensaje de despedida al usuario. A continuacin, la aplicacin regresar a su indicador original, pi diendo elnmero de cuenta delsiguiente usuario. 10. Salga de la aplicacin delATMy cierre la ventana Smbolo del sistema. La mayora de las aplicacionescuentan con unaopcin para saliry regresar aldirectorio del Smbolo delsistema desde el cual se ejecut la aplicacin. Un ATM real no proporciona al usuario la opcin de apagar la mquinaATM. En vez de ello, cuando el usuario ha completado todas las transac ciones deseadasy elige la opcin del men para salir, elATM se reinicia y muestra un indica dor para el nmero de cuenta del siguiente usuario. Como se muestra en la figura 1.18, la www.FreeLibros.me 62. 26 Captulo I Introduccin a las computadoras y a Java Administrator Command Prompt -java ATMCaseStudy Enter a ch o ice : 1 Balance Info rm atio n : - A v a ila b le b alance: T o tal balance: Main men: 1 - View my balance 2 - Withdraw cash 3 - Deposit funds 4 - E x it E n ter a ch o ice : $900.00 $1,100.00 Confirmacin de la informacin actualizada del saldo de la cuenta despus de la transaccin de retiro. Fig. 1.17 | Verificacin del nuevo saldo. GSJ Administrator Command Prompt -java ATMCaseStudy IIxl Enter a ch o ice : 4 xiting the s y s te m ... tank youl Goodbye! Mensiav Welcoael Itelcon* to Java ^rograamlngl, C:trxaple*(.t 02fig02_01> El programa imprime en la pantalla Bienvenido a la programacin en lava! Usted escribe este comando para ejecutar la aplicacin Fig. 2.2 | Ejecucin de B ien ven id o l desde el Smbolo del sistema www.FreeLibros.me 80. 44 Captulo 2 Introduccin a las aplicaciones en Java Tip para prevenir errores 2.7 AltratardeejecutarunprogramaenJava,sirecibeunmensajecomoExcepti on in threa d main " ja v a .7ang. NoClassDefFoundError: Bienven i do l,quieredecirquesuvariable deentorno CLASSPATH noestconfiguradade manera correcta. Consulteconcuidadolas instruccionesde instalacinenlaseccinAntesdeempezarestelibro. Enalgunossistemas, talveznecesitereiniciarsuequipooabrirunanuevaventanadecomandosparaqueestos ajustestenganefecto. 2.3 Modificacin de nuestro primer programa en Java En estaseccin modificaremos el ejemplo de la figura 2.1 para imprimir texto en una lnea mediante el usode varias instrucciones,y para imprimir texto en varias lneas mediante unasola instruccin. Cmo mostrar una sola lnea de texto con varias instrucciones Esposiblemostrar la lneade texto Bienvenido a la programacin en Java! devarias formas. Laclase Bienveni do2, que se muestra en la figura 2.3, utiliza dos instrucciones (lneas 9 y 10) para producir el resultado que se muestra en la figura 2.1. [Nota: de aqu en adelante, resaltaremos las caractersticas nuevas y las caractersticas clave en cada listado de cdigo, como se muestra en las lneas 9 y 10 de este programa]. 1 / / F ig - 2.3 : Bienvenido2.java 2 / / Im prim ir una lin e a de texto con va ria s in stru ccio n e s. 3 4 public c la ss Bienvenido2 5 { 6 // e l mtodo main empieza la ejecucin de la ap licaci n en Java 7 public s ta tic void main(S trin g [] args ) 8 { 9 S ystem .o u t.p rin t( Bienvenido a ) ; 10 System .out.printlnC la programacin en Ja v a ! ) ; 11 } / / fin del mtodo main 12 } / / fin de la clase Bienvenido2 Bienvenido a la programacin en Java! Fig. 2.3 | Impresin de una lnea de texto con varias instrucciones. El programaes similar al de lafigura 2.1, por lo que aquslo hablaremos de los cambios. La lnea 2 / / Im prim ir una lin e a de texto con va ria s in stru ccio n es. es un comentario de fin de lnea que describe el propsito de este programa. La lnea 4 comienza la declaracin de laclase Bienveni do2. Las lneas9 y 10 del mtodo mai n S y s te m .o u t.p rin t( Bienvenido a " ) ; S y ste m .o u t.p rin tln C la programacin en Ja v a ! ) ; muestran una lnea de texto. La primera instruccin utiliza el mtodo p ri nt de System , out para mos trar una cadena. Cadainstruccin p ri nt o p ri n tl n continamostrando caracteresa partir dedonde la ltimainstruccin p rin t o p ri n tl n dej demostrarlos. A diferenciade p ri n tl n, despus de mostrarsu argumento, p rin t oposicionael cursordesalidaalinicio de lasiguiente lneaen laventana de coman dos; elsiguiente carcterque muestrael programaen laventanade comandos aparecerjustodespusdel ltimo carcter que muestre p ri n t. Por lo tanto, la lnea 10 coloca el primer carcter de su argumento www.FreeLibros.me 81. 2.3 Modificacin de nuestro primer programa en Java 45 (la letra 1) inmediatamente despus del ltimo carcter que muestra la lnea 9 (el carcterde espacio antes del carcter decomilladoble de cierre de la cadena). Cmo mostrar variaslineasde texto con una sola instruccin Una sola instruccin puede mostrar varias lneas mediante el uso de los caracteres de nueva lnea, los cuales indican a los mtodos print y println de System.out cundo deben colocar el cursor de salida al inicio de la siguiente lnea en la ventana de comandos. Al igual que las lneas en blanco, los espacios y los tabuladores, los caracteres de nueva lnea son caracteres de espacio en blanco. El pro grama de la figura 2.4 muestra cuatro lneas de texto mediante el uso de caracteres de nueva lnea para determinar cundo empezar cada nueva lnea. La mayor parte del programa es idntico a los de las figuras 2.1 y 2.3. 1 / / F i g . 2.4 : Bienvenido3.java 2 / / Im prim ir va ria s lin e a s de texto con una sola in stru cci n . 3 4 p u b lic c la s s Bienvenido3 5 { 6 / / e l mtodo main empieza la ejecucin de la ap licaci n en lava 7 p u b lic s t a t ic void m ain(S trin g [] args ) 8 { 9 S y ste m .o u t.p rin tln C "Bienvenidonanla programacionnen la v a ! ) ; 10 } / / fin del mtodo main 11 } / / fin de la clase Bienvenido3 Bienvenido a la programacin en Java! Fig. 2.4 | Impresin de varias lneas de texto con una sola instruccin. La lnea 2 / / Im prim ir va ria s lin e a s de texto con una so la in stru cci n . es un comentario que describe el propsito de este programa. La lnea4 comienza la declaracin de la clase Bienvenido3. La lnea 9 S y ste m .o u t.p rin tln C Bienvenidonanla programacionnen Ja v a ! ) ; muestracuatro lneasseparadas de texto en laventana de comandos. Por lo general, loscaracteres en una cadena se muestranjustocomo aparecen en lascomillas dobles. Sin embargo, observe que los dos carac teresy n (quese repiten tres veces en la instruccin) no aparecen en la pantalla. La barra diagonal in versa () se conocecomo carcterde escape, elcualtiene un significado especial paralosmtodos p ri nt y p ri n tl n de System . out. Cuando aparece una barra diagonal inversa en una cadena de caracteres,Java oombina elsiguiente carcter con la barra diagonal inversa para formar una secuencia de escape. Lase cuencia de escape n representa el carcter de nueva lnea. Cuando aparece un carcter de nueva lnea en una cadena que seva a imprimir con System . out, el carcter de nueva lnea hace que el cursor de salida de la pantallase desplace alinicio de lasiguiente lnea en laventana de comandos. En lafigura2.5 seenumeranvariassecuenciasdeescapecomunes,condescripcionesdecmo afectan la manera de mostrar caracteres en la ventana de comandos. Paraobtener una lista completa de secuen cias de escape,visite j ava. sun. com/docs/books/j 1s/thi rd_editi on/html/1 exical. html# 3 .1 0 .6 . www.FreeLibros.me 82. 46 Captulo 2 Introduccin a las aplicaciones en Java Secuencia de escape Descripcin n Nueva lnea. Coloca elcursorde la pantalla al inicio de lasiguiente lnea.t Tabuladorhorizontal. Desplaza el cursorde la pantalla hasta la siguienteposicin de tabulacin.r Retomo de carro. Coloca el cursorde la pantalla al iniciode la lnea actual; avanza a la siguientelnea. Cualquiercarcterque se imprima despusdel retomo decarro sobrescribe bs caracteres previamente impresosen esa lnea. Barradiagonal inversa. Se usa para imprimir un carcterde barra diagonal inversa. Doblecomilla. Se usa para imprimirun carcter de doblecomilla. Por ejemplo, System,out.printl n( entre comillas ); displays entre comilias". Fig. 2 .5 | Algunas secuencias de escape comunes. 2.4 Cmo mostrar texto con p ri n tf El mtodo System .out .pri ntf (fsignifica formato) muestra datos con formato. La figura 2.6 usa estemtodo paramostrar las cadenas Bienvenido a y la programacin en Ja v a ! . Las lneas 9y 10 S y ste m .o u t.p rin tf( %sn%sn , Bienvenido a , la programacin en Ja v a ! ) ; llaman al mtodo System .o u t. pri n tf para mostrar lasalida del programa. La llamada al mtodo espe cifica tres argumentos. Cuando un mtodo requiere varios argumentos, stos se colocan en una lista separada por comas. Buena prctica de programacin 2.6 Coloque un espaciodespusde cada coma (,) en una lista de argumentospara que sus programasseanmslegibles. 1 / / F i g . 2.6 : Bienvenido4.java 2 / / Im prim ir va ria s lin e a s con el mtodo S y ste m .o u t.p rin tf. 3 4 public c la ss Bienvenido4 5 { 6 / / el mtodo main empieza la ejecucin de la ap licaci n de Java 7 public s t a t ic void main( S trin g [] args ) 8 { 9 S yste m .o u t.p rin tf( %sn%sn"t 10 Bienvenido a", la programacin en Java!" ) ; 11 } / / fin del mtodo main 12 } / / fin de la clase Bienvenido4 Bienvenido a la programacin en Java! Fig. 2.6 | Imprimir varias lneas de texto con el mtodo System, out. p ri n tf. www.FreeLibros.me 83. 2.5 Otra aplicacin en Java: suma de enteros 47 Las lneas 9 y 10 representan slo una instruccin. Java permite dividir instrucciones extensas en varias lneas. Aplicamos sangra a la lnea 10 para indicar que es la continuacinde la lnea 9. Error comn de programacin 2.4 Dividir una instruccin a la mitadde un identificador o de una cadena esun error de sintaxis. Elprimerargumento delmtodo pri n tf esunacadena de formato que puedeconsistiren texto fijo y especificadores de formato,este mtodo imprime el texto fijo de igual forma que pri nt o p ri ntl n. Cada especificador de formato es un receptculo para un valor,y especificael tipo de datos a imprimir. Los especificadores de formato tambin pueden incluir informacin de formato opcional. Empiezan con un signo porcentual (%) y van seguidos de un carcter que representa el tipo de datos. Por ejemplo, elespecificador de formato %s es un receptculo para una cadena. La cadena de for mato en la lnea 9 especificaque pri n tf debe imprimirdos cadenas,y que a cada una de ellas le debe se guir un carcter de nueva lnea. En laposicin del primer especificador de formato, pri n tf sustituye el valordelprimerargumento despusde lacadenadeformato. En cadaposicin posterior delespecificador de formato, pri n tf sustituye el valor del siguiente argumento. As, este ejemplo sustituye Bienvenido a por el primer %s y la programacin en Ja va ! por elsegundo %s. Lasalida muestra que se desplie gandos lneas de texto en pantalla. En nuestros ejemplos presentaremos las diversas caractersticas de formato a medida que se vayan necesitando. El apndice G presenta los detalles de cmo dar formato a lasalida con pri ntf. 2.5 Otra aplicacin en Java: suma de enteros Nuestra siguiente aplicacin lee (o recibe como entrada) dos enteros (nmeros completos, como 22, 7, 0 y 1024) que el usuario introduce mediante el teclado, despus calcula lasuma de los valoresy mues tra el resultado. Este programa debe llevar la cuenta de los nmeros que suministra el usuario para los clculos que el programa realiza posteriormente. Los programas recuerdan nmeros y otros datos en la memoria de lacomputadora, y acceden a ellos a travs de unos elementos conocidos como variables. Elprograma delafigura2.7 demuestraestosconceptos. En lasalida deejemplo, usamostexto en negritas para identificar laentrada del usuario (por ejemplo, 45 y 72). 1 / / F i g . 2.7: Suma.java 2 / / Programa que muestra la suma de dos nmeros. 3 im port j a v a . t i l . Scanner; / / el programa usa la clase Scanner 4 5 p u b lic c la s s Suma 6 { 7 / / el mtodo main empieza la ejecucin de la ap licaci n en Java 8 public s t a t ic void main( S trin g [] args ) 9 { 10 / / crea objeto Scanner para obtener la entrada de la ventana de comandos 11 Scanner entrada = new ScannerC System .in ) ; 12 13 in t numerol; / / primer nmero a sumar 14 in t numero2; / / segundo nmero a sumar 15 in t suma; / / suma de numerol y numero2 16 Fig. 2 .7 | Programa que muestra la suma de dos nmeros (parte I de 2). www.FreeLibros.me 84. 48 Captulo 2 Introduccin a las aplicaciones en Java 17 System .out.printC Escrib a el primer entero: " ) ; / / indicador 18 numerol = e n tra d a .n e xtln tO ; / / lee el primer nmero del usuario 19 20 System .out.printC Escrib a el segundo entero: ) ; // indicador 21 numero2 = e n tra d a .n e xtln tO ; / / lee el segundo nmero del usuario 22 23 suma = numerol + numero2; / / suma los nmeros, despus almacena el to ta l en suma 24 25 System.out .p ri n tf( La suma es %dn , suma ) ; / / muestra la suma 26 } / / fin del mtodo main 27 } / / fin de la clase Suma Escrib a el primer entero: 45 Escrib a el segundo entero: 72 La suma es 117 Fig. 2.7 | Programa que muestra la suma de dos nmeros (parte 2 de 2). Declaraciones import Las lneas 1y 2 / / Fig . 2.7: Suma.java / / Programa que muestra la suma de dos nmeros. indican el nmero de la figura, el nombre del archivo y el propsito del programa. Una gran fortaleza de Java es su extenso conjunto de clases predefinidas que podemos reutilizar, en vez de reinventar la rueda.Estas clases se agrupan en paquetes (grupos con nombre de clases rela cionadas) y se conocen en conjunto como la biblioteca de clases de Java, o Interfazde programacin de aplicaciones de Java (API de Java). La lnea 3 im port ja v a . t il.S c a n n e r ; / / el programa usa la clase Scanner esuna declaracin importque ayudaalcompilador a localizar una clasequeseutiliza eneste programa. Indica que este ejemplo utiliza la clase Scanner predefinida deJava (que veremos en breve) del paquete java.til. Error comn de programacin 2.5 Todaslasdeclaraciones importdebenaparecerantesde ladeclaracindelaprimeraclase en elarchivo. Colocar una declaracin import dentro del cuerpo de la declaracin de unaclase, odespusdesta,esunerrordesintaxis. Tip para prevenir errores 2.8 Porlogeneral siolvidaincluir unadeclaracin importpara unaclasequeutilice ensu programa,seproduceunerrordecompilacinquecontieneunmensajecomoacannot find symbol Cuandoestoocurra,verifiquequehayaproporcionadolasdeclaraciones import apropiadasy quelosnombresenbismismasestnescritosenforma correcta,quesehayan usadolasletrasmaysculasy minsculascomosedebe. Declaracin de la claseSuma La lnea 5 public class Suma www.FreeLibros.me 85. 15 Otra aplicacin en Java: suma de enteros 49 empieza ladeclaracin de laclase Suma. El nombre dearchivo paraesta clase publi c debeser Suma.java. Recuerde queel cuerpo decada declaracinde claseempiezacon una llaveizquierda deapertura (lnea6) ytermina con una llavederecha de cierre (lnea 27). La aplicacin empiezaaejecutarse con el mtodo main (lneas 8 a la 26). La llaveizquierda (lnea 9) marcaelinicio del cuerpo de main, y lacorrespondiente llavederecha (lnea 26) marca su final. Observe que al mtodo main se le aplica un nivel de sangra en el cuerpo de la clase Suma,y que al cdigo en el cuerpo de mainse leaplicaotro nivel para mejorar la legibilidad. Declaraciny creacin de un objeto Scannerpara obtenerla entrada del usuario mediante elteclado Una variable es una ubicacin en lamemoria de la computadora, en donde se puede guardar un valor para utilizarlo despus en un programa. Todas las variables deben declararse con un nombre y un tipo antesde poder usarse. El nombre de sta, que puede ser cualquier identificador vlido, permite al pro gramaacceder al valor de lavariable en memoria. El tipo de una variable especifica la clase de informa cin que se guarda en esa ubicacin de memoria. Al igual que las dems instrucciones, las instrucciones de declaracin terminan con punto y coma (;). La lnea 11 Scanner entrada = new Scanner( System .in ) ; es una instruccin de declaracin de variable que especificael nombre (entrada) ytipo (Scanner) de una variable que se utiliza en este programa. Un objeto Scanner permite a un programa leer datos (por ejemplo: nmerosycadenas) parausarlosen un programa. Losdatos puedenprovenirde muchas fuentes, como un archivo en disco o desde el teclado de un usuario. Antes de usar un objeto Scanner, hay que crearlo yespecificar elorigen de la informacin. Elsigno =en lalnea 11 indicaqueesnecesarioinidalizarlavariable entrada tipo Scanner (esdecir, hay que prepararla para usarla en el programa) en su declaracin con el resultado de la expresin a la derecha del signo igual: new Scanner(System .in). Esta expresin usa la palabra clave new para crear un objeto Scanner que lee los datos escritos por el usuario mediante el teclado. El objeto de entrada estndar, System .in, permite a las aplicaciones de Java leer la informacin escrita por el usuario. Elobjeto Scanner traduceestos bytes en tipos (como int) que se pueden usar en un programa. Declaracin de variablespara almacenar enteros Lasinstrucciones de declaracin de variables en las lneas 13 a la 15 in t numerol; / / prim er nmero a sumar in t numero2; / / segundo nmero a sumar in t suma; / / suma de numerol y numero2 declaran que las variables numerol, numero2 y suma contienen datos de tipo int; estas variables pueden oontenervaloresenteros (nmeroscompletos, como 72, -1127 y 0). Estasvariables no se han inicializado todava. El rango de valores para un int es de -2,147,483,648 a +2,147,483,647 nota: bs valores int reales talvez no contengan comas]. Hay otros tipos de datos como flo a t y doubl e, para guardar nmeros reales, y el tipo char, para guardardatos decaracteres. Los nmeros realesson nmeros quecontienen puntos decimales,como 3.4, 0 .0 y -11.19. Lasvariables de tipo char representan caracteres individuales,como una letraen mayscu la (A), un dgito (7), un carcter especial (* o %)o una secuencia de escape (como el carcter de nueva lnea, n). Los tipos tales como in t , flo a t, doubl e y char seconocencomo tipos prim itivos. Los nom bres de los tipos primitivos son palabras clavey deben aparecer completamente en minsculas. El apn dice D sintetiza las caractersticas de los ocho tipos primitivos (boolean, byte, char, short, in t, long, flo a t y double). www.FreeLibros.me 86. 50 Captulo 2 Introduccin a las aplicaciones en Java Es posible declarar varias variables del mismo tipo en una sola declaracin, en donde los nombres de las variables se separan por comas (es decir, una lista de nombres de variables separados por comas). Porejemplo, las lneas 13 a la 15 se puedenescribirtambin as: in t numerol, / / prim er nmero a sumar numero2, / / segundo nmero a sumar suma; / / suma de numerol y numero2 Buena prctica de programacin 2.7 Declarecadavariableenunalineaseparada.Esteformatopermiteinsertaruncomentario descriptivoenseguidadecadadeclaracin. Buena prctica de programacin 2.8 Seleccionarnombresdevariablessignificativosayudaaqueunprogramaseautodocumente (esdecir,queseamsfcilentenderelprogramaconsloleerlo,enlugardeleermanualeso verunnmeroexcesivodecomentarios). Buena prctica de programacin 2.9 Por convencin, los identificadores de nombre de variables empiezan con una letra minscula,y cadaunade laspalabrasenelnombre,quevandespusdelaprimera,deben empezar con una mayscula. Por ejemplo, elidentificador primerNumero tiene una N maysculaensusegundapalabra.Numero. Cmopedir la entrada al usuario La lnea 17 System .out.printC "E s c rib a el prim er en tero : " ) ; / / in d icad o r utiliza System, out. p rin t paramostrar el mensaje Escrib a el prim er en tero: . Este mensaje se co noce como indicador, ya que indicaal usuario que debe realizar una accin especfica. En este ejemplo utilizamoselmtodo p ri nt envezde pri ntl n paraque laentrada del usuario aparezcaen lamisma lnea que la del indicador. En la seccin 2.2 vimos que, por lo general, los identificadores que empiezan con letras maysculas representan nombres declases. Porlo tanto, System esunaclase. Laclase System forma parte del paquete ja v a . lang. Cabe mencionar que la clase System no se importa con una declaracin import al principio del programa. Observacin de ingeniera de software 2. i Elpaquete java, langseimporta de manerapredeterminadaen todos losprogramasde Java,;porende, lasclasesenjava, langsonlosnicasenlaAPIdeJavaque norequieren unadeclaracin import. Cmo obtener un valor in t como entrada del usuario La lnea 18 numerol = e n tra d a .n e xtln tO ; / / le e el prim er nmero del u su ario utiliza el mtodo n e xtln t del objeto entrada de la clase Scanner para obtener un entero del usuario medianteel teclado. En estepunto, elprograma esperaa queel usuario escribael nmero yoprimaIntro paraenviar el nmero al programa. Nuestro programa asume que el usuario escribir un valor de entero vlido. De no ser as,se produ cirun error lgico en tiempo deejecucin yelprogramaterminar. Elcaptulo 11, Manejo deexcepcio nes: un anlisis ms detallado, hablasobrecmo hacersus programasms robustos alpermitirles manejar dichos errores. Esto tambin se conocecomo hacer que su programa sea toleranteafallas. www.FreeLibros.me 87. 2.5 Otra aplicacin en Java: suma de enteros 5 1 En la lnea 18, colocamos el resultado de la llamada al mtodo nextlnt (un valor i nt) en lavariable numerol mediante eluso deloperador de asignacin, *.Lainstruccinseleecomo numerolobtiene el valorde entrada.nextlnt().Aloperador=sele llama operador binario, yaque tienedos operandos: numerolyelresultado delallamadaalmtodo entrada.nextlntO. Estainstruccinse llamainstruccin deasignacin,ya que asignaun valor aunavariable.Todo loqueest a laderechadel operador de asigna cin (=)se evala siempreantesde realizar la asignacin. Buena prctica de programacin 2.10 Alcolocar espaciosen cualquier lado de un operador binario, mejora la legibilidaddel programa. Cmopedir e introducir un segundo int La lnea 20 System .out.printC E s c rib a el segundo en tero : ) ; / / in d icad o r pide al usuario que escriba elsegundo entero. La lnea 21 numero2 = entrada. n e x tln tO ; / / le e el segundo nmero del u su ario lee elsegundo entero y lo asigna a lavariable numero2. Usode variablesen un clculo La lnea 23 suma = numerol + numero2; / / suma lo s nmeros, despus almacena el to ta l en suma es una instruccin de asignacin que calcula la suma de las variables numero l y numero2, y asigna el re sultado alavariable sumamedianteeluso del operador deasignacin, =.Lainstruccinseleecomo suma obtienee1valor de numerol + numero2. En general, los clculos se realizan en instrucciones de asigna cin. Cuando el programa encuntrala operacin de suma, utilizalos valores almacenados en las varia bles numerol y numero2 para realizar el clculo. En la instruccin anterior, el operador de suma es un operadorbinaria, susdosoperandos son las variables numero l y numero2. Las partesde las instrucciones que contienen clculos se llaman expresiones. De hecho, una expresin es cualquier parte de una ins truccin que tiene un valorasociado. Porejemplo, el valorde laexpresin numerol + numero2 eszsuma de los nmeros. De manerasimilar, el valor de la expresin entrada. n e xtln tO esel entero escrito por el usuario. Cmo mostrarelresultado delclculo Unavez realizado el clculo, la lnea 25 S y ste m .o u t.p rin tf( La suma es %dn , suma ) ; / / m uestra la suma utiliza el mtodo System .o u t. pri n tf para mostrar la suma. Elespecificador de formato %des un recep tculo paraun valor i nt (en estecaso, elvalorde suma); laletra dse refierea entero decimal.Elresto de loscaracteresen lacadenade formato son texto fijo. Por lo tanto,elmtodo pri n tf imprime en pantalla La suma es , seguidodelvalordes urna(en laposicindelespecificadordeformato %d)yunanuevalnea. Tambinesposible realizarclculosdentro de instruccionespri n tf. Podramos habercombinado las instrucciones de las lneas 23 y 25 en lasiguiente instruccin: S y s te m .o u t.p rin tf( "La suma es %dn , ( numerol + numero2 ) ) ; www.FreeLibros.me 88. 52 Captulo 2 Introduccin a las aplicaciones en Java Losparntesis alrededordelaexpresin numerol + numero2 noson requeridos; seincluyen paraenfatizar que elvalor de todalaexpresin seimprime en la posicin del especificador de formato %d. Documentacin de la API deJava Para cada nueva clase de la API de Java que utilicemos, hay que indicar el paquete en el que se ubica. Esta informacin nos ayuda a localizar las descripciones de cada paquete y clase en la documentacin de laAPI deJava. Puede encontrar una versin basadaenWeb de esta documentacin en download.oracle. com/j avase/6/docs/ap i/ Tambin puede descargar esta documentacin de www.oracle. com/techn etwo rk /j ava/j avase/downloads/i ndex. html El apndice E muestracmo utilizaresta documentacin. 2.6 Conceptos acerca de la memoria Losnombres devariablescomo numerol, numero2 y suma en realidad corresponden aciertas ubicaciones en la memoria de la computadora. Toda variable tiene un nombre, un tipo, un tamao (en bytes) y un valor. En el programade suma de la figura 2.7, cuando se ejecuta lainstruccin (lnea 18): numerol = e n tra d a .n e x tln tO ; / / le e el prim er nmero del u su ario el nmero escrito por el usuario se coloca en una ubicacin de memoria que corresponde al nombre numerol. Suponga que el usuario escribe 45. La computadora coloca ese valor entero en la ubica cin numerol (figura 2.8) y sustituye alvalor anterior en esa ubicacin (si haba uno). El valor anterior se pierde. numerol 45 Fig. 2 .8 | Ubicacin de memoria que muestra el nombre y el valor de la variable numerol. Cuando seejecuta la instruccin (lnea 21) numero2 = e n tra d a .n e x tln tO ; / / le e el segundo nmero del u su ario suponga que el usuario escribe 72. La computadora coloca ese valor entero en la ubicacin numero2. Lamemoria ahora aparececomo se muestra en lafigura 2.9. numerol 45 numero2 72 Fig. 2 .9 | Ubicaciones de memoria, despus de almacenar valores para numerol y numero2. Unavez que el programa de la figura 2.7 obtiene valores para nume ro l y numero2, los suma y coloca eltotal en lavariable suma. La instruccin (lnea 23) www.FreeLibros.me 89. 2.7 Aritmtica 53 suma = numerol + numero2; // suma lo s nmeros, despus almacena e l to ta l en suma realiza la suma y despus sustituye el valor anterior de suma. Una vez que se calcula suma, la memoria aparece como semuestra en lafigura 2.10. Observe que losvalores de numeroly numero2 aparecen exac tamente como antes de usarlos en el clculo de suma. Estos valores se utilizaron, pero no sedestruyeron, cuando lacomputadorarealiz elclculo. Porende, cuando seleeun valorde una ubicacin de memoria, elproceso es no destructivo. numerol 45 numero2 72 suma 117 Fig. 2 .1 0 | Ubicaciones de memoria, despus de almacenar la suma de numerol y numero2. 2.7 Aritmtica La mayora de los programas realizan clculos aritmticos. Los operadores aritmticos se sintetizan en la figura 2.11. Observe el uso de variossmbolos especiales que no seutilizan en lgebra. Elasteris co (*) indica la multiplicacin, y el signo de porcentaje (%) es el operador residuo, el cual descri biremos en breve. Los operadores aritmticos en la figura 2.11 son operadores binarios, ya que fun cionan con iosoperandos. Por ejemplo, la expresin f + 7 contiene el operador binario +y los dos operandos f y 7. Operacin en Java Operador Expresin algebraica Expresin en Java Suma + M f + 7 Resta - p -c p - c Multiplicacin * brn b * m Divisin / x ly o o x 'ly y x / y Residuo % rmod s r % s Fig. 2.11 | Operadores aritmticos. La divisin de enteros produce un cociente entero. Por ejemplo, laexpresin 7 / 4 da como resul tado 1,ylaexpresin 17 / 5dacomo resultado 3.Cualquierparte fraccionariaen unadivisindeenteros simplemente se eiescarta(se trunca); no ocurre un redondeo. Javaproporciona el operador residuo, %,el cual produce elresiduo despus de ladivisin. Laexpresin x %yproduce elresiduo despus de que xse divide entre y. Por lo tanto, 7 % 4 produce 3, y 17 % 5produce 2. Este operador se utiliza ms comn menteconoperandosenteros, pero tambinpuede usarseconotros tipos aritmticos. En losejerciciosde estecaptulo y de captulos posteriores, consideramos muchas aplicaciones interesantes del operador re siduo,como determinarsi un nmero es mltiplo deotro. www.FreeLibros.me 90. 54 Captulo 2 Introduccin a las aplicaciones en Java Expresionesaritmticasenformato de lnea recta Las expresiones aritmticas enJavadeben escribirse en formato de lnea recta para facilitar laescritura de programas en la computadora. Por lo tanto, las expresiones como a dividida entre b deben escri birse como a/b, de maneraque todas las constantes, variables yoperadores aparezcan en una lnea recta. Lasiguiente notacin algebraicapor lo general no es aceptable para los compiladores: a J Parntesispara agruparsubexpresiones Losparntesisseutilizan para agrupartrminos en lasexpresionesenJava,de lamisma maneraqueen las expresiones algebraicas. Por ejemplo, para multiplicar apor lacantidad b + c,escribimos a * ( b + c ) Si una expresin contiene parntesis anidados, como ( ( a + b ) * c ) seevala primero laexpresin en el conjunto ms interno de parntesis (a + ben este caso). Reglasdeprecedencia de operadores Java aplica los operadores en expresiones aritmticas en una secuencia precisa, determinada por las si guientes reglas de precedencia de operadores, que casi siempre son las mismas que las que se utilizan en lgebra: 1. Las operacionesde multiplicacin, divisinyresiduo se aplican primero. Si una expresin con tienevariasde esasoperaciones, losoperadoresseaplicande izquierdaaderecha. Losoperadores de multiplicacin,divisin y residuo tienen el mismo nivel de precedencia. 2. Las operaciones de suma y resta se aplican a continuacin. Si una expresin contiene varias de esas operaciones, los operadores se aplican de izquierda a derecha. Los operadores de