Curso de programación en C++
EUI (UPV)
Valencia, 17 al 28 de Julio de 1995
Apuntes de clase
Sergio Talens Oliag
,
,Contenidos
BASES TEÓRICAS. INTRODUCCIÓN A LA POO.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
INTRODUCCIÓN...............................................................................................................................1
PARADIGMAS DE PROGRAMACIÓN.....................................................................................................1
PROGRAMACIÓN IMPERATIVA ..........................................................................................................2
Tipos de datos .............................................................................................................................2
Operadores y expresiones...............................................................................................................3
Algoritmos y estructuras de control ................................................................................................. 4
Funciones y procedimientos...........................................................................................................4
Constantes y variables .................................................................................................................. 5
PROGRAMACIÓN MODULAR .............................................................................................................6
TIPOS ABSTRACTOS DE DATOS..........................................................................................................6
PROGRAMACIÓN ORIENTADA A OBJETOS ...........................................................................................7
Objetos y mensajes ...................................................................................................................... 7
Clases........................................................................................................................................7
Herencia y polimorfismo...............................................................................................................7
Programación con objetos..............................................................................................................7
EL LENGUAJE C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
INTRODUCCIÓN...............................................................................................................................9
CONCEPTOS BÁSICOS ...................................................................................................................... 9
Estructura de los programas............................................................................................................9
Tipos de datos y operadores .......................................................................................................... 10
Estructuras de control.................................................................................................................. 11
Funciones................................................................................................................................. 12
Soporte a la programación modular................................................................................................ 12
Soporte a los Tipos de Datos Abstractos......................................................................................... 13
Soporte a la programación Orientada a Objetos ................................................................................ 13
TIPOS DE DATOS, OPERADORES Y EXPRESIONES................................................................................. 13
Tipos de datos ........................................................................................................................... 13
Tipos elementales ...................................................................................................................... 13
Tipos enumerados ...................................................................................................................... 14
Tipos derivados.......................................................................................................................... 15
Tipos compuestos...................................................................................................................... 16
Constantes (literales) .................................................................................................................. 18
Variables.................................................................................................................................. 19
Conversiones de tipos................................................................................................................. 20
Operadores y expresiones............................................................................................................. 21
ESTRUCTURAS DE CONTROL ........................................................................................................... 24
Estructuras de selección............................................................................................................... 24
Estructuras de repetición.............................................................................................................. 26
Estructuras de salto..................................................................................................................... 27
FUNCIONES .................................................................................................................................. 28
Declaración de funciones.............................................................................................................. 28
Definición de funciones............................................................................................................... 28
Paso de parámetros..................................................................................................................... 29
Parámetros array ........................................................................................................................ 29
Retorno de valores...................................................................................................................... 30
Sobrecarga de funciones............................................................................................................... 30
Parámetros por defecto ................................................................................................................ 30
Parámetros indefinidos ................................................................................................................ 31
Recursividad.............................................................................................................................. 32
Punteros a funciones................................................................................................................... 33
La función main() ...................................................................................................................... 33
VARIABLES DINÁMICAS................................................................................................................. 34
Punteros y direcciones................................................................................................................. 34
El puntero NULL....................................................................................................................... 35
Punteros void............................................................................................................................ 35
Aritmética con punteros .............................................................................................................. 36
Punteros y parámetros de funciones ............................................................................................... 37
iii
, Punteros y arrays........................................................................................................................ 37
Operadores new y delete...............................................................................................................38
Punteros y estructuras ................................................................................................................. 39
Punteros a punteros .................................................................................................................... 39
PROGRAMACIÓN EFICIENTE ............................................................................................................40
Estructura de los programas..........................................................................................................40
El preprocesador......................................................................................................................... 42
Funciones inline ........................................................................................................................ 43
Inclusión de rutinas en ensamblador ............................................................................................... 43
Eficiencia y claridad de los programas............................................................................................. 44
CLASES........................................................................................................................................44
Introducción ..............................................................................................................................44
Clases y miembros ..................................................................................................................... 45
Métodos estáticos y funciones amigas ............................................................................................ 50
Construcción y destrucción...........................................................................................................51
HERENCIA Y POLIMORFISMO...........................................................................................................56
Clases derivadas o subclases .........................................................................................................56
Clases abstractas ........................................................................................................................ 60
Herencia múltiple....................................................................................................................... 61
Control de acceso ....................................................................................................................... 63
Gestión de memoria.................................................................................................................... 64
SOBRECARGA DE OPERADORES .......................................................................................................64
Funciones operador..................................................................................................................... 64
Conversiones de tipos ................................................................................................................. 66
Operadores y objetos grandes ........................................................................................................67
Asignación e inicialización...........................................................................................................67
Subíndices ................................................................................................................................68
Llamadas a función..................................................................................................................... 68
Dereferencia...............................................................................................................................69
Incremento y decremento..............................................................................................................69
Sobrecarga de new y delete ...........................................................................................................69
Funciones amigas o métodos ........................................................................................................70
TEMPLATES ..................................................................................................................................70
Genericidad................................................................................................................................70
Funciones genéricas.................................................................................................................... 71
Clases genéricas......................................................................................................................... 72
MANEJO DE EXCEPCIONES ..............................................................................................................73
Programación y errores................................................................................................................ 73
Tratamiento de excepciones en C++ (throw - catch - try).................................................................... 73
ENTRADA Y SALIDA ....................................................................................................................... 76
Introducción ..............................................................................................................................76
Objetos Stream .......................................................................................................................... 76
Entrada y salida.......................................................................................................................... 76
Ficheros ...................................................................................................................................79
PROGRAMACIÓN EN C++................................................................................................................ 80
El proceso de desarrollo ...............................................................................................................80
Mantenibilidad y documentación....................................................................................................80
Diseño e implementación.............................................................................................................81
Elección de clases....................................................................................................................... 81
Interfaces e implementación..........................................................................................................81
LIBRERÍAS DE CLASES.................................................................................................................... 81
Diseño de librerías...................................................................................................................... 82
Clases Contenedor...................................................................................................................... 82
Clases para aplicaciones...............................................................................................................83
Clases de Interface ...................................................................................................................... 83
Eficiencia temporal y gestión de memoria .......................................................................................83
Estandarización .......................................................................................................................... 84
RELACIÓN C/C++.......................................................................................................................... 84
No se puede usar en ANSI C ........................................................................................................84
Diferencias entre C y C++ ...........................................................................................................85
iv
EUI (UPV)
Valencia, 17 al 28 de Julio de 1995
Apuntes de clase
Sergio Talens Oliag
,
,Contenidos
BASES TEÓRICAS. INTRODUCCIÓN A LA POO.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
INTRODUCCIÓN...............................................................................................................................1
PARADIGMAS DE PROGRAMACIÓN.....................................................................................................1
PROGRAMACIÓN IMPERATIVA ..........................................................................................................2
Tipos de datos .............................................................................................................................2
Operadores y expresiones...............................................................................................................3
Algoritmos y estructuras de control ................................................................................................. 4
Funciones y procedimientos...........................................................................................................4
Constantes y variables .................................................................................................................. 5
PROGRAMACIÓN MODULAR .............................................................................................................6
TIPOS ABSTRACTOS DE DATOS..........................................................................................................6
PROGRAMACIÓN ORIENTADA A OBJETOS ...........................................................................................7
Objetos y mensajes ...................................................................................................................... 7
Clases........................................................................................................................................7
Herencia y polimorfismo...............................................................................................................7
Programación con objetos..............................................................................................................7
EL LENGUAJE C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
INTRODUCCIÓN...............................................................................................................................9
CONCEPTOS BÁSICOS ...................................................................................................................... 9
Estructura de los programas............................................................................................................9
Tipos de datos y operadores .......................................................................................................... 10
Estructuras de control.................................................................................................................. 11
Funciones................................................................................................................................. 12
Soporte a la programación modular................................................................................................ 12
Soporte a los Tipos de Datos Abstractos......................................................................................... 13
Soporte a la programación Orientada a Objetos ................................................................................ 13
TIPOS DE DATOS, OPERADORES Y EXPRESIONES................................................................................. 13
Tipos de datos ........................................................................................................................... 13
Tipos elementales ...................................................................................................................... 13
Tipos enumerados ...................................................................................................................... 14
Tipos derivados.......................................................................................................................... 15
Tipos compuestos...................................................................................................................... 16
Constantes (literales) .................................................................................................................. 18
Variables.................................................................................................................................. 19
Conversiones de tipos................................................................................................................. 20
Operadores y expresiones............................................................................................................. 21
ESTRUCTURAS DE CONTROL ........................................................................................................... 24
Estructuras de selección............................................................................................................... 24
Estructuras de repetición.............................................................................................................. 26
Estructuras de salto..................................................................................................................... 27
FUNCIONES .................................................................................................................................. 28
Declaración de funciones.............................................................................................................. 28
Definición de funciones............................................................................................................... 28
Paso de parámetros..................................................................................................................... 29
Parámetros array ........................................................................................................................ 29
Retorno de valores...................................................................................................................... 30
Sobrecarga de funciones............................................................................................................... 30
Parámetros por defecto ................................................................................................................ 30
Parámetros indefinidos ................................................................................................................ 31
Recursividad.............................................................................................................................. 32
Punteros a funciones................................................................................................................... 33
La función main() ...................................................................................................................... 33
VARIABLES DINÁMICAS................................................................................................................. 34
Punteros y direcciones................................................................................................................. 34
El puntero NULL....................................................................................................................... 35
Punteros void............................................................................................................................ 35
Aritmética con punteros .............................................................................................................. 36
Punteros y parámetros de funciones ............................................................................................... 37
iii
, Punteros y arrays........................................................................................................................ 37
Operadores new y delete...............................................................................................................38
Punteros y estructuras ................................................................................................................. 39
Punteros a punteros .................................................................................................................... 39
PROGRAMACIÓN EFICIENTE ............................................................................................................40
Estructura de los programas..........................................................................................................40
El preprocesador......................................................................................................................... 42
Funciones inline ........................................................................................................................ 43
Inclusión de rutinas en ensamblador ............................................................................................... 43
Eficiencia y claridad de los programas............................................................................................. 44
CLASES........................................................................................................................................44
Introducción ..............................................................................................................................44
Clases y miembros ..................................................................................................................... 45
Métodos estáticos y funciones amigas ............................................................................................ 50
Construcción y destrucción...........................................................................................................51
HERENCIA Y POLIMORFISMO...........................................................................................................56
Clases derivadas o subclases .........................................................................................................56
Clases abstractas ........................................................................................................................ 60
Herencia múltiple....................................................................................................................... 61
Control de acceso ....................................................................................................................... 63
Gestión de memoria.................................................................................................................... 64
SOBRECARGA DE OPERADORES .......................................................................................................64
Funciones operador..................................................................................................................... 64
Conversiones de tipos ................................................................................................................. 66
Operadores y objetos grandes ........................................................................................................67
Asignación e inicialización...........................................................................................................67
Subíndices ................................................................................................................................68
Llamadas a función..................................................................................................................... 68
Dereferencia...............................................................................................................................69
Incremento y decremento..............................................................................................................69
Sobrecarga de new y delete ...........................................................................................................69
Funciones amigas o métodos ........................................................................................................70
TEMPLATES ..................................................................................................................................70
Genericidad................................................................................................................................70
Funciones genéricas.................................................................................................................... 71
Clases genéricas......................................................................................................................... 72
MANEJO DE EXCEPCIONES ..............................................................................................................73
Programación y errores................................................................................................................ 73
Tratamiento de excepciones en C++ (throw - catch - try).................................................................... 73
ENTRADA Y SALIDA ....................................................................................................................... 76
Introducción ..............................................................................................................................76
Objetos Stream .......................................................................................................................... 76
Entrada y salida.......................................................................................................................... 76
Ficheros ...................................................................................................................................79
PROGRAMACIÓN EN C++................................................................................................................ 80
El proceso de desarrollo ...............................................................................................................80
Mantenibilidad y documentación....................................................................................................80
Diseño e implementación.............................................................................................................81
Elección de clases....................................................................................................................... 81
Interfaces e implementación..........................................................................................................81
LIBRERÍAS DE CLASES.................................................................................................................... 81
Diseño de librerías...................................................................................................................... 82
Clases Contenedor...................................................................................................................... 82
Clases para aplicaciones...............................................................................................................83
Clases de Interface ...................................................................................................................... 83
Eficiencia temporal y gestión de memoria .......................................................................................83
Estandarización .......................................................................................................................... 84
RELACIÓN C/C++.......................................................................................................................... 84
No se puede usar en ANSI C ........................................................................................................84
Diferencias entre C y C++ ...........................................................................................................85
iv