1. 1,. Tipos de datos simples
1.1. 1.1 Rango de un número entero.
1.1.1. En c++, el estándar marca que un dato de tipo int debe poder almacenar como mínimo valores entre -32767 y +32767
1.2. 1.2. otros tamaños de números enteros.
1.2.1. Cuando se necesita utilizar datos cuyos valores están por encima de los 2000millones, o bien si se desea optimizar el espacio en memoria, habrá que optar por otros tipos de números enteros.
1.3. 1.3. Enteros positivos y negativos.
1.3.1. Todos los tipos de datos enteros se toman con signo.
1.4. 1.4. Carácter.
1.4.1. El tipo de datos char permite almacenar un carácter. Sise desea asignar o comparar un valora los mismos, será necesario añadir comillas simples.
1.5. 1.5. verdadero o falso: booleanos.
1.5.1. Es posible que una variable tenga los valores verdadero o falso.
1.6. 1.6. Contacto con las cadenas de texto.
1.6.1. En algunos lenguajes de programación, una cadena de texto es también un tipo de dato nativo tan sencillo de manejar como los números.
2. 2. Registros
2.1. 2.1. Datos formados por varios campos.
2.1.1. Un registro es una agrupación de datos, los cuales no son necesariamente del mismo tipo. Estos se definen con la orden struct.
2.1.2. Es posible declarar primero cómo van a ser los registros dando un nombre a ese tipo de datos y mas adelante definir las variables de ese tipo.
2.2. 2.2. Arrays de registros
2.2.1. Un struct permite guardar varios datos de una persona. Es posible almacenar los datos de varias personas si se combina el uso de los struct con el de los arrays.
3. 3. Clases
3.1. 3.1 Apariencia de una clase
3.1.1. Un registro (struct) permite agrupar datos de distintos tipos, lo que se asemeja a nuestra forma de proceder en el mundo real.
3.2. 3.2 Herencia
3.2.1. Una de las principales ventajas de la programación orientada a objetos es que, aunque en programas simples puede parecer necesario escribir más líneas, cuando el programa se hace más grande,resulta sencillo reutilizar frangmentos del mismo escritos anteriormente
3.3. 3.3 Ocultación de detalles
3.3.1. No se considera buena idea que los atributos, como el string texto del ejemplo anterior, sean públicos. Es preferible crear Métodos auxiliares que permitan leer su valor .
4. 4. Cadenas de texto: la clase string
4.1. 4.1. Definición y lectura desde teclado
4.1.1. Una clase muy útil, incorporada en las últimas versiones de C++, es string, que se usa para manipular cadenas de texto. Su manejo básico es similar al de cualquier otro tipo de dato nativo del sistema.
4.2. 4.2. Longitud de la cadena
4.2.1. Para averiguar la cantidad de letras que contiene una cadena de texto, añadiremos. length a su nombre.ñ
4.3. 4.3. Acceder letra a letra.
4.3.1. Se puede acceder a una cierta posición de una cadena, de igual forma que si se tratara de un array, por medio de corchetes o a través de .at
4.4. 4.4. Subcadenas
4.4.1. Es posible extraerun fragmento de uan cadena empleando .substr(inicio, longitud).
4.5. 4.5. Unir cadenas
4.5.1. Existe la posibilidad de unir dos cadenas con el símbolo de la suma.
4.6. 4.6. Comparar
4.6.1. En C++ existen varios modos de comparar cadenas. Una de ellas supone utilizar .compare, pero otra, más natural, consiste en aplicar el mismo método que se utilizaría para comparar números.
4.7. 4.7. Buscar
4.7.1. Se puede comprobar si una cadena contiene un cierto texto usando .find. Sino aparece, el valor obtenido será string::npos, como se observa en este ejemplo:
5. 5.- Estructuras dinámicas: Las clases queue, stack, list, vector y map.
5.1. 5.1. Estructaras dinámicas frente a estructuras estáticas.
5.1.1. Son estructuras estáticas diseñadas para no cambiar de tamaño, a diferencia de las estruturas dinámicas.
5.2. 5.2. Una cola
5.2.1. Una de las estructuras dinámicas más sencillas es la cola. En una cola, los nuevos datos se introducen siempre en la última posición y se obtienen de la primera, de modo que se recuperan los datos en el mismo orden en el que se introdujeron.
5.3. 5.3. Una pila
5.3.1. Las pilas son estructuras en las que los datos se recuperan por la última posición, por lo que siempre se obtienen en el orden inverso en que se guardaron.
5.4. 5.4. Una lista con acceso secuencial
5.4.1. En C++ existe una clase list en la que es especialmente fácil insertar elementos al principio y al final, así como leerlos desde el principio y desde el final.
5.5. 5.5. Lista con acceso directo.
5.5.1. En ocasiones será interesante accede, con cierta frecuencia, a datos de cualquier posición, como si se tratara de un array, pero sin las limitaciones de tamaño de estos. Para ello, C++ incluye la clase vector, diseñada para facilitar el acceso a cualquier posición.
5.6. 5.6. Tablas Hash
5.6.1. Sirven para acceder comodamente a los datos del programa a partir de una posicoón numérica; en ocasiones, será deseable poder usar un texto como índice.
6. 6.- Programas a partir de varios fuentes.
6.1. 6.1. Estructura básica de un programa a partir de varios fuentes.
6.1.1. Como modelo de implementación de un programa a partir de varias fuentes distintas, se va a a partir de ejemplo que incluía las clases Titulo y Titulo centrado.
6.1.1.1. En primer lugar, será necesario dividir cada clase en dos ficheros:
6.1.1.1.1. Un fichero cabecera: contendrá los atributos y el prototioo de los métodos.
6.1.1.1.2. Un fichero de implementación: contendrá los detalles reales del funcionamiento de los métodos.
6.2. 6.2. Los problemas de las inclusiones múltiples.
6.2.1. La implementación dela clase Titulo no es difícil; basta con detallar el cuerpo de sus funciones:
6.2.2. Por lo contrario, el fichero de cabecera presenta dos complicaciones:
6.2.2.1. No es recomendable añadir un using namespace std
6.2.2.2. El fichero titulo.h se incluye tanto desde main como desde titulo centrado.h.
6.3. 6.3. Compilar un proyecto formado por varias fuentes.
6.3.1. En windows, será necesario crear un proyecto y añadir al mismo los ficheros correspondientes. Por ejemplo,con Orwell Dev-C++.
7. 7.- Diseño de clases.
7.1. 7.1. Descripción del problema.
7.1.1. Uno de los métodos con los que se puede plantear dicha descomposición en clases consiste en elaborar,como primer paso, una descripción del problema en lenguaje natural.
7.2. 7.2. Búsqueda de objetos y acciones.
7.2.1. El segundo paso consiste en emplear dos colores distintos para destacarlos nombres y los verbos que aparecen.
7.3. 7.3. Asignación de atributos y métodos a objetos
7.3.1. A partir de la descripción anterior,habrá que deducir qué clases de objetos aparecen en el programa, cómo se relacionan entre ellos y qué acciones debe realizar cada uno.
7.4. 7.4. Representación como diagrama de clases
7.4.1. Para representar toda esta información existe un esdtándar denominado diagrama de clases.
7.4.1.1. Así cada tipo de objeto se representará dentro de un rectángulo dividido horizontalmente en tres partes:
7.4.1.1.1. La superior
7.4.1.1.2. La intermedia
7.4.1.1.3. La inferior