C O M O
R
P
O
R
G
A
M
A
R
PAUL D EITEL
H ARVEY D EITEL
A L W A Y S L E A R N I N G
PEARSON
www.FreeLibros.meACCESO A LOS CAPÍTULOS ADICIONALES DEL LIBRO
Para acceder a los capítulos 12 a 19 (en español), 20 a 31 y Apéndices M a Q (en inglés)
mencionados en el texto, visite el sitio Web de este libro:
www.pearsonenespafiol.coin/deitel
Utilice una moneda para descubrir el código de acceso.
(No use objetos filosos porque podría dañarlo).
£Este código de acceso tiene vigencia de 2 días!
Asegúrese que el código no aparezca dañado ya que sólo puede usarse una vez
IMPORTANTE:
y no será reemplazado en ningún caso.
www.FreeLibros.me www.FreeLibros.me www.FreeLibros.meP R O G I s g M A R
N O V E N A E D I C l d ^
Paul Deítel
Deitel & Associates, Inc.
Harvey Deítel
Deitel & Associates, Inc.
Traductor
Alfonso Vidal Romero Elizondo
Ingeniero en Sistemas Electrónicos
ITESM, Campus Monterrey
Departamento de Tecnología de Información y Computación
Revisión técnica
Roberto Martínez Román
ITESM, Campus Estado de México
Domingo Acosta Infante
Instituto Tecnológico de Morelia
Departamento de Ingeniería en Informática
PEARSON
www.FreeLibros.meDEITEL, PAUL y HARVEY DEITEL
Cómo programar en Java
Novena edición
PEARSON EDUCACIÓN, México, 2012
ISBN: 978-607-32-1150-5
Área: Computación
Formato: 20 X 25.5 cm
Páginas: 616
Authorized translation from the English language edition entitled JAVA HOW TO PROGRAM, 9thEdition, by Paul Deitel
& Harvey Deitel, published by Pearson Education, Inc., publishing as Prentice Hall, Copyright © 2012. All rights reserved.
ISBN 9780132575669
Traducción autorizada de la edición en idioma inglés titulada JAVA HOW TO PROGRAM, 9a. edición por Paul Deitel y
Harvey Deitel, publicada por Pearson Education, Inc., publicada como Prentice Hall, Copyright © 2012. Todos los derechos
reservados.
Esta edición en español es la única autorizada.
Edidón en español
Dirección Educación Superior:
Editor Sponsor:
Editor de Desarrollo:
Supervisor de Producdón:
Gerente Editorial Educación
Superior Latinoamérica:
Mario Contreras
Luis Miguel Cruz Castillo
e-mail:
[email protected]
Bernardino Gutiérrez Hernández
José D. Hernández Garduño
Marisa de Anta
NOVENA EDICIÓN, 2012
D.R. © 2012 por Pearson Educación de México, S.A. de C.V.
Atlacomulco 500-5o. piso
Col. Industrial Atoto
53519, Naucalpan de Juárez, Estado de México
Cámara Nacional de la Industria Editorial Mexicana. Reg. núm. 1031.
Reservados todos los derechos. Ni la totalidad ni parte de esta publicación pueden reproducirse, registrarse o transmitirse,
por un sistema de recuperación de información, en ninguna forma ni por ningún medio, sea electrónico, mecánico, foto-
químico, magnético o electroóptico, por fotocopia, grabación o cualquier otro, sin permiso previo por escrito del editor.
El préstamo, alquiler o cualquier otra forma de cesión de uso de este ejemplar requerirá también la autorización del editor
0 de sus representantes.
ISBN VERSIÓN IMPRESA: 978-607-32-1150-5
ISBN VERSIÓN E-BOOK: 978-607-32-1151-2
ISBN E-CHAPTER: 978-607-32-1152-9
Impreso en México. Printed in México.
1 2 3 4 5 6 7 8 9 0 - 15 14 13 12
PEARSON
www.FreeLibros.meEn memoria deí sargento Shriver,
'Elprimer director del Cuerpo de Taz y fundador
de numerosas organizaciones sociales:
Tor una vida de marcar ía diferencia.
Paul y Harvey Deitel
www.FreeLibros.me www.FreeLibros.mePrefacio
Antes de empezar
Contenido
xxiii
xxxiii
Introducción a las computadoras y a Java
Introducción
Jerarquía de datos
Lenguajes máquina, lenguajes ensambladores y lenguajes de alto nivel
Introducción a la tecnología de los objetos
Sistemas operativos
Lenguajes de programación
Java y un típico entorno de desarrollo en Java
1
1.1
1.2 Computadoras: hardware y software
1.3
1.4 Organización de una computadora
1.5
1.6
1.7
1.8
1.9
1.10 Prueba de una aplicación en Java
1.11 Web 2.0: Las redes sociales
1.12 Tecnologías de software
1.13 Cómo estar al día con las tecnologías de información
1.14 Conclusión
2
2.1
2.2
2.3 Modificación de nuestro primer programa en Java
2.4 Cómo mostrar texto con pri ntf
2.5 Otra aplicación en Java: suma de enteros
2.6 Conceptos acerca de la memoria
2.7 Aritmética
2.8
2.9 Conclusión
3
Introducción a las clases, objetos, métodos y cadenas
3.1
Introducción
3.2 Declaración de una clase con un método e instanciamiento de un objeto de una clase
3-3 Declaración de un método con un parámetro
3.4 Variables de instancia, métodos establecery métodos obtener
Comparación entre tipos primitivos y tipos por referencia
3.5
3.6
Inicialización de objetos mediante constructores
Introducción a las aplicaciones en Java
Introducción
Su primer programa en Java: imprimir una línea de texto
Toma de decisiones: operadores de igualdad y relaciónales
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.meContenido
Introducción
(Opcional) Caso de estudio de GUI y gráficos: creación de dibujos simples
Los números de punto flotante y el tipo doubl e
3.7
(Opcional) Caso de estudio de GUI y gráficos: uso de cuadros de diálogo
3.8
Conclusión
3.9
4
Instrucciones de control: Parte I
Introducción
4.1
4.2 Algoritmos
4.3
Seudocódigo
Estructuras de control
4.4
Instrucción i f de selección simple
4.5
4.6
Instrucción i f . .. el se de selección doble
4.7
Instrucción de repetición whi 1 e
4.8
Cómo formular algoritmos: repetición controlada por un contador
4.9
Cómo formular algoritmos: repetición controlada por un centinela
4.10 Cómo formular algoritmos: instrucciones de control anidadas
4.11 Operadores de asignación compuestos
4.12 Operadores de incremento y decremento
4.13 Tipos primitivos
4.14
4.15 Conclusión
5
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8 Operadores lógicos
5.9
5.10
5.11 Conclusión
6 Métodos: un análisis más detallado
6.1
6.2 Módulos de programas en Java
6.3 Métodos s t a t i c, campos s t a t i c y la clase Math
6.4 Declaración de métodos con múltiples parámetros
6.5 Notas acerca de cómo declarar y utilizar los métodos
6.6
6.7
6.8
6.9
Instrucciones de control: Parte 2
Introducción
Fundamentos de la repetición controlada por contador
Instrucción de repetición for
Ejemplos sobre el uso de la instrucción for
Instrucción de repetición do... whi 1 e
Instrucción de selección múltiple swi tch
Instrucciones break y continué
Resumen sobre programación estructurada
(Opcional) Caso de estudio de GUI y gráficos: dibujo de rectángulos y óvalos
La pila de llamadas a los métodos y los registros de activación
Promoción y conversión de argumentos
Paquetes de la API de Java
Caso de estudio: generación de números aleatorios
6.9.1
6.9.2
Escalamiento y desplazamiento generalizados de números aleatorios
Repetitividad de números aleatorios para prueba y depuración
6.10 Caso de estudio: un juego de probabilidad (introducción a las enumeraciones)
6.11 Alcance de las declaraciones
6.12 Sobrecarga de métodos
6.13
6.14 Conclusión
(Opcional) Caso de estudio de GUI y gráficos: colores y figuras rellenas
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
www.FreeLibros.meContenido
ix
Introducción a las colecciones y la clase A rrayLi st
(Opcional) Caso de estudio de GUI y gráficos: dibujo de arcos
Introducción
Caso de estudio de la clase Ti empo
Control del acceso a los miembros
Referencias a los miembros del objeto actual mediante this
Caso de estudio de la clase Ti empo: constructores sobrecargados
Constructores predeterminados y sin argumentos
Composición
Enumeraciones
f i nal i ze
Introducción
Declaración y creación de arreglos
Ejemplos acerca del uso de los arreglos
Caso de estudio: simulación para barajar y repartir cartas
Instrucción for mejorada
Paso de arreglos a los métodos
Caso de estudio: la clase L i broCal i f i c a c i ones que usa un arreglo para almacenar
las calificaciones
7 Arreglos y objetos ArrayList
7.1
7.2 Arreglos
7.3
7.4
7.5
7.6
7.7
7.8
7.9 Arreglos multidimensionales
7.10 Caso de estudio: la clase Lib ro 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 línea de comandos
7.13 La clase Arrays
7.14
7.15
7.16 Conclusión
8 Clases y objetos: un análisis más detallado
8.1
8.2
8.3
8.4
8.5
8.6
8.7 Observaciones acerca de los métodos Establecer y Obtener
8.8
8.9
8.10 Recolección de basura y el método
8.11 Miembros de clase s t a t i c
8.12 Declaración static import
8.13 Variables de instancia f i nal
8.14 Caso de estudio de la clase T i empo: creación de paquetes
8.15 Acceso a paquetes
8.16
8.17 Conclusión
9 Programación orientada a objetos: herencia
9.1
Introducción
Superclases y subclases
9.2
9.3 Miembros protected
Relación entre las superclases y las subclases
9.4
9.4.1
9.4.2
9.4.3
9.4.4
9.4.5
Creación y uso de una clase Empl eadoPorComi s i on
Creación y uso de una clase Empl eadoBaseMasComi s i on
Creación de una jerarquía de herencia Empl eadoPorComi s i on-
Empl eadoBaseMasComi sion
La jerarquía de herencia Empl eadoPorComi s i on-Empl eadoBaseMasComi sion
mediante el uso de variables de instancia p rotected
La jerarquía de herencia Empl eadoPorComi s i on-Empl eadoBaseMasComi sion
mediante el uso de variables de instancia p ri vate
(Opcional) Caso de estudio de GUI y gráficos: uso de objetos con gráficos
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.mex
Contenido
Los constructores en las subclases
Ingeniería de software mediante la herencia
L a clase Obj e ct
(Opcional) Caso de estudio de GUI y gráfi eos: mostar texto e imágenes
Comentarios de: Java Como Programar (1)