Descripción
Libro digital para leer en línea o en app móvil
Descripción:
Bienvenido a Programación en C, C++, Java y UML, 2ª edición. ¿Qué ha sucedido en el campo de la
informática y de la computación en general desde 2010, año en que se publicó la primera edición? En el
área de computación se han desplegado y consolidado numerosas innovaciones tecnológicas, hoy ya una
realidad auténtica, tanto social como empresarial y de negocios (Cloud Computing, Big Data, Internet de
las cosas, etc.). Y en el área de programación de computadoras, la Web 2.0 se ha consolidado, la programación
web ha pasado a constituir una materia de estudio y de desarrollo profesional en los últimos
semestres de las carreras de ciencias e ingeniería. Y en el caso particular de los lenguajes de programación
y de la disciplina de programación, espina dorsal de los estudios de ingeniería de sistemas, ingeniería de
telecomunicaciones, ingeniería electrónica…, ciencias, etc., cuando escribimos la primera edición, lo hicimos
utilizando las versiones de C99 y C ANSI, C++98 y Java 5 y la joven versión de Java 6 y hoy día se
han consolidado las nuevas e innovadoras versiones de C++11, Java 7 y Java 8 unidas a la actualización
de la versión de C, C11.
Tabla de contenidos:
Front Matter
Prólogo
Introducción
¿Qué necesita para utilizar este libro?
Objetivos
La evolución de C
La evolución de C++
La evolución de Java: Java 2, Java 5, Java 6, Java 7 y, “en camino”, Java 9
Compiladores y compilación de programas: Entornos de Desarrollo Integrados (IDE) C/C++
Java
Entornos integrados de desarrollo
El libro como herramienta docente
Características importantes del libro
¿Cómo está organizado el libro?
Parte I Resolución de problemas con programación de computadoras
Parte II Programación en C
Parte III Lenguaje unificado de modelado: UML 2.5
Parte IV Programar en C++
Parte V. Programar en Java
Apéndices
Centro de recursos en línea (en página web del libro: www.mhhe.com/uni/joyanespcju2e)
Agradecimientos
PARTE I: Resolución de problemas con software
CAPÍTULO 1: Fundamentos de computadoras y de lenguajes de programación
Contenido
Introducción
1.1: Las computadoras en perspectiva
Generaciones de computadoras
1.2: Las computadoras modernas: una breve taxonomía
Figura 1.1
1.3: Estructura de una computadora
Figura 1.2
1.4: Hardware
Figura 1.3
Figura 1.4
Unidad central de proceso (CPU)
Figura 1.5
Memoria de la computadora
¿Sabía que..?: Ejecución
¿Sabía que..?: En la memoria principal se almacenan:
Unidades de medida de memoria
Tabla 1.1: Unidades de medida de almacenamiento.
Caso práctico (un ejemplo comercial)
Dispositivos de entrada y salida
Dispositivos de almacenamiento secundario
Dispositivos de comunicación
1.5: Software: conceptos básicos y clasificación
Figura 1.6
Software de sistema
Software de aplicaciones
1.6: Sistema operativo
Tabla 1.2: Sistemas operativos más utilizados en educación, consumo y en la empresa.
Figura 1.7
1.7: El lenguaje de la computadora
¿Sabía que..?
Representación de la información en las computadoras (códigos de caracteres)
Los lenguajes de programación ensambladores y de alto nivel
Tabla 1.3: Códigos de representación de la información.
Tabla 1.4: Ejemplos de instrucciones en lenguaje ensamblador.
¿Sabía que..?: Ensamblador
¿Sabía que..?: Compilador
El proceso de programación
¿Sabía que..?: Algoritmo
1.8: Internet y la Web
La revolución Web 2.0
Social Media
Desarrollo de programas web
La Web Semántica y la Web 3.0
1.9: Cloud computing (computación en la nube)
Software como servicio (SaaS)
1.10: Movilidad: tecnologías, redes e internet móvil
Redes inalámbricas
Redes móviles
Sistemas operativos móviles
Aplicaciones móviles
1.11: Geolocalización y realidad aumentada
¿Qué es la realidad aumentada?
1.12: Internet de las cosas
1.13: Big data. Los grandes volúmenes de datos
1.14: Lenguajes de programación
Figura 1.8
Traductores de lenguaje: el proceso de traducción de un programa
Intérpretes
Figura 1.9
Figura 1.10
Compiladores
Figura 1.11
La compilación y sus fases
Figura 1.12
Figura 1.13
1.15: Evolución de los lenguajes de programación
1.16: Paradigmas de programación
Figura 1.14
Lenguajes imperativos (procedimentales)
Lenguajes declarativos
Lenguajes orientados a objetos
Resumen
CAPÍTULO 2: Algoritmos, programas y metodología de la programación
Contenido
Introducción
2.1: Resolución de problemas con computadoras: fases
¿Sabía que…?: Características de un algoritmo
Análisis del problema
Figura 2.1
Tabla 2.1: Análisis del problema.
Diseño del problema
Herramientas gráficas y alfanuméricas
Figura 2.2
Figura 2.3
Figura 2.4
Problema 2.1
Ejemplo 2.1
Ejemplo 2.2
Codificación de un programa
Documentación interna
Compilación y ejecución de un programa
Figura 2.5
Verificación y depuración de un programa
Mantenimiento y documentación
2.2: Algoritmo: concepto y propiedades
Figura 2.6
Características de los algoritmos
Ejemplo 2.3
Ejemplo 2.4
Ejemplo 2.5
2.3: Diseño de algoritmos
Figura 2.7
Figura 2.8
2.4: Escritura de algoritmos
2.5: Representación gráfica de los algoritmos
Pseudocódigo
Diagramas de flujo
Tabla 2.2: Símbolos de diagrama de flujo.
Figura 2.9
Figura 2.10
Ejemplo 2.6
Ejemplo 2.7
Ejemplo 2.8
Ejemplo 2.9
Ejemplo 2.10
Diagramas de Nassi-Schneiderman (N-S)
Figura 2.11
Figura 2.12
Ejemplo 2.11
Ejemplo 2.12
2.6: Metodología de la programación
Programación modular
Programación estructurada
Datos locales y datos globales
Técnicas de programación estructurada
Programación orientada a objetos
2.7: Herramientas de programación
Editores de texto
Programa ejecutable
Proceso de compilación/ejecución de un programa
Consola de línea de comandos
Figura 2.13
Entorno de desarrollo integrado
Resumen
Ejercicios
Actividades de aprendizaje
Actividades complementarias
PARTE II: Programación en C
CAPÍTULO 3: El lenguaje C: elementos básicos
Contenido
Introducción
3.1: Estructura general de un programa en C
Conceptos clave
Figura 3.1
¿Sabía que…?
Directivas del preprocesador
Declaraciones globales
Función main()
¿Sabía que…?
Funciones definidas por el usuario
Comentarios
Ejemplo 3.1
Ejemplo 3.2
¿Sabía que…?
3.2: Creación de un programa
Figura 3.2
3.3: El proceso de ejecución de un programa en C
Figura 3.3
Figura 3.4
Figura 3.5
Etapas del proceso
3.4: Depuración de un programa en C
Errores de sintaxis
Errores lógicos
Errores de regresión
Mensajes de error
Errores en tiempo de ejecución
3.5: Pruebas
3.6: Los elementos de un programa en C
Tokens (elementos léxicos de los programas)
Identificadores
Reglas básicas de formación de identificadores
Palabras reservadas
Comentarios
Signos de puntuación y separadores
Archivos de cabecera
3.7: Tipos de datos en C
Tabla 3.1: Tipos de datos simples de C.
Enteros (int)
Tabla 3.2: Tipos de datos enteros.
Declaración de variables
Tabla 3.3: Constantes enteras en tres bases diferentes.
Tabla 3.4: Tipos de datos enteros largos.
Tipos de coma flotante (float/double)
Tabla 3.5: Tipos de datos en coma flotante (Borland C).
Ejemplos
Caracteres (char)
Tabla 3.6: Caracteres secuencias (códigos) de escape.
3.8: El tipo de dato logico
Ejemplo
¿Sabía que…?
Escritura de valores lógicos
3.9: Constantes
Constantes literales
Constantes enteras
Constantes reales
Constantes caracteres
Aritmética con caracteres C
Constantes de cadena
Constantes definidas (simbólicas)
Constantes enumeradas
Constantes declaradas const y volatile
Diferencias entre const y #define
Ventajas de const sobre #define
Desventaja de const frente a #define
¿Sabía que…?
3.10: Variables
Declaración
Ejemplo
Ejemplo
Ejemplo 3.3
Inicialización de variables
Declaración o definición
3.11: Duración de una variable
Variables locales
Variables globales
¿Sabía que…?
3.12: Entradas y salidas
Salida
Ejemplo 3.4
Entrada
¿Sabía que…?
Ejemplo 3.5
Salida de cadenas de caracteres
Ejemplo 3.6
Entrada de cadenas de caracteres
Resumen
Ejercicios
CAPÍTULO 4: Operadores y expresiones
Contenido
Introducción
4.1: Operadores y expresiones
Conceptos clave
Sintaxis
A tener en cuenta
4.2: Operador de asignación
Tabla 4.1: Operadores de asignación de C.
Tabla 4.2: Equivalencia de operadores de asignación.
4.3: Operadores aritméticos
Tabla 4.3: Operadores aritméticos.
Tabla 4.4: Precedencia de operadores matemáticos básicos.
Ejemplo 4.1
Asociatividad
Tabla 4.5: Prioridad y asociatividad.
Ejemplo 4.2
Uso de paréntesis
Precaución
4.4: Operadores de incrementación y decrementación
Tabla 4.6: Operadores de incrementación (++) y decrementación (–).
¿Sabía que…?
Ejemplo 4.3
Ejecución
Ejemplo 4.4
Ejecución
Ejemplo 4.5
Ejecución
4.5: Operadores relacionales
Tabla 4.7: Operadores relacionales de C.
Precaución
Ejemplos
4.6: Operadores lógicos
Tabla 4.8: Operadores lógicos.
Tabla 4.9: Tabla de verdad del operador lógico NOT (!).
Tabla 4.10: Tabla de verdad del operador lógico AND (&&).
Tabla 4.11: Tabla de verdad del operador lógico OR (||).
Ejemplo
¿Sabía que…?
Asignaciones booleanas (lógicas)
Ejemplo
Ejemplo 4.6
Tabla 4.12: Operadores de direcciones.
4.7: Operador condicional ?:
Figura 4.1
¿Sabía que…?
4.8: Operador coma
¿Sabía que…?
4.9: Operadores especiales: ( ),[ ]
El operador ( )
El operador [ ]
4.10: Operador sizeof
Ejemplo 4.7
Ejemplo 4.8
4.11: Conversiones de tipos
Conversión implícita
Reglas
Conversión explícita
4.12: Prioridad y asociatividad
Tabla 4.13: Prioridad de operadores.
Resumen
Ejercicios
Problemas
CAPÍTULO 5: Estructuras de selección: sentencias if y switch
Contenido
Introducción
5.1: Estructuras de control
Conceptos clave
5.2: La sentencia if
Figura 5.1
Ejemplo 5.1
Ejecución
Ejemplo 5.2
Ejemplo 5.3
Ejercicio 5.1
5.3: Sentencia if de dos opciones: if-else
Figura 5.2
Ejemplos
Formatos
Ejemplos
Ejemplo 5.4
Comentario
Ejemplo 5.5
Ejecución
Comentario
Ejemplo 5.6
Ejecución
Comentario
5.4: Sentencias if-else anidadas
Sintaxis:
Ejemplo 5.7
Sangría en las sentencias if anidadas
Formato 1:
Formato 2:
Ejemplos
Ejemplo 5.8
Comparación de sentencias if anidadas y secuencias de sentencias if
Ejemplo 5.9
Análisis
5.5: Sentencia de control switch
Sintaxis
Sintaxis con break
Ejemplo 5.10
Ejemplo 5.11
Ejemplo 5.12
Ejemplo 5.13
Precaución
Ejemplo 5.14
Caso particular de case
üso de sentencias switch en menús
5.6: Expresiones condicionales: el operador ?:
Sintaxis
Ejemplos
Ejemplo 5.15
5.7: Evaluación en cortocircuito de expresiones lógicas
Ejemplo 5.16
Ejemplo 5.17
Precaución
5.8: Puesta a punto de programas
Estilo y diseño
5.9: Errores frecuentes de programación
Resumen
Ejercicios
Problemas
CAPÍTULO 6: Estructuras de control: bucles
Contenido
Introducción
Conceptos clave
6.1: Sentencia while
Figura 6.1
Sintaxis:
A recordar
Ejemplo
Ejemplo
Ejecución
Operadores de incremento y decremento (+ +,–)
Ejemplo 6.1
Ejemplo 6.2
Ejecución
Terminaciones anormales de un bucle (ciclo o llave)
Diseño eficiente de bucles
Bucles while con cero iteraciones
Bucles controlados por centinelas
Ejecución
Bucles controlados por indicadores (banderas)
Ejemplo 6.3
A recordar
Ejemplo 6.4
La sentencia break en los bucles
Ejemplo 6.5
Consejo de programación
Bucles while (true)
Ejecución
6.2: Repetición: el bucle for
Sintaxis
Ejemplo 6.6
Ejemplo 6.7
Ejemplo 6.8
Figura 6.2
Sintaxis
Ejemplo de formato ascendente:
Ejemplo de formato descendente:
Otros intervalos de incremento/decremento
Ejemplos
Ejemplo 6.9
Diferentes usos de bucles for
6.3: Precauciones en el uso de for
Bucles infinitos
Sintaxis
Ejemplo 6.10
Los bucles for vacíos
A recordar
Sentencias nulas en bucles for
Ejecución
Sentencias break y continue
Ejecución
Ejecución
6.4: Repetición: el bucle do-while
Sintaxis
Figura 6.3
Ejemplo 6.11
Diferencias entre while y do-while
Sintaxis
Ejemplo 6.12
Ejemplo 6.13
Ejemplo 6.14
6.5: Comparación de bucles while, for y do-while
Tabla 6.1: Formatos de los bucles.
Comparación de tres bucles
6.6: Diseño de bucles
Final de un bucle
Tamaño de la secuencia de entrada
Preguntar antes de la iteración
Valor centinela
Agotamiento de la entrada
Bucles for vacíos
Ejemplo 6.15
Ejecución
Ejercicio 6.1
6.7: Bucles anidados
Ejemplo 6.16
Ejemplo 6.17
Ejecución
Ejercicio 6.2
6.8: Enumeraciones
Formato
Ejemplo 6.18
Resumen
Ejercicios
Problemas
CAPÍTULO 7: Funciones y recursividad
Contenido
Introducción
Conceptos clave
7.1: Concepto de función
7.2: Estructura de una función
Figura 7.1
Regla de programación
Ejemplo 7.1
Nombre de una función
Tipo de dato de retorno
Nota de programación
Resultados de una función
Consejo
Precaución
Llamada a una función
Nota
Figura 7.2
Precaución
Ejemplo 7.2
Ejemplo 7.3
7.3: Prototipos de las funciones
Nota de programación
Sintaxis
Declaración de una función
Ejemplos
Prototipos con un número no especificado de parámetros
Ejercicio 7.1
7.4: Parámetros de la función
Paso de parámetros por valor
Figura 7.3
Nota
Paso de parámetros por referencia
Diferencias entre paso de variables por valor y por referencia
Nota
Parámetros const de una función
Tabla 7.1: Paso de parámetros en C.
7.5: Funciones en línea, macros con argumentos
Figura 7.4
A recordar
Tabla 7.2: Ventajas y desventajas de macros.
Creación de macros con argumentos
Ejercicio 7.2
7.6: Ámbito (alcance) de una variable
Ámbito del programa
Consejo de programación
Ámbito del archivo fuente
A recordar
Ámbito de una función
Ámbito de bloque
Variables locales
7.7: Clases de almacenamiento
Nota de programación
Variables externas
Variables registro
Variables estáticas
Ejercicio 7.3
Ejecución
7.8: Concepto y uso de funciones de biblioteca
7.9: Funciones de carácter
Tabla 7.3: Funciones de caracteres.
Comprobación alfabética y de dígitos
Ejemplo 7.4
Funciones de prueba de caracteres especiales
Funciones de conversión de caracteres
Ejemplo 7.5
7.10: Funciones numéricas
Funciones matemáticas de carácter general
Ejemplo 7.6
Ejecución
Funciones trigonométricas
Regla de programación
Funciones logarítmicas y exponenciales
Funciones aleatorias
Ejemplo 7.7
Ejemplo 7.8
7.11: Funciones de utilidad
Ejemplo 7.9
7.12: Visibilidad de una función
Figura 7.5
7.13: Compilación separada
Figura 7.6
Consejo de programación
Ejemplo 7.10
A recordar
7.14: Funciones recursivas
A recordar
Ejemplo 7.11
Recursividad indirecta: funciones mutuamente recursivas
Ejemplo 7.12
Condición de terminación de la recursión
7.15: Recursión versus iteración
Nota de ejecución
Consejo de programación
A recordar
Ejemplo 7.13
Solución recursiva
Solución iterativa
Directrices en la toma de decisión iteración/recursión
Nota de programación
7.16: Recursión infinita
Ejemplo 7.14
Resumen
Ejercicios
Problemas
CAPÍTULO 8: Arreglos (arrays), listas y tablas. Cadenas
Contenido
Conceptos clave
Introducción
8.1: Arreglos (arrays)1
Figura 8.1
Declaración de un arreglo o array
Figura 8.2
Precaución
Subíndices de un arreglo
Ejemplos
Almacenamiento en memoria de los arreglos (arrays)
Figura 8.3
A recordar
Precaución
Figura 8.4
A recordar
El tamaño de los arreglos
Verificación del rango del índice de un arreglo
Ejemplo 8.1
8.2: Inicialización de un arreglo (array)
Precaución
Ejemplo 8.2
A recordar
Ejemplo 8.3
Ejemplo 8.4
8.3: Arreglos multidimensionales
Figura 8.5
Precaución
Tabla 8.1: Un arreglo bidimensional.
Inicialización de arreglos multidimensionales
Figura 8.6
Consejo de programación
Acceso a los elementos de los arreglos bidimensionales
Lectura y escritura de elementos de arreglos bidimensionales
Figura 8.7
Acceso a elementos mediante bucles
Ejemplo 8.5
Ejercicio 8.1
Ejecución
Arreglo de más de dos dimensiones
Figura 8.8
Proceso de un arreglo de tres dimensiones
Ejercicio 8.2
8.4: Utilización de arreglos como parámetros
Figura 8.9
Ejemplo 8.6
Ejecución
Ejemplo 8.7
Precauciones
Consejo de programación
Ejemplo 8.8
Paso de cadenas como parámetros
8.5: Concepto de cadena
Figura 8.10
A recordar
Ejemplos
A recordar
Declaración de variables de cadena
Nota de programación
Inicialización de variables de cadena
Ejemplo 8.9
Ejecución
8.6: Lectura de cadenas
Función gets( )
Ejemplo 8.10
Ejecución
Precaución
Ejemplo 8.11
Regla
Función getchar( )
Ejemplo 8.12
Nota
Función putchar( )
Ejercicio 8.3
Ejecución
Función puts( )
Ejercicio 8.4
Ejecución
8.7: La biblioteca string.h
Tabla 8.2: Funciones de cadena de
Utilización del modificador const con cadenas
8.8: Arreglos y cadenas como parámetros de funciones
Ejercicio 8.5
8.9: Asignación de cadenas
Ejemplo 8.13
Función strncpy( )
Ejemplo 8.14
Consejo de programación
8.10: Longitud y concatenación de cadenas
Función strlen( )
Ejemplo 8.15
Ejecución
Funciones strcat( ) y strncat( )
Ejemplo 8.16
Ejemplo 8.17
8.11: Comparación de cadenas
Función strcmp( )
Ejemplo 8.18
Función strncmp( )
Ejemplo 8.19
8.12: Conversión de cadenas a números
Función atoi( )
A recordar
Ejemplo 8.20
Función atof( )
Ejemplo 8.21
Función atol( )
Ejemplo 8.22
Función strtol( ) y strtoul( )
A recordar
Función strtod( )
Ejecución
A recordar
Entrada de números y cadenas
Ejemplo 8.23
Precaución
Resumen
Ejercicios
Problemas
CAPÍTULO 9: Algoritmos de ordenación y búsqueda
Contenido
Conceptos clave
Introducción
9.1: Ordenación
A recordar
9.2: Ordenación por burbuja
Algoritmo de la burbuja
Codificación del algoritmo de la burbuja
Análisis del algoritmo de la burbuja
9.3: Ordenación por selección
Algoritmo de selección
Codificación del algoritmo de selección
9.4: Ordenación por inserción
Figura 9.1
Algoritmo de ordenación por inserción
Codificación del algoritmo de inserción
9.5: Ordenación rápida (quicksort)
A recordar
Ejemplo 9.1
A recordar
Algoritmo quicksort
Ejemplo 9.2
Figura 9.2
Codificación del algoritmo quicksort
Análisis del algoritmo quicksort
Tabla 9.1: Comparación de la complejidad en los métodos de ordenación.
Consejo de programación
9.6: Búsqueda en listas: búsqueda secuencial y binaria
Búsqueda binaria
Ejemplo 9.3
Algoritmo y codificación de la búsqueda binaria
Figura 9.3
Ejemplo 9.4
Análisis de los algoritmos de búsqueda
Complejidad de la búsqueda secuencial
Análisis de la búsqueda binaria
Comparación de la búsqueda binaria y secuencial
Tabla 9.2: Comparación de las búsquedas binaria y secuencial.
A recordar
Resumen
Ejercicios
Problemas
CAPÍTULO 10: Estructuras y uniones
Contenido
Conceptos clave
Introducción
10.1: Estructuras
A recordar
Figura 10.1
Declaración de una estructura
Ejemplo
Definición de variables de estructuras
Otros ejemplos de definición/declaración
Uso de estructuras en asignaciones
Inicialización de una declaración de estructuras
El tamaño de una estructura
Ejemplo 10.1
Ejecución
10.2: Acceso a estructuras
Almacenamiento de información en estructuras
Acceso a una estructura de datos mediante el operador punto
Acceso a una estructura de datos mediante el operador apuntador
Consejo de programación
Lectura de información de una estructura
Recuperación de información de una estructura
10.3: Sinónimo de un tipo de datos: typedef
Ejemplo
Sintaxis
Ejemplo
Ejemplo
A recordar
10.4: Estructuras anidadas
Figura 10.2
Ejemplo de estructuras anidadas
A recordar
10.5: Arreglos de estructuras
10.6: Arreglos como miembros
Ejemplo 10.2
10.7: Utilización de estructuras como parámetros
Ejemplo 10.3
A recordar
10.8: Uniones
10.9: Tamaño de estructuras y uniones
Resumen
Ejercicios
Problemas
CAPÍTULOS 11: Apuntadores (punteros)
Contenido
Conceptos clave
Introducción
11.1: Direcciones en memoria
Ejemplo 11.1
Ejemplo 11.2
Ejecución
11.2: Concepto de apuntador (puntero)1
A recordar
Ejemplo 11.3
Ejecución
Declaración de apuntadores
A recordar
Inicialización2 (iniciación) de apuntadores
A recordar
Figura 11.1
Precaución
Indirección de apuntadores
Figura 11.2
Figura 11.3
Tabla 11.1: Operadores de apuntadores.
A recordar
Apuntadores y verificación de tipos
Precaución
11.3: Apuntadores null y void
Precaución
11.4: Apuntadores a apuntadores
Figura 11.4
Ejemplo 11.4
11.5: Apuntadores y arreglos
Nombres de arreglos como apuntadores
Ventajas de los apuntadores
Figura 11.5
11.6: Arreglos (arrays)de apuntadores
Figura 11.6
Inicialización de un arreglo de apuntadores a cadenas
11.7: Apuntadores a cadenas
Apuntadores versus arreglos
Figura 11.7
A recordar
11.8: Aritmética de apuntadores
A recordar
Ejemplo 11.5
Una aplicación de apuntadores: conversión de caracteres
11.9: Apuntadores constantes frente a apuntadores a constantes
Apuntadores constantes
Figura 11.8
Apuntadores a constantes
A recordar
Apuntadores constantes a constantes
Consejo de programación
Ejemplo 11.6
Regla de programación
11.10: Apuntadores como argumentos de funciones
A recordar
11.11: Apuntadores a funciones
A recordar
Figura 11.9
Ejemplo 11.7
Inicialización de un apuntador a una función
Ejemplo 11.8
Ejemplo 11.9
11.12: Apuntadores a estructuras
Ejemplo 11.10
11.13: Asignación dinámica de la memoria
Precaución
Almacén libre (free store)
Figura 11.10
11.14: Función de asignación de memoria malloc( )
A recordar
Figura 11.11
Ejemplo 11.11
Precaución
A recordar
Ejemplo 11.12
Asignación de memoria de un tamaño desconocido
Uso de malloc( ) para arreglos multidimensionales
Ejemplo 11.13
11.15: La función free( )
Sintaxis de llamada a free( )
Ejemplo 11.14
11.16: Funciones de asignación de memoria calloc( ) y realloc( )
Función calloc()
Sintaxis de llamada a calloc( )
Función realloc( )
Ejemplo 11.15
Ejemplo 11.16
Sintaxis de llamada a realloc( )
11.17: Reglas de funcionamiento de la asignación dinámica
Resumen
Ejercicios
Problemas
CAPÍTULO 12: Entradas y salidas por archivos
Contenido
Introducción
12.1: Flujos
Conceptos clave
12.2: Apuntador (puntero) file
A recordar
Ejemplo 12.1
A recordar
12.3: Apertura de un archivo
Ejemplo 12.2
Ejemplo 12.3
Ejemplo 12.4
Modos de apertura de un archivo
Ejemplo 12.5
NULL y EOF
Ejemplo 12.6
Cierre de archivos
Ejemplo 12.7
Volcado del buffer fflush( )
A recordar
12.4: Funciones de entrada/salida para archivos
Funciones putc( ) y fputc( )
Ejercicio 12.1
Funciones getc( ) y fgetc( )
Ejercicio 12.2
Funciones fputs( ) y fgets( )
Ejemplo 12.8
Ejercicio 12.3
Funciones fprintf( ) y fscanf( )
Ejercicio 12.4
Función feof( )
Ejemplo 12.9
Función rewind( )
Ejemplo 12.10
12.5: Archivos binarios en c
Ejemplo 12.11 “
Función de salida fwrite( )
Ejemplo 12.12
Ejercicio 12.5
A recordar
Función de lectura fread( )
Ejemplo 12.13
Ejercicio 12.6
12.6: Funciones para acceso aleatorio
Función fseek( )
Ejemplo 12.14
Función ftell( )
Ejemplo 12.15
Cambio de posición: fgetpos( ) y fsetpos( )
Ejercicio 12.7
12.7: Datos externos al programa con argumentos de main( )
Ejemplo 12.16
Ejercicio 12.8
Resumen
Ejercicios
Problemas
PARTE III: Lenguaje unificado de modelado UML 2.5
CAPĺTULO 13: Programación orientada a objetos y UML 2.5
Contenido
Introducción
Conceptos clave
13.1: Programación orientada a objetos
Consejo de programación
Consejo de programación
Figura 13.1
Objeto
Envío de un mensaje a un objeto
Objetos
Tipos abstractos de datos: Clases
Instancias
Métodos
A recordar
Ejemplos
Consejo de programación
Figura 13.2
13.2: Modelado e identificación de objetos
Estado
Comportamiento
Identidad
Figura 13.3
13.3: Propiedades fundamentales de la orientación a objetos
Abstracción
La abstracción en software
Encapsulamiento y ocultación de datos
Herencia
Figura 13.4
Figura 13.5
Reutilización o reusabilidad
Reutilización de código
Reescritura de código reusable
Polimorfismo
Lenguajes de programación orientada a objetos
13.4: Modelado de aplicaciones: UML
Lenguaje de modelado
13.5: Modelado y modelos
Categorías de modelado
13.6: Diagramas de UML 2.5
Figura 13.6
Diagramas de clase
Diagramas de componentes
Diagramas de estructura compuesta
Diagramas de despliegue
Diagramas de paquetes
Diagramas de objetos
Diagramas de actividad
Diagramas de comunicación
Diagramas de descripción de la interacción
Diagramas de secuencia
Diagramas de máquinas de estados
Diagramas de tiempo
Diagramas de casos de uso
A recordar
Desarrollo de software orientado a objetos con UML
13.7: Bloques de construcción (componentes) de UML 2.5
Elementos estructurales
Clase
Interfaz
Colaboración
Caso de uso
Componente
Nodo
Elementos de comportamiento
Interacción
Máquina de estado
Elementos de agrupación
Paquete
Elementos de notación (notas)
Nota
13.8: Especificaciones de UML
13.9: Historia de UML
Línea de tiempo (cronología, timeline)
Resumen
Ejercicios
CAPĺTULO 14: Diseño de clases y objetos: representaciones gráficas en UML
Contenido
Introducción
Conceptos clave
14.1: Diseño y representación gráfica de objetos en UML
Nota
Figura 14.1
Ejemplos de objetos
Representación gráfica en UML
Figura 14.2
Figura 14.3
Figura 14.4
Características de los objetos
A recordar
Estado
A recordar
Nombre de objetos
Figura 14.5
Figura 14.6
Ejemplos de objetos
Múltiples instancias de un objeto
Figura 14.8
Nota
Figura 14.7
Evolución de un objeto
Figura 14.9
A recordar
Comportamiento
Figura 14.10
Sintaxis operaciones
A recordar
Figura 14.11
Ejemplo
Figura 14.12
Definición
Regla
Identidad
Figura 14.13
Figura 14.14
Los mensajes
Figura 14.15
Figura 14.16
Figura 14.17
Figura 14.18
Tipos de mensajes
Ejemplo
Responsabilidad y restricciones
14.2: Diseño y representación gráfica de clases en UML
A recordar
Regla
A recordar
Representación gráfica de una clase
Figura 14.19
Ejemplos
Figura 14.20
Figura 14.21
Figura 14.22
Números complejos
Figura 14.23
Aparato de televisión
Figura 14.24
Estructuras de datos
Declaración de una clase
Figura 14.25
Especificación de una clase
Formato
Reglas de visibilidad
Figura 14.26
Ejemplo
Notas de ejecución
Ejemplo
Nota
14.3: Declaración de objetos de clases
Formato
Ejemplo
Sintaxis
Las dos etapas citadas anteriormente son:
Acceso a miembros de la clase: encapsulamiento
Figura 14.27
Tabla 14.1: Visibilidad.
A recordar
A recordar
Nota
Declaración de métodos
Notación y asignación de valores a los miembros
Formato:
Código Java
Tipos de métodos
Resumen
Ejercicios
CAPĺTULO 15: Relaciones entre clases: delegaciones, asociaciones, agregaciones, herencia
Contenido
Introducción
Conceptos clave
15.1: Relaciones entre clases
Figura 15.1
Tabla 15.1: Relaciones de clases.
15.2: Dependencia
Figura 15.2
15.3: Asociación
Figura 15.3
Figura 15.4
Figura 15.5
Figura 15.6
Regla
Figura 15.7
Figura 15.8
Figura 15.9
Figura 15.10
Multiplicidad
Figura 15.11
Tabla 15.2: Multiplicidad en asociaciones.
Ejemplo 15.1
Restricciones en asociaciones
Ejemplo 15.2
Figura 15.12
Figura 15.13
Asociación cualificada
Asociaciones reflexivas
Figura 15.14
Diagrama de objetos
Figura 15.15
Enlaces
Figura 15.16
Clases de asociación
Figura 15.17
A recordar
Ejemplo 15.3
Figura 15.18
Criterios de diseño
Ejercicio 15.1
Análisis
Figura 15.19
Asociaciones ternarias
Ejercicio 15.2
Asociaciones cualificadas
Ejemplo 15.4
Figura 15.21
Figura 15.22
Asociaciones reflexivas
Ejemplo 15.5
Figura 15.23
Figura 15.24
Restricciones en asociaciones
Figura 15.25
Figura 15.26
Ejemplo 15.6
Figuras 15.27
Ejemplo 15.7
Figura 15.28
Ejemplo 15.8
Enlaces
Figura 15.29
15.4: Agregación
Figura 15.30
Figura 15.31
Ejemplo 15.9
Figura 15.32
Restricciones en las agregaciones
Figura 15.33
Composición
Figura 15.34
Ejemplo 15.10
Figura 15.35
Ejemplo 15.11
15.5: Jerarquía de clases: generalización y especialización
Figura 15.36
Figura 15.37
Figura 15.38
Figura 15.39
Regla
Jerarquías de generalización/especialización
Figura 15.40
Figura 15.41
Figura 15.42
Figura 15.43
A recordar
Síntesis de generalización/Especialización [Muller 97]
15.6: Herencia: clases derivadas
Figura 15.44
Herencia simple
Figura 15.45
Herencia múltiple
Figura 15.46
Regla
Niveles de herencia
Figura 15.47
Ejemplo 15.12
Figura 15.48
Figura 15.49
Regla
Ejemplo 15.13
Ejemplo 15.14
Declaración de una clase derivada
Consideraciones de diseño
15.7: Accesibilidad y visibilidad en la herencia
Norma
Tabla 15.3: Acceso a variables y funciones según tipo de herencia.
Herencia pública
Formato
Herencia privada
Herencia protegida
Tabla 15.4: Tipos de herencia y accesos que permiten.
Ejercicio 15.3
15.8: Un caso de estudio especial: herencia múltiple
Figura 15.50
Regla
Regla
Ejemplo 15.15
Características de la herencia múltiple
Ambigüedades
Ejemplo 15.16
Precaución
Regla
Ejemplo 15.17
Nota
15.9: Clases abstractas
Ejercicio 15.4
Figura 15.51
Ejercicio 15.5
Figura 15.52
Operaciones abstractas
Figura 15.53
Resumen
Ejercicios
PARTE IV: Programar en C++
CAPÍTULO 16: De Ca C++
Contenido
Introducción
Conceptos clave
16.1: El primer programa C++
Comentarios en C++
El preprocesador de C++ y el archivo iostream
Entrada y salida
Tabla 16.1
Ejemplo 16.1
Regla
Archivos de cabecera
Regla
16.2: Espacios de nombres
Regla 1
Ejemplo 16.2
16.3: Tipos de datos nativos
Tipos de datos básicos/primitivos
Tabla 16.2: Tipos aritméticos en C++.
Tabla 16.3: Tipos integrales.
Tabla 16.4: Tipos con signo.
Tipos de coma flotantes (reales)
Constantes literales
Tipos apuntadores
Ejemplo 16.3
Declaración de apuntadores
Ejemplo 16.4
Tipos constantes
Referencias
Ejemplo 16.5
Nombres de tipos definidos: typedef
Tipos enumeración
Arrays (arreglos)
Sintaxis
Ejemplo 16.6
A recordar
Tipos carácter
Cadenas
Sintaxis
Ejemplo 16.7
16.4: Operadores
Operadores aritméticos
Tabla 16.5: Operadores aritméticos.
Operadores relacionales y lógicos
Tabla 16.6: Operadores relacionales y lógicos.
Tabla 16.7: Operador lógico OR (||).
Tabla 16.8: Operador lógico AND (&&).
Ejemplo 16.8
Operadores de asignación
Tabla 16.9: Operadores de asignación.
Operadores incremento y decremento
Tabla 16.10: Operadores de incremento y decremento.
Ejemplo 16.9
Operador condicional
Ejemplo 16.10
Operador sizeof
Operador coma
Ejemplo 16.11
16.5: Conversiones de tipos
Tabla 16.11: Reglas de conversión y algunos problemas potenciales.
Conversión en expresiones
A recordar
Ejemplo 16.12
Conversiones en paso de argumentos
Conversiones explícitas
Ejemplo 16.13
Operador new
Sintaxis completa del operador new
Ejemplo 16.14
Precaución
Operador delete
Ejemplo 16.15
Precaución
Ejemplo 16.16
16.6: Estructuras de control
Secuencia y sentencias compuestas
Selección y repetición
Sentencia if
Ejemplo 16.17
Sentencia Switch
Regla
Sentencia while
Sintaxis
Sentencia do-while
Ejemplo 16.18
Sentencia for
Sintaxis
Ejemplo 16.19
Ejemplo 16.20
Sentencias break y continue
Estructura de break y continue
16.7: Funciones
Funciones de biblioteca
Ejemplo 16.21
Definición de una función (función definida por el usuario)
Sintaxis
Ejemplo 16.22
Regla
Argumentos de la función: paso por valor y por referencia
Paso por valor
Paso por referencia
Ejemplo 16.23
La sentencia return
Ejemplo 16.24
La sentencia using y el espacio de nombres std
Directiva #include
Resumen
Ejercicios
Problemas
CAPÍTULO 17: Clases y objetos. Sobrecarga de operadores
Contenido
Conceptos clave
Introducción
17.1: Clases y objetos
¿Qué son objetos?
¿Qué son clases?
Figura 17.1
17.2: Definición de una clase
Sintaxis
Regla práctica
Tabla 17.1: Secciones pública y privada de una clase.
Nota
Figura 17.2
Ejemplo 17.1
Reglas prácticas en la declaración de una clase
¿Control de acceso a los miembros: público o privado?
Ejemplo 17.2
Ejemplo 17.3
Las funciones son públicas y los datos privados
Nota
Ejemplo 17.4
Ejemplo 17.5
Objetos de clases
Formato
A recordar
Ejemplo
Acceso a miembros de la clase: encapsulamiento
Figura 17.3
Formato
Tabla 17.2: Visibilidad.
A recordar
A recordar
Nota
Datos miembros (miembros dato)
Ejemplo 17.6
Ejemplo 17.7
Definición de una función miembro fuera de la clase
Ejemplo 17.8
Funciones miembro
Figura 17.4
Ejemplo 17.9
Ejemplo 17.10
Ejercicio 17.1
Llamadas a funciones miembro
Ejemplo 17.11
Regla
Mensajes
Ejercicio 17.2
Tipos de funciones miembro
Funciones en línea y fuera de línea
Ejercicio 17.3
Ejecución del programa
La palabra reservada inline
Nombres de parámetros de funciones miembro
Regla
Consejo
Implementación de clases
Archivos de cabecera y de clases
Figura 17.5
Opciones de compilación
Ejemplo
Ejemplo
17.3: Constructores
Reglas
Ejemplo 17.12
Caso particular
Constructor por defecto
Ejemplo 17.13
Regla
Precaución
Constructores alternativos
Ejemplo
Ejemplo
Ejemplo 17.14
Constructores sobrecargados
Ejemplo 17.15
Constructor de copia
Ejemplo 17.16
Regla
Ejemplo
Inicialización de miembros en constructores
Ejemplo 17.17
Ejercicio 17.4
17.4: Destructores
Ejemplo 17.18
Regla
Ejemplo 17.19
Clases compuestas
17.5: Sobrecarga de funciones miembro
Requisitos para la sobrecarga
17.6: Funciones amigas
Ejemplo 17.20
Ejercicio 17.5
Nota
Ejemplo 17.21
17.7: Sobrecarga de operadores
Tabla 17.3: Operadores que se pueden sobrecargar.
Formato
Reglas
Ejemplo 17.22
17.8: Sobrecarga de operadores unitarios
Sobrecargar un operador unitario como función miembro
Sobrecarga de un operador unitario como una función amiga
17.9: Sobrecarga de operadores binarios
Sobrecarga de un operador binario como función miembro
Sobrecarga de un operador binario como una función amiga
17.10: Conversión de datos y operadores de conversión de tipos
Conversión entre tipos básicos
Conversión entre objetos y tipos básicos
17.11: Errores de programación frecuentes
Ejemplo 17.23
Resumen
Ejercicios
Problemas
CAPÍTULO 18: Clases derivadas: herencia y polimorfismo
Contenido
Introducción
Conceptos clave
18.1: Clases derivadas
Figura 18.1
Regla
Ejemplo 18.1
Ejemplo 18.2
Declaración de una clase derivada
Ejercicio 18.1
Consideraciones de diseño
18.2: Tipos de herencia
Norma
Herencia pública
Tabla 18.1: Acceso a variables y funciones según tipo de herencia.
Formato
Ejemplo 18.3
Figura 18.2
Regla
Herencia privada
Herencia protegida
Tabla 18.2: Tipos de herencia y accesos que permiten.
Ejemplo 18.4
Operador de resolución de ámbito
Constructores-inicializadores en herencia
Regla
Ejemplo 18.5
Ejemplo 18.6
Sintaxis del constructor
Ejemplo 18.7
Sintaxis de la implementación de una función miembro
18.3: Destructores
Ejemplo 18.8
18.4: Herencia múltiple
Figura 18.3
Regla
Ejemplos
Ejemplo
Regla
Ejemplo 18.9
Características de la herencia múltiple
Ambigüedades
Ejemplo 18.10
Precaución
Regla
Ejemplo 18.11
Dominación (prioridad)
Ejemplo 18.12
Regla
Inicialización de la clase base
Precaución
Regla
Ejemplo 18.13
18.5: Ligadura
18.6: Funciones virtuales
Ligadura dinámica mediante funciones virtuales
Un apuntador (puntero) a una clase derivada es también un puntero a la clase base
A recordar
18.7: Polimorfismo
El polimorfismo sin ligadura dinámica
El polimorfismo con ligadura dinámica
Figura 18.4
18.8: Uso del polimorfismo
18.9: Ligadura dinámica frente a ligadura estática
18.10: Ventajas del polimorfismo
Resumen
Ejercicios
CAPĺTULO 19: Genericidad: plantillas (templates)
Contenido
Introducción
Conceptos clave
19.1: Genericidad
19.2: Conceptos fundamentales de plantillas en C++
Ejemplo 19.1
Terminología
19.3: Plantillas de funciones
Fundamentos teóricos
Figura 19.1
Definición de plantilla de funciones
Sintaxis:
Reglas prácticas
Ejemplo 19.2
Ejemplo 19.3
Ejemplo 19.4
Plantilla de función class (typename)
Ejemplo 19.5
Un ejemplo de función plantilla
Plantillas de función ordenar y buscar
Una aplicación práctica
Precaución
Problemas en las funciones plantilla
19.4: Plantillas de clases
Definición de una plantilla de clase
Sintaxis:
Ejemplo 19.6
Instanciación de una plantilla de clases
Figura 19.2
Utilización de una plantilla de clase
Declaración de la plantilla Pila
Implementación de la pila
Instanciación de la plantilla de clases
Nota
Argumentos de plantillas
19.5: Una plantilla para manejo de pilas de datos
Figura 19.3
Definición de las funciones miembro
Utilización de una clase plantilla
Instanciación de una clase plantilla con clases
Uso de las plantillas de funciones con clases
19.6: Modelos de compilación de plantillas4
Modelo de compilación de inclusión
Ejemplo 19.7
Modelo de compilación separada
Ejemplo 19.8
Nota
19.7: Plantillas frente a polimorfismo
Resumen
Ejercicios
CAPÍTULO 20: Excepciones
Contenido
Introducción
Conceptos clave
20.1: Condiciones de error en programas
¿Por qué considerar las condiciones de error?
20.2: El tratamiento de los códigos de error
20.3: Manejo de excepciones en C++
Precaución
Inconvenientes
20.4: El mecanismo de manejo de excepciones
Clases de excepciones
Partes de la manipulación de excepciones
20.5: El modelo de manejo de excepciones
El modelo de manejo de excepciones
Figura 20.1
Ejemplo 20.1
Diseño de excepciones
Bloques try
Normas
Precaución
Ejemplo 20.2
Lanzamiento de excepciones
Ejemplo 20.3
Captura de una excepción: catch
Formatos
Funcionamiento
Ejemplo 20.4
Ejemplo 20.5
20.6: Especificación de excepciones
Especificación de excepciones vacía
Ejemplo
Regla
Ejemplo 20.6
Ejemplo 20.7
20.7: Excepciones imprevistas
Normas de especificación de excepciones
20.8: Aplicaciones prácticas de manejo de excepciones
Calcular las raíces de una ecuación de segundo grado
Aplicación 20.1
Control de excepciones en una estructura tipo pila
Figura 20.2
Resumen
Ejercicios
PARTE V: Programar en Java
CAPÍTULO 21: De C/C++ a Java 6/7/8
Contenido
Introducción
Conceptos clave
21.1: Historia del lenguaje Java: de Java 1.0 a Java 8
Tabla 21.1: Versiones de Java.*
21.2: El lenguaje de programación Java
Sitio web de referencia
Tipos de programas Java
21.3: Un programa sencillo en Java
Figura 21.1
Nota
Sintaxis
A recordar
21.4: Tipos de datos
21.5: Variables, constantes y asignaciones
Tabla 21.2: Tipos primitivos.*
Sintaxis
Ejemplo
Inicialización de variables
Sintaxis
Ejemplo
Errores típicos
Inicialización de una variable en una declaración
Sintaxis
Ejemplo
Asignación multiple; combinación de asignación con operadores aritméticos
Ejemplo:
Constantes
Regla
Ejemplo
Ejemplo
Definición de constantes en un método o en una clase
Ejemplo
21.6: Operadores y expresiones
Operadores aritméticos
Ejemplo
Operadores relacionales y lógicos
Operadores de manipulación de bits
Ejemplo
Precedencia de operadores
21.7: Funciones matemáticas
Ejemplo
Tabla 21.3: Métodos matemáticos.
21.8: Cadenas
Concatenación de cadenas
Ejemplo
Las cadenas son inmutables
Subcadenas de la clase String
Figura 21.2
Ejemplo
Longitud y comparación de cadenas
Ejemplo
Sintaxis
Ejemplo
Sintaxis
Precaución
Ejemplo
Métodos de la clase String
Ejemplo
Ejemplo
Ejemplo
21.9: Códigos de caracteres ASCII y Unicode
A recordar
21.10: Entrada y salida
Salida a la consola
Sintaxis
Ejemplo
Ejemplo
A recordar
Salida formateada con printf
Ejemplo
Entrada
Sintaxis de entrada de teclado utilizando Scanner
Sintaxis
Ejemplo
21.11: Flujo de control
Bloques de sentencias
Sintaxis de bloque de sentencias
Ejemplo
Ejemplo
Sentencias condicionales
Sintaxis sentencia if
Sintaxis sentencia if-else
Ejemplo
Sentencias if-else multicamino
Sintaxis
Ejemplo
Sentencia switch
Sintaxis
Ejemplo
Precaución
Bucles (Lazos)
Sentencia while
Sintaxis
Ejemplo
Sentencia do-while
Sintaxis
Ejemplo
Sentencia for
Sintaxis
Ejemplo
Regla
Sentencias break y continue
Sintaxis
Ejemplo
Ejemplo
Nota
Ejemplo de continue
Método exit( )
Ejemplo
El bucle “for each”
Sintaxis mejorada del bucle for
Ejemplo
Nota
21.2: Arreglos (arrays)
Regla
Sintaxis
Ejemplos
Ejemplo
Regla
Acceso a los elementos de un arreglo
Ejemplo
Arreglos y objetos
Advertencia
Inicialización de arreglos y arreglos anónimos
Arreglos multidimensionales
Sintaxis
Ejemplos
Arreglos irregulares o triangulares
Ejemplo
Ejemplo
Listas de arreglos (ArrayList)
Ejemplo
Bucle for each
Sintaxis
Ejemplo
Regla
Ejemplo
Ejemplo
21.13: Applets
Recomendación
21.4: Creación de un applet
Figura 21.3
Ejemplo 21.1
Figura 21.4
Ejemplo 21.2: Muestra la cadena “Hoy es el día de la Tierra” en un applet.
Figura 21.5
Documento HTML para applet
21.5: Ciclo de vida de un applet
void init ( )
void start ( )
void stop ( )
void destroy ( )
Figura 21.6
Ejemplo 21.3
Dibujar imágenes en un applet
Figura 21.7
void paint (Graphics g)
void resize (int ancho, int alto)
void repaint ( )
Ejemplo 21.4
Clase Graphics
Parámetros en un applet
Seguridad
Resumen
Ejercicios
Problemas
CAPÍTULO 22: Programación orientada a objetos en Java. Clases y objetos
Contenido
Introducción
Conceptos clave
22.1: Clases y objetos
¿Qué son objetos?
¿Qué son clases?
22.2: Declaración de una clase
Formato
Ejemplo 22.1
Ejemplo 22.2
Objetos
Formato para definir una referencia
Formato para crear un objeto
A recordar
Visibilidad de los miembros de la clase
Formato
Figura 22.1
Ejemplo 22.3
Tabla 22.1: Visibilidad, “x” indica que el acceso está permitido.
A recordar
Métodos de una clase
Figura 22.2
Ejemplo 22.4
Ejercicio 22.1
Implementación de las clases
Clases públicas
Advertencia
22.3: Paquetes
Sentencia package
Formato
import
Formato
Nota
Ejemplo 22.5
22.4: Constructores
Reglas
Ejemplo 22.6
Constructor por defecto
Regla
Ejemplo 22.7
Precaución
Constructores sobrecargados
Regla
Ejemplo 22.8
22.5: Recolección de objetos
Método finalize( )
Regla
Ejercicio 22.2
22.6: Objeto que envía el mensaje: this
22.7: Miembros static de una clase
Variables static
Ejercicio 22.3
Métodos static
Ejemplo 22.9
22.8: Clase Object
equals ( )
toString ( )
Operador instanceof
A recordar
22.9: Tipos abstractos de datos en Java
Implementación del TAD Conjunto
Aplicación del tipo abstracto de dato Conjunto
Resumen
Ejercicios
Problemas
CAPÍTULO 23: Programación orientada a objetos en Java. Herencia y polimorfismo
Contenido
Introducción
Conceptos clave
23.1: Clases derivadas
Figura 23.1
Regla
Ejemplo 23.1
Ejemplo 23.2
Declaración de una clase derivada
Ejercicio 23.1
Diseño de clases derivadas
Sobrecarga de métodos en la clase derivada
Ejemplo 23.3
Ejecución
23.2: Herencia pública
Tabla 23.1: Acceso a variables y métodos según visibilidad.
Formato
Ejercicio 23.2
Ejecución
Regla
23.3: Constructores en herencia
Regla
Ejemplo 23.4
Ejecución
Sintaxis
Sintaxis
Ejemplo 23.5
Referencia a la clase base: super
Regla
Ejemplo 23.6
23.4: Métodos y clases no derivables: atributo final
23.5: Conversiones entre objetos de clase base y clase derivada
Figura 23.2
Ejercicio 23.3
Ejecución
23.6: Métodos abstractos
Clases abstractas
Ejemplo 23.7
Normas de las clases abstractas
Ligadura dinámica mediante métodos abstractos
Norma
Ejercicio 23.4
Ejecución
23.7: Polimorfismo
Uso del polimorfismo
Ventajas del polimorfismo
23.8: Interfaces
Sintaxis
Regla
Ejemplo 23.8
Implementación de una interface (interfaz)
Ejercicio 23.5
Múltiples interfaces
Sintaxis
Regla
Jerarquía de interface (interfaz)
Sintaxis
Herencia de clases e implementación de interface
Regla
Variables interface
Ejemplo 23.9
Resumen
Ejercicios
Problemas
CAPÍTULO 24: Colecciones
Contenido
Introducción
24.1: Colecciones en Java
Conceptos clave
Ejemplo 24.1
Norma
Tipos de colecciones
Figura 24.1
24.2: Clases de utilidades: Arrays y Collections
Clase Arrays
Ordenación de arrays
Norma
Ejemplo 24.2
Ejecución
Búsqueda de una clave
Asignación de un elemento
Ejemplo 24.3
Clase Collections
Ordenación y búsqueda
Máximo y mínimo
Sincronización
Conversión a solo lectura
Utilidades
Ejemplo 24.4
Ejecución
24.3: Comparación de objetos: Comparable y Comparator
Comparable
Nota
Comparator
Norma
24.4: Vector y Stack
Vector
Stack
Ejemplo 24.5
24.5: Iteradores de una colección
Enumeration
Ejemplo 24.6
Ejecución
Iterator
Norma
Ejemplo 24.7
24.6: Listas
Figura 24.2
ArrayList
Ejemplo 24.8
24.7: Colecciones parametrizadas
Declaración de un tipo parametrizado
Sintaxis
Resumen
Ejercicios
Problemas
CAPÍTULO 25: Multitarea y excepciones
Contenido
Conceptos clave
Introducción
25.1: Manejo de excepciones en Java
Precaución
25.2: Mecanismo del manejo de excepciones
El modelo de manejo de excepciones
Figura 25.1
Ejemplo 25.1
Diseño de excepciones
Bloques try
Normas
Precaución
Ejemplo 25.2
Lanzamiento de excepciones
Ejemplo 25.3
Captura de una excepción: catch
Formato
Precaución
Funcionamiento
Ejemplo 25.4
Cláusula finally
Ejemplo 25.5
25.3: Clases de excepciones definidas en Java
RuntimeException
Excepciones comprobadas
Precaución
Métodos que informan de la excepción
Ejemplo 25.6
Nota
25.4: Nuevas clases de excepciones
25.5: Especificación de excepciones
Ejemplo
Regla
Regla
Ejemplo
Ejercicio 25.1
25.6: Multitarea
Utilización de la multitarea
25.7: Creación de hilos
Ejemplo 25.7
A recordar
Ejemplo 25.8
Criterios a seguir para elegir cómo crear un hilo
25.8: Estados de un hilo, ciclo de vida de un hilo
Figura 25.2
Ejemplo 25.9
25.9: Prioridad entre hilos
25.10: Hilos daemon
25.11: Sincronización
Ejemplo 25.10
Resumen
Ejercicios
Back Matter
APÉNDICE A: Estructura de un programa en Java y C/C++. Entornos de desarrollo integrados (Java 7, Java 8 y C++11)
A.1: Estructura general de un programa en C/C++ y Java
A.2: Proceso de programación en Java
Máquina virtual Java (JVM)
Figura A.1
Figura A.2
Prácticas de programación
Kit de desarrollo Java: JDK y JDK8
Tabla A.1: Versiones de Java Development Kits (JDK).
Direcciones de Oracle
Tabla A.2: Productos de Java de Oracle.
A.3: Entornos de desarrollo integrados (Java, C y C++)
Herramientas de desarrollo
NetBeans
Eclipse
BlueJ
Otros entornos de desarrollo
A.4: Compilación sin entornos de desarrollo: Java y C/C++
Compiladores de Java
Compiladores de C++ (versión C++11 y futura C++14)
APÉNDICE B: Representación de la información en las computadoras
Representación de textos
Representación de valores numéricos
Representación de enteros
Tabla B.1: Tipos enteros reales, en C++.
Representación de números reales
Ejemplos
Ejemplos
Representación de caracteres
Representación de imágenes
Tabla B.2: Mapas de bits.
Tabla B.3: Mapas de vectores.
Representación de sonidos
APÉNDICE C: Códigos ASCII y UNICODE
C.1: Código ASCII
Tabla C.1: Código ASCII de la computadora personal PC.
C.2: Código Unicode
Referencias web
Bibliografía
APÉNDICE D: Palabras reservadas de Java 5 a 8, C y C++11
D.1: Java
Tabla D.1: Palabras clave (keywords) de Java.
Palabras reservadas de Java con significado especial
Tabla D.2: Palabras reservadas especiales.
Palabras reservadas (keywords) de C/C++
Tabla D.3: Palabras reservadas de C y C++.
Palabras nuevas de C++11
APÉNDICE E: Prioridad de operadores C/C++ y Java
Índice analítico
Valoraciones
No hay valoraciones aún.