EBOOK VS PROGRAMACION EN JAVA 6 ALGORITMOS PROGRAMACION ORIENTADA
Para pagos en BBVA, NO REDONDEAR el monto, por favor pague por transferencia electrónica.
- Ingresa a tu libro desde cualquier lugar o dispositivo, con acceso a internet o sin acceso.
- Crear notas, y apuntes en tus lecturas.
- Puedes realizar búsquedas a los conceptos que necesites de manera rápida y fácil.
CONTENIDO
Prologo XIX
Agradecimientos xxv
Capítulo 1
Introducción a la programación 1
1.1 Breve historia de las computadoras 2
1.1.1 Generación de computadoras 3
1.2 Organización y componentes de una computadora 4
1.2.1 Hardware 5
1.2.2 Software 8
1.3 Sistema operativo 9
1.4 Lenguaje de computadora 11
1.4.1 Unidades de medida de memoria 11
1.4.2 Representación de la información en las computadoras
(códigos de caracteres) 11
1.5 Lenguajes de programación 13
1.5.1 Lenguaje ensamblador (assembly language) 14
1.5.2 Lenguaje de programación de alto nivel 14
1.5.3 El caso la máquina virtual Java (JVM) 15
1.6 Internet y la web 16
1.7 La revolución Web 2.0 y cloud computing 17
1.7.1 Los social media 18
1.7.2 Desarrollo de programas web 18
1.7.3 Cloud computing (computación en nube) 19
1.8 Web semántica y Web 3.0 19
1.9 Java como lenguaje y plataforma de programación 20
1.10 Historia de Java 21
1.10.1 Características de Java 22
Resumen 23
capítulo 2
Metodología de programación, creación y desarrollo de programas en Java 25
2.1 Resolución de problemas con Java 26
2.1.1 Análisis del problema 27
2.1.2 Diseño del algoritmo 27
2.1.3 Codificación 29
2.1.4 Compilación-interpretación de un programa en java 30
2.1.5 Verificación y depuración de un programa Java 31
2.1.6 Documentación y mantenimiento 31
2.2 Creación de un programa en java 32
2.3 Metodología de la programación 34
2.3.1 Programación estructurada 34
2.3.2 Programación orientada a objetos 35
2.4 Metodología de desarrollo basada en clases 37
2.5 Entornos de programación en java 38
2.5.1 El kit de desarrollo Java: JDK 6 38
2.6 Entornos de desarrollo integrado (EDI) 39
2.6.1 Herramientas para desarrollo en java 40
2.6.2 NetBeans 40
2.6.3 Eclipse 41
2.6.4 Blue 41
2.6.5 Otros entornos de desarrollo 41
2.7 Compilación sin entornos de desarrollo 41
Resumen 42
Conceptos clave 42
Glosario 43
Ejercicios 43
capítulo 3
Elementos básicos de Java 45
3.1 Estructura general de un programa en java 45
3.1.1 Declaración import 48
3.1.2 Declaración de clases 49
3.1.3 Método main () 30
3.1.4 Métodos definidos por el usuario 51
3.1.5 Comentarios 32
3.2 Elementos de un programa en java 54
3.2.1 Tokens (Elementos léxicos del programa) 54
3.2.2 Signos de puntuación y separadores 56
3.2.3 Paquetes 56
3.3 Tipos de datos en java 57
3.3.1 Enteros: int, byte, short, long 58
3.3.2 Tipos de coma flotante (float/double) 59
3.3.3 Caracteres (char) 60
3.3.4 Boolean 61
3.3.5 El tipo de dato void 62
3.4 Tipo de datos enumeración (enum) 63
3.5 Conversión de tipos (cast) 63
3.6 Constantes 64
3.6.1 Constantes literales 64
3.6.2 Constantes declaradas final 68
3.7 Variables 68
3.7.1 Declaración 69
3.7.2 Inicialización de variables 71
3.8 Duración de una variable 71
3.8.1 Variables locales 72
3.8.2 Variables de clases 72
3.8.3 Acceso a variables de clase fuera de la clase 73
3.9 Entradas y salidas 74
3.9.1 Salida (System, out) 75
3.9.2 Salida con formato: printf 76
3.9.3 Entrada (system, in) 76
3.9.4 Entrada con la clase Scanner 77
3.10 Tipos de datos primitivos (clases envoltorio) 79
Resumen 80
Conceptos clave 81
Ejercicios 81
Capítulo 4
Operadores y expresiones 83
4.1 Operadores y expresiones 83
4.2 Operador de asignación 84
4.3 Operadores aritméticos 85
4.3.1 Asociatividad 86
4.3.2 Uso de paréntesis 87
4.4 Operadores de incremento y decremento 88
4.5 Operadores relacionales 90
4.6 Operadores lógicos 92
4.6.1 Evaluación en cortocircuito 94
4.6.2 Operadores | y & 95
4.6.3 Asignación booleana (lógica) 95
4.7 Operadores de manipulación de bits 96
4.7.1 Operadores de asignación adicionales 97
4.7.2. Operadores de desplazamiento de bits (>>, >>>, <<) 97
4.8 Operador condicional (? :) 98
4.9 Operador coma (,) 99
4.10 Operadores () y [] 99
4.10.1 Operador . 99
4.10.2 Operador () 100
4.10.3 Operador [] 100
4.11 Operador instanceof 100
4.12 Conversiones de tipos 100
4.12.1 Conversión implícita 101
4.12.2 Reglas 101
4.12.3 Conversiones explícitas 101
4. 13 Operador suma (+) con cadenas de caracteres 102
4.14 Prioridad y asociatividad 102
4.15 strictfp 103
Resumen 104
Conceptos clave 104
Ejercicios 105
Problemas 106
Capítulo 5
Estructuras de selección 107
5.1 Estructuras de control 107
5.2 Sentencia if 108
5.3 Sentencia if de dos alternativas: if-else 110
5.4 Sentencias if-else anidadas 113
5.4.1 Sangría en las sentencias if anidadas 113
5.4.2 Comparación de sentencias if anidadas y secuencias de sentencias if .. 115
5.5 Sentencia de control switch 117
5.5.1 Sentencia break 118
5.5.2 Caso particular de case 122
5.5.3 Uso de switch en menús 122
5.6 Expresiones condicionales, operador ? : 122
5.7 Evaluación en cortocircuito de expresiones lógicas 123
5.8 Puesta a punto de programas 124
5.9 Errores frecuentes de programación 126
Resumen 127
Conceptos clave 128
Ejercicios 128
Problemas 130
Capítulo 6
Estructuras de control I: bucles (lazos) 133
6.1 Sentencia while 133
6.1.1 Terminaciones anormales de un bucle 137
6.1.2 Bucles controlados por centinelas 137
6.1.3 Bucles controlados por indicadores o banderas 138
6.1.4 Sentencia break en bucles 140
6.1.5 La sentencia break con etiqueta 142
6.2 Repetición: bucle for 142
6.2.1 Usos de bucles for 147
6.2.2 Precauciones en el uso de for 148
6.2.3 Bucles infinitos 149
6.2.4 Los bucles for vacios 150
6.2.5 Expresiones nulas en bucles for 151
6.2.6 Sentencia continue 151
6.3 Bucle for each (Java 5.0 y Java 6) 153
6.4 Repetición: bucle do. . .while 153
6.4.1 Diferencias entre while y do-while 155
6.5 Comparación de bucles while, for y do-while 156
6.6 Diseño de bucles 157
6.6.1 Bucles para diseño de sumas y productos 157
6.6.2 Fin de un bucle 158
6.7 Bucles anidados 160
6.6 Transferencia de control: sentencias break y continue 163
6.6.1 Sentencia break 163
6.6.2 Sentencia continue 165
Resumen 165
Conceptos clave 166
Ejercicios 166
Problemas 169
Capítulo 7
Fundamentos de programación orientada a objetos y UML 171
7.1 Conceptos fundamentales de orientación a objetos 172
7.1.1 Abstracción 172
7.1.2 Encapsulamiento y ocultación de datos 173
7.1.3 Herencia 174
7.1.4 Polimorfismo 175
7.1.5 Reutilización (reusabilidad) 176
7.2 Clases 176
7.3 Objetos 177
7.3.1 Estado 177
7.3.2 Comportamiento 177
7.3.3 Identidad 177
7.4 Identificación de clases y objetos 178
7.5 Relaciones entre clases 179
7.6 UML: modelado de aplicaciones 180
7.6.1 ¿Que es un lenguaje de modelado? 181
7.6.2 Desarrollo de software orientado a objetos con UML 182
7.7 Diseño y representación grafica de clases y objetos en UML 182
7.7.1 Representación grafica de una clase 183
7.7.2 Representación grafica de objetos en UML 183
7.8 Herencia: clases derivadas 184
7.8.1 Niveles de herencia 186
7.8.2 Declaración de una clase derivada 186
Resumen 188
Conceptos clave 189
Ejercicios 189
capítulo 8
Clases y objetos 191
8.1 Clases y objetos 191
8.1.1 ¿Que son los objetos? 192
8.1.2 ¿Que son las clases? 193
8.2 Declaración de una clase 194
8.2.1 Creación de un objeto 194
8.2.2 Visibilidad de los miembros de la clase 195
8.2.3 Métodos de una clase 197
8.3 Implementación de las clases 199
8 4 Clases publicas 199
8.5 Paquetes 200
8.5.1 Sentencia package 201
8.5.2 Sentencia import 201
8.6 Constructores 202
8.6.1 Constructor por defecto 203
8.6.2 Constructores sobrecargados 203
8.7 Recolección de basura (objetos) 204
8.7.1 Método finalize () 205
8.8 Autorreferencia del objeto: this 206
8.9 Miembros static de una clase 207
8.9.1 Variables static 208
8.9.2 Métodos static 209
8.10 Consideraciones prácticas de diseño de clases 210
8.10.1 Métodos y clases predefinidos 211
8.10.2 Clases definidas por el usuario 212
8.11 Biblioteca de clases de Java 213
8.11.1 Clase System 214
8.11.2 Clase Object 214
8.11.3 Operador instanceof 215
8.11.4 Clase Math, funciones matemáticas 216
Resumen 217
Conceptos clave 218
Ejercicios 218
Problemas 220
capítulo 9
Métodos 221
9.1 Métodos 222
9.2 Método main () 224
9.3 Retorno de un método 225
9.3.1 Llamada a un método 226
9.4 Acceso a métodos 227
9.5 Paso de argumentos a métodos 229
9.5.1 Paso de parámetros por valor 230
9.5.2 Lista de parámetros 232
9.5.3 Modificador final 232
9.6 Métodos abstractos 233
9.7 Sobrecarga de métodos 233
9.7.1 Sobrecarga de constructores 235
9.8 Ámbito o alcance de variables 236
9.8.1 Ámbito de la clase 236
9.8.2 Ámbito del método 237
9.8.3 Ámbito del bloque 238
9.8.4 Variables locales 238
9.9 Métodos predefinidos 239
Resumen 239
Conceptos clave 240
Ejercicios 240
Problemas 241
capitulo 10
Arreglos (arrays) 243
10.1 Arreglos (arrays) 243
10.1.1 Declaración de un arreglo 244
10.1.2 Creación de un arreglo 245
10.1.3 Subíndices de un arreglo 245
10.1.4 Tamaño de los arreglos, atributo length 246
10.1.5 Verificación del Índice de un arreglo 247
10.1.6 Inicialización de un arreglo 247
10.1.7 Copia de arreglos 248
10.2 Bucle for each para recorrido de arreglos y colecciones (JavaSE 5.0 y 6) 250
10.3 Arreglos multidimensionales 251
10.3.1 Inicialización de arreglos multidimensionales 252
10.3.2 Arreglos irregulares o triangulares 253
10.3.3 Acceso a los elementos de arreglos bidimensionales 254
10.3.4 Arreglos de más de dos dimensiones 256
10.4 Utilización de arreglos como parámetros 257
10.4.1 Precauciones 259
10.5 Clase Vector y ArrayList 260
10.5.1 Clase Vector 260
10.5.2 Clase ArrayList 263
Resumen 264
Conceptos clave 264
Ejercicios 265
Problemas 266
capítulo 11
Cadenas
11.1 Cadena 269
11.1.1 Declaración de variables objeto cadena 272
11.1.2 Inicialización de variables de cadena 272
11.1.3 Constructores de un objeto cadena 273
11.2 Lectura de cadenas 275
11.2.1 Método read () 278
11.2.2 Métodos print () 279
11.3 Asignación de cadenas 281
11.4 Cadenas como parámetros; arreglos de cadenas 282
11.4.1 Arreglos de cadenas 282
11.5 Longitud y concatenación de cadenas 283
11.5.1 El método length () 283
11.5.2 Concatenación de cadenas 284
11.6 Obtención de caracteres de una cadena 285
11.6.1 Obtención de un carácter: método charAt () 285
11.6.2 Obtención de un arreglo de caracteres: método getChars () 286
11.6.3 Obtención de una subcadena: método substring () 287
11.7 Comparación de cadenas 288
11.7.1 Método compareTo () 288
11.7.2 Metodos equals () e equalsIgnoreCase () 289
11.7.3 Método regionMatches () 290
11.7.4 Métodos startsWith () y endsWith () 291
11.8 Conversión de cadenas 292
11.8.1 Método toUpperCase () 292
11.8.2 Método toLowerCase () 292
11.8.3 Método trim () 292
11.8.4 Método replace () 293
11.8.5 Método toCharArray () 293
11.9 Conversión de otros tipos a cadenas 294
11.10 Búsqueda de caracteres y cadenas 295
11.10.1 Metodo indexOf () 295
11.10.2 Metodo lastlndexOf () 296
Resumen 298
Conceptos clave 299
Ejercicios 299
Problemas 300
capitulo 12
Extensión de clases: interfaces, clases internas y enumeraciones 303
12.1 Interfaces 303
12.1.1 Implementación de una interfaz 304
12.1.2 Jerarquía de interfaces 307
12.2 Herencia de clases e implementación de interfaces 307
12.2.1 Variables de tipo interface 307
12.3 Clases abstractas 308
12.4 Clases internas 309
12.4.1 Clases internas miembro 310
12.4.2 Clases internas locales 312
12.4.3 Clases internas static 313
12.5 Clases anónimas 314
12.6 Enumeraciones (clases enum) 316
Resumen 318
Conceptos clave 319
Ejercicios 319
Problemas 320
capítulo 13
Herencia 321
13.1 Clases derivadas 321
13.1.1 Declaración de una clase derivada 324
13.1.2 Diseño de clases derivadas 326
13.1.3 Sobrecarga de métodos en la clase derivada 327
13.2 Herencia publica 328
13.3 Constructores en herencia 331
13.3.1 Sintaxis 332
13.3.2 Referencia a la clase base: super 334
13.4 Conversión entre objetos de clase derivada y clase base 335
13.5 Clases no derivables: atributo final 338
13.6 Herencia múltiple (no soportada en Java) 338
Resumen 339
Conceptos clave 340
Ejercicios 340
Problemas 340
capitulo 14
Polimorfismo 343
14.1 Ligadura 343
14.2 Clases y métodos abstractos 344
14.2.1 Métodos abstractos 347
14.2.2 Ligadura dinámica mediante métodos abstractos 349
14.3 Polimorfismo 351
14.3.1 Uso del polimorfismo 352
14.3.2 Ventajas del polimorfismo 352
14.3.3 Ligadura dinámica 354
14.4 Métodos no derivables: atributo final 355
Resumen 355
Conceptos clave 355
Ejercicios 356
Problemas 356
15.1 Genericidad 357
15.2 Declaración de una clase genérica 357
15.3 Objetos de una clase genérica 358
15.3.1 Restricciones con tipos genéricos 362
15.4 Clase genérica Pila 363
15.4.1 Utilización de la plantilla de una clase genérica 364
15.5 Métodos genéricos 366
15.5.1 Definición de un método genérico 367
15.5.2 Llamada a un método genérico 369
15.6 Genericidad y máquina virtual Java 370
15.7 Limites al tipo genérico 371
15.8 Herencia y genericidad 373
15.8.1 Comodín de genericidad 374
15.9 Genericidad frente a polimorfismo 376
Resumen 376
Conceptos clave 378
Ejercicios 378
capítulo 16
Excepciones 381
16.1 Condiciones de error en programas 381
16.1.1 ¿Por qué considerar las condiciones de error? 382
16.2 Tratamiento de los códigos de error 382
16.3 Manejo de excepciones en Java 384
16.4 Mecanismo del manejo de excepciones en Java 384
16.4.1 Modelo de manejo de excepciones 385
16.4.2 Diseño de excepciones 387
16.4.3 Bloques try 387
16.4.4 Lanzamiento de excepciones 389
16.4.5 Captura de una excepción: catch 390
16.4.6 Clausula finally 392
16.5 Clases de excepciones definidas en Java 394
16.5.1 RuntimeException 395
16.5.2 Excepciones comprobadas 396
16.5.3 Métodos que informan de la excepción 397
16.6 Nuevas clases de excepciones 398
16.7 Especificación de excepciones 399
Resumen 403
Conceptos clave 404
Ejercicios 405
capítulo 17
Archivos y flujos 407
17.1 Flujos y archivos 407
17.2 Clase File 408
17.2.1 Información de un archivo 409
17.3 Flujos y jerarquía de clases 411
17.3.1 Archivos de bajo nivel: FilelnputStreamy FileOutputStream 411
17.3.2 Archivos de datos: DatalnputStream y DataOutputStream 414
17.3.3 Flujos PrintStream 419
17.4 Archivos de caracteres: flujos de tipo Reader y Writer 420
17.4.1 Leer archivos de caracteres: InputStreamReader,
BufferedReader y FileReader 420
17.4.2 Flujos que escriben caracteres: Writer, PrintWriter 422
17.5 Archivos de objetos 425
17.5.1 Clase de objeto persistente 425
17.5.2 Flujos ObjectOutputStream 425
17.5.3 Flujos ObjectlnputStream 426
Resumen 428
Conceptos clave 429
Ejercicios 429
Problemas 429
capítulo 18
Algoritmos de ordenación y búsqueda 431
18.1 Ordenación 432
18.2 Algoritmos de ordenación básicos 433
18.3 Ordenación por selección 434
18.3.1 Codificación del algoritmo de selección 435
18.3.2 Complejidad del algoritmo de selección 435
18.4 Ordenación por inserción 435
18.4.1 Algoritmo de ordenación por inserción 436
18.4.2 Codificación del algoritmo de ordenación por inserción 436
18.4.3 Complejidad del algoritmo de inserción 437
18.5 Ordenación Shell 437
18.5.1 Algoritmo de ordenación Shell 438
18.5.2 Codificación del algoritmo de ordenación Shell 439
18.5.3 Análisis del algoritmo de ordenación Shell 439
18.6 Ordenación de objetos 440
18.6.1 Ordenación 442
18.7 Búsqueda en listas: búsqueda secuencial y binaria 443
18.7.1 Búsqueda secuencial 443
18.7.2 Búsqueda binaria 443
18.7.3 Algoritmo y codificación de la búsqueda binaria 444
18.7.4 Análisis de los algoritmos de búsqueda 446
18.7.5 Complejidad de la búsqueda secuencial 446
18.7.6 Análisis de la búsqueda binaria 446
18.7.7 Comparación de la búsqueda binaria y secuencial 447
Resumen 448
Conceptos clave 448
Ejercicios 449
Problemas 450
Recursividad 453
19.1 La naturaleza de la recursividad 453
19.2 Métodos recursivos 456
19.2.1 Recursividad indirecta: métodos mutuamente recursivos 457
19.2.2 Condición de terminación de la recursión 458
19.3 Recursión versus iteración 458
19.3.1 Directrices en la toma de decisión iteración/recursión 460
19.4 Recursión infinita 460
19.5 Algoritmos divide y vence 461
19.6 Torres de Hanoi 462
19.6.1 Diseño del algoritmo 463
19.6.2 Implementación de las torres de Hanoi 465
19.6.3 Análisis del algoritmo torres de Hanoi 465
19.6.4 Búsqueda binaria 466
19.6.5 Análisis del algoritmo 467
19.7 Ordenación por mezclas: mergesort 467
19.7.1 Algoritmo mergesort 468
Resumen 470
Conceptos clave 471
Ejercicios 471
Problemas 474
capítulo 20
Gráficos I. GUI/Swing 477
20.1 Swing 477
20.1.1 Paquetes de las API de Java 478
20.1.2 Swing versus AWT 479
20.2 Crear un marco o clase JFrame 480
20.2.1 Métodos propios de JFrame j 481
20.3 Administrador de diseño 483
20.3.1 BorderLayout 484
20.3.2 FlowLayout 435
20.3.3 GridLayout 486
20.3.4 BoxLayout 437
20.3.5 BoxLayout-Box 488
20.3.6 Combinar gestores de posicionamiento 490
20.3.7 Desactivar el gestor de posicionamiento 491
20.4 Botones y etiquetas 492
20.4.1 Etiquetas 492
20.4.2 Botones 493
20.4.3 JComboBox 495
20.5 Componentes de texto 496
20.5.1 JTextComponent 496
20.5.2 JTextField, JPasswordField 496
20.5.3 JTextArea 499
Resumen 500
Conceptos clave 501
Ejercicios 501
Problemas 501
capítulo 21
Gráficos II. Componentes y eventos 503
21.1 Ventanas de dialogo 503
21.2 Selección de archivos: JFileChooser 506
21.2.1 Métodos de interés de JFileChooser 507
21.2.1 Filtros de selección de archivos 508
21.3 Eventos 510
21.4 Gestión de eventos 511
21.4.1 Oyente de un evento 512
21.5 Jerarquía de eventos 513
21.6 Componentes gráficos como fuentes de eventos 513
21.6.1 Listeners y eventos 517
Resumen 518
Conceptos clave 518
Ejercicios 519
Problemas 519
capitulo 22
Applets: programación en internet 521
22.1 Concepto de applet 521
22.2 Creación de un applet 522
22.2.1 Creación practica de un applet 524
22.2.2 Documento HTML para applet 526
22.2.3 Compilación y ejecución de un applet 527
22.3 Ciclo de vida de un applet 527
22.4 Dibujar imágenes en un applet 529
22.4.1 void paint (Graphics g) 530
22.4.2 void resize (int ancho, int alto) 530
22.4.3 void repaint () 530
22.5 Clases graphics, font y color 531
22.6 Parámetros en un applet 533
22.7 Seguridad 534
22.8 Conversión de un programa aplicación en un applet 534
22.9 Recursos web 535
Resumen 535
Conceptos clave 536
Ejercicios 536
Problemas 537
Apendice A. Códigos de numeración 539
Apendice B. Códigos ASCII y UNICODE 550
Apendice C. Palabras reservadas de java (versiones 2, 5 y 6) 555
Apendice D. Prioridad de operadores java 557
Apendice E. Bibliotecas de clases de Java SE 6 559
Apendice F. Especificaciones de Java 562
Apendice G. Bibliografía 564
Índice analítico 565
Programación en Java
Programación en Java 6 es una obra que introduce al lector en las técnicas de algoritmos, programación orientada a objetos, técnicas de programación y manejo de gráficos, mediante la utilización del lenguaje de programación Java, y en particular su versión Java SE 6.
Este texto también conduce al lector por las técnicas y notaciones graficas del modelado orientado a objetos, utilizando el Lenguaje Unificado de Modelado (UML). Los autores se centran en los conceptos fundamentales de la programación de computadoras, así como en las propiedades y sintaxis del lenguaje Java.
Algunos de los temas que se incluyen son:
Introducción a las computadoras y a la web, Web 2.0 y cloud computing
• Elementos de un programa en Java 5.0 y Java 6
• Sintaxis del lenguaje de programación Java 6: programación orientada a objetos
Además, la obra cuenta con diferentes recursos que ayudan a reforzar los temas que abarca; entre estos destacan:
• Recuadros que enfatizan notas, precauciones y aspectos a tomar en cuenta para el manejo correcto de las técnicas, lenguaje, gráficos, etcétera
• Recuadro que resalta las reglas de programación
• Recuadro que destaca la sintaxis correcta del lenguaje de programación
• Libras y recursos web
Acerca de los autores
Luis Joyanes Aguilar. Es doctor ingeniero en Informática y doctor en Sociología. Catedrático de Lenguajes y Sistemas Informáticos de la Facultad de Informática de la Universidad Pontificia de Salamanca (España).
Ignacio Zahonero Martínez. Obtuvo un master en Informática y es licenciado en Ciencias Físicas. Es profesor asociado de Programación y estructuras de datos en la Facultad de Informática de la Universidad Pontificia de Salamanca, campus de Madrid.
Director General Mexico: Miguel Angel Toledo Castellanos Editor sponsor: Pablo Eduardo Roig Vazquez Coordinadora editorial: Marcela I. Rocha Martinez Editora de desarrollo: Karen Estrada Arriaga Supervisor de produccion: Zeferino Garcia Garcia