Sin embargo, no debe pensarse que esta forma de programación resuelve todos los problemas de una forma sencilla y rápida. Para conseguir buenos resultados, es preciso dedicar un tiempo mayor al análisis y al diseño; pero no será un tiempo perdido, ya que redundará en el menor tiempo empleado en la realización de aplicaciones futuras.
Existen varios lenguajes que permiten escribir un programa orientado a objetos y entre ellos se encuentra C++. Se trata de un lenguaje de programación basado en el lenguaje C, estandarizado (ISO/IEC 14882), ampliamente difundido y con una biblioteca estándar C++ que lo ha convertido en un lenguaje universal, de propósito general, y muy utilizado tanto en el ámbito profesional como en el educativo.
Programación orientada a objetos con C++ es un libro:
Totalmente actualizado al estándar ISO/IEC 14882:2017-2020, relativo al lenguaje C++ estándar.
Con ejemplos claros y sencillos, fáciles de entender, que ilustran los fundamentos de la programación C++.
Que le permitirá aprender programación orientada a objetos.
Que le enseñará a trabajar con plantillas, excepciones, archivos e hilos.
Y con el que aprenderá a desarrollar aplicaciones orientadas a objetos.
Incluye material adicional con todos los ejemplos realizados y con el software necesario para que el lector pueda reproducirlos durante el estudio.
CAPÍTULO 1. C++ versus C .
HISTORIA DEL LENGUAJE C++
RESUMEN DE LA BIBLIOTECA DE C++
Entrada/salida .
Cadenas
Contenedores .
Iteradores .
Algoritmos .
Números
Diagnósticos .
Utilidades generales .
Localización .
Soporte del lenguaje .
Concurrencia .
LENGUAJE C++ Y COMPONENTES DE LA BIBLIOTECA
Estructura de un programa
Tipos, constantes, variables y estructuras .
Referencias
Clases .
Plantillas .
Contenedores de la biblioteca de C++ .
Cadenas de caracteres
Matrices
ASIGNACIÓN DINÁMICA DE MEMORIA .
MANIPULACIÓN DE ERRORES
VIII PROGRAMACIÓN ORIENTADA A OBJETOS CON C+
AÑADIR UN MENÚ DE OPCIONES .
EVITAR LAGUNAS DE MEMORIA
COMPILACIÓN SEPARADA .
CAPÍTULO 2. PROGRAMACIÓN ORIENTADA A OBJETOS
PENSAR EN OBJETOS
Clases y objetos .
Mensajes y métodos .
DISEÑO DE UNA CLASE DE OBJETOS .
CONSTRUCTORES
HERENCIA .
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
CAPÍTULO 3. OTRAS APORTACIONES DE C++
FUNCIONES
Partes de una declaración de función .
PALABRAS RESERVADAS NUEVAS .
COMENTARIOS
OPERADORES C++ .
PRIORIDAD Y ORDEN DE EVALUACIÓN
CONVERSIÓN EXPLÍCITA DEL TIPO DE UNA EXPRESI
CONVERSIÓN DEL TIPO void*
TIPOS DE DATOS PREDEFINIDOS
TIPOS DE DATOS DEFINIDOS POR EL USUARIO
IDENTIFICADORES Y ESTRUCTURAS
ÁMBITO DE UNA ESTRUCTURA .
DECLARACIÓN DE CONSTANTES
CALIFICADOR VOLATILE .
FLEXIBILIDAD EN LAS DECLARACIONES
Declaración en una sentencia .
EL OPERADOR DE RESOLUCIÓN DEL ÁMBITO (::)
ESPECIFICACIONES DE ENLACE .
ARGUMENTOS POR OMISIÓN EN UNA FUNCIÓN
FUNCIONES EN LÍNEA .
FUNCIONES constexpr
MACROS .
FUNCIONES SOBRECARGADAS
Ambigüedades .
OPERADORES SOBRECARGADOS .
REFERENCIAS
PASO DE PARÁMETROS POR REFERENCIA
CONTENIDO IX
REFERENCIA COMO VALOR RETORNADO
ESPACIOS DE NOMBRES
Directriz using
EXCEPCIONES
LOS OPERADORES new Y delete
Operador new .
Memoria insuficiente .
Operador delete
Lagunas de memoria .
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
CAPÍTULO 4. BIBLIOTECA ESTÁNDAR
ENTRADA Y SALIDA .
Flujos de salida .
Flujos de entrada
Estado de un flujo .
Limpiar el buffer asociado con un flujo
Validar un dato de entrada .
Entrada/salida con formato .
Entrada de caracteres
Entrada de cadenas de caracteres .
Redirección de la entrada y de la salida .
BIBLIOTECA ESTÁNDAR DE PLANTILLAS
String .
Constructores
Iteradores
Acceso a un carácter .
Asignación .
Conversiones a cadenas estilo C
Comparaciones
Inserción
Concatenación
Búsqueda .
Reemplazar .
Subcadenas .
Tamaño .
Operaciones de E/S .
Conversiones .
Vector .
Acceso a los elementos .
Iteradores
X PROGRAMACIÓN ORIENTADA A OBJETOS CON C++
Tamaño .
Eliminar elementos .
Buscar elementos .
Insertar elementos .
Comparaciones
Map
ALGUNAS UTILIDADES .
Conversiones elementales .
Configuración regional .
Colecciones de valores heterogéneos
Soporte para fechas y horas
Números seudo-aleatorios .
EJERCICIOS RESUELTOS .
CAPÍTULO 5. CLASES .
DEFINICIÓN DE UNA CLASE
Atributos
Métodos de una clase .
Control de acceso a los miembros de la clase
Acceso público .
Acceso privado .
Acceso protegido .
Clases en archivos de cabecera .
IMPLEMENTACIÓN DE UNA CLASE
MÉTODOS SOBRECARGADOS
ARGUMENTOS POR OMISIÓN .
PROBAR LA CLASE
EL PUNTERO IMPLÍCITO this
MÉTODOS Y OBJETOS CONSTANTES .
AUTO REFERENCIA
INICIACIÓN DE UN OBJETO
Constructor
Delegación de constructores
Constructor explicit .
Asignación de objetos
Constructor copia
SEMÁNTICAS DE MOVIMIENTO Y COPIA .
FUNCIONES PREDETERMINADAS Y ELIMINADAS .
DESTRUCCIÓN DE OBJETOS
Destructor .
PUNTEROS COMO ATRIBUTOS DE UNA CLASE .
Listas de iniciación .
CONTENIDO XI
Semántica de movimiento
Vector de vectores .
MIEMBROS STATIC DE UNA CLASE .
Atributos static .
Acceder a los atributos static .
Métodos static .
FUNCIONES AUXILIARES .
ATRIBUTOS QUE SON OBJETOS
CLASES INTERNAS
INTEGRIDAD DE LOS DATOS
DEVOLVER UN PUNTERO O UNA REFERENCIA .
MATRICES DE OBJETOS
FUNCIONES AMIGAS DE UNA CLASE
PUNTEROS A MIEMBROS DE UNA CLASE .
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
CAPÍTULO 6. OPERADORES SOBRECARGADOS .
SOBRECARGAR UN OPERADOR
Utilizando una función externa .
Utilizando un método de una clase
UNA CLASE PARA NÚMEROS RACIONALES
SOBRECARGA DE OPERADORES BINARIOS
Sobrecarga de operadores de asignación .
Sobrecarga de operadores aritméticos .
Aritmética mixta .
Sobrecarga de operadores de relación .
Métodos adicionales
Sobrecarga del operador de inserción .
Sobrecarga del operador de extracción
SOBRECARGA DE OPERADORES UNARIOS .
Incremento y decremento
Operadores unarios/binarios.
CONVERSIÓN DE TIPOS DEFINIDOS POR EL USUARIO
Conversión mediante constructores
Operadores de conversión .
Ambigüedades .
ASIGNACIÓN .
INDEXACIÓN .
LLAMADA A FUNCIÓN
DESREFERENCIA
SOBRECARGA DE LOS OPERADORES new y delete
XII PROGRAMACIÓN ORIENTADA A OBJETOS CON C++
Sobrecarga del operador new
Sobrecarga del operador delete .
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
CAPÍTULO 7. CLASES DERIVADAS .
CLASES DERIVADAS Y HERENCIA
DEFINIR UNA CLASE DERIVADA .
Control de acceso a la clase base
Control de acceso a los miembros de las clas
Qué miembros hereda una clase derivada .
ATRIBUTOS CON EL MISMO NOMBRE
REDEFINIR MÉTODOS DE LA CLASE BASE .
CONSTRUCTORES DE CLASES DERIVADAS
COPIA DE OBJETOS .
DESTRUCTORES DE CLASES DERIVADAS .
JERARQUÍA DE CLASES
FUNCIONES AMIGAS .
PUNTEROS Y REFERENCIAS .
Conversiones implícitas
Restricciones
Conversiones explícitas
MÉTODOS VIRTUALES
Control override y final .
Cómo son implementados los métodos virtuales
Constructores virtuales
Destructores virtuales .
INFORMACIÓN DE TIPOS DURANTE LA EJECUCIÓN
Operador dynamic_cast
Operador typeid.
POLIMORFISMO .
CLASES ABSTRACTAS
HERENCIA MÚLTIPLE
Clases base virtuales
Redefinición de métodos de clases base virtu
Conversiones entre clases
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
CAPÍTULO 8. PROGRAMACIÓN GENÉRICA
DEFINICIÓN DE UNA PLANTILLA
FUNCIONES GENÉRICAS
CONTENIDO XIII
Especialización de plantillas de función .
Sobrecarga de plantillas de función
ORGANIZACIÓN DEL CÓDIGO DE LAS PLANTILLAS
Modelo de inclusión
Modelo de instanciación explícita
CLASES GENÉRICAS .
Declaración previa de una clase genérica .
Especialización de plantillas de clase
Derivación de plantillas .
Otras características de las plantillas
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
CAPÍTULO 9. EXCEPCIONES
EXCEPCIONES DE C++ .
MANEJAR EXCEPCIONES
Lanzar una excepción .
Capturar una excepción .
Excepciones derivadas
Capturar cualquier excepción .
Relanzar una excepción
CREAR EXCEPCIONES
Especificación de excepciones
Excepciones no esperadas .
FLUJO DE EJECUCIÓN .
CUÁNDO UTILIZAR EXCEPCIONES Y CUÁNDO NO
DISEÑO SEGURO CON EXCEPCIONES
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
CAPÍTULO 10. GESTIÓN DE RECURSOS .
PUNTEROS INTELIGENTES
Clases de punteros inteligentes
unique_ptr .
shared_ptr .
weak_ptr .
Operar con unique_ptr
Miembros de una clase de tipo unique_ptr .
Colecciones STL de elementos de tipo unique_
Operar con shared_ptr
Operar con weak_ptr
EJERCICIOS RESUELTOS .
XIV PROGRAMACIÓN ORIENTADA A OBJETOS CON C++
EJERCICIOS PROPUESTOS
CAPÍTULO 11. FLUJOS
VISIÓN GENERAL DE LOS FLUJOS DE E/S
BÚFERES
Flujo, búfer, archivo y programa .
VISIÓN GENERAL DE UN ARCHIVO .
DESCRIPCIÓN DE LOS BÚFERES Y FLUJOS
Clase streambuf
Clase filebuf
Clase ostream
Clase istream
Clase iostream .
Clase ofstream .
Clase ifstream .
Clase fstream
E/S CARÁCTER A CARÁCTER
E/S DE CADENAS DE CARACTERES .
ENTRADA/SALIDA CON FORMATO .
E/S UTILIZANDO REGISTROS .
ABRIENDO ARCHIVOS PARA ACCESO SECUENCIAL .
Un ejemplo de acceso secuencial
ACCESO ALEATORIO A ARCHIVOS EN EL DISCO
CADENAS DE CARACTERES
Un ejemplo con flujos de cadena
ESCRIBIR DATOS EN LA IMPRESORA .
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
CAPÍTULO 12. PROGRAMACIÓN CONCURRENTE.
CONCEPTO DE PROCESO
HILOS
Estados de un hilo .
Cuándo se debe crear un hilo .
BIBLIOTECAS C/C++ PARA PROGRAMAR CON HILOS .
CREACIÓN Y DESTRUCCIÓN DE HILOS
Pasando argumentos a la función asociada con
Espera activa y pasiva .
Objetos función
Finalización de un hilo
SINCRONIZACIÓN DE HILOS
Secciones críticas .
CONTENIDO XV
Exclusión mutua
Mutex reentrante .
Gestión genérica de un mutex .
Semáforos
Problema del productor-consumidor con semáfo
Variables de condición .
Problema del productor-consumidor
PLANIFICACIÓN DE HILOS .
INTERBLOQUEO .
UNA CLASE CHilo
PROGRAMACIÓN DE ALTO NIVEL UTILIZANDO HILOS
Futuros y promesas .
Tareas empaquetadas
Tareas asíncronas
EJERCICIOS RESUELTOS .
EJERCICIOS PROPUESTOS
APÉNDICE A. NOVEDADES DE C++ .
LITERALES PUROS
INFERENCIA DE TIPOS
OPERADOR decltype
ÁNGULOS DERECHOS EN EL USO DE PLANTILLAS .
SENTENCIA for APLICADA A COLECCIONES .
LISTA DE INICIACIÓN
ENUMERACIONES
ENTERO MUY LARGO .
PUNTERO NULO .
EXPRESIONES CONSTANTES GENERALIZADAS .
CONVERSIONES IMPLÍCITAS
CONVERSIONES EXPLÍCITAS
REFERENCIAS RVALUE Y LVALUE
SEMÁNTICAS DE MOVIMIENTO Y COPIA .
DECLARACIÓN ALTERNATIVA DE FUNCIÓN .
PLANTILLAS variadic
CONCEPTO .
ENVOLTORIO PARA UNA REFERENCIA .
PUNTEROS INTELIGENTES
EXPRESIONES LAMBDA .
PROGRAMACIÓN CONCURRENTE .
APÉNDICE B. LA BIBLIOTECA DE C .
ENTRADA Y SALIDA .
XVI PROGRAMACIÓN ORIENTADA A OBJETOS CON C++
CADENAS DE CARACTERES
CONVERSIÓN DE DATOS
FUNCIONES MATEMÁTICAS
FUNCIONES DE FECHA Y HORA
MANIPULAR BLOQUES DE MEMORIA .
ASIGNACIÓN DINÁMICA DE MEMORIA .
ARCHIVOS .
MISCELÁNEA .
APÉNDICE C. ENTORNOS DE DESARROLLO .
MICROSOFT VISUAL STUDIO
Instalación
Escribir una aplicación
Depurar la aplicación
A tener en cuenta
Interfaz de línea de órdenes .
CREAR UNA BIBLIOTECA .
CODEBLOCKS .
Instalación
MinGW
CodeBlocks .
Escribir una aplicación
LINUX: INTERFAZ DE LÍNEA DE ÓRDENES
El depurador gdb de GNU
APÉNDICE D. CÓDIGOS DE CARACTERES
ÍNDICE .