PROGRAMACION ORIENTADA A OBJETO (POO - OOP)

Descripción del Curso

C++ y POO
Se tratarán los aspectos fundamentales de la Programación Orientada a Objeto.
Estos aspectos son básicos para comprender otros paradigmas de programación que se verán si se sigue programando.

Aquí tenéis el link al Blog del Autor

Un proyecto "real" en C++ y su documentación en Doxygen


Documentación

Esta documentación está disponible bajo la licencia que tengan aquéllos/as a quienes he copiado algo o en su defecto es una Creative Commons. Con mi aportación puedes hacer lo que quieras excepto responsabilizarme de algo malo.
Aviso desde ya que hay erratas que el lector puede tomarse como ejercicio de agudeza o como defecto.

Sesiones

Tipo Sesión Título Resumen
1 Introducción a la Programación Orientada a Objeto Es importante Reutilizar para trabajar mejor. Qué son los Objetos. Por qué C++.
2 Uso de Estándares y Repaso de Programación Estructurada Estándares de nombres de clases, atributos y métodos. Comentarios de cabecera de Ficheros y de Clases. Doxygen. Control de Flujo y Operadores.
3 Repaso de Programación Estructurada II Punteros y Arrays. Estructuras. Funciones "inline". Referencias, paso por valor.
4 Clases y Objetos Uso de Clases y Objetos. Primeros programas. Control de acceso.
5 Clases y Funciones Amigas Uso de enum en una clase. Funciones amigas y clases amigas para saltarse el control de acceso.
6 Inicialización y Limpieza de Objetos Nos metemos a saco con los constructores, pero aun queda más.
7 Inicialización y Limpieza de Objetos II Más sobre constructores y sobretodo el constructor copia y su importancia al crearse objetos de forma automática.
8 Sobrecarga de Funciones Vemos Sobrecarga de Funciones y Argumentos por Defecto y como su uso hace nuestro código más legible y menos extenso.
9 Proceso de Enlazado y Constantes Constantes para sustituir "#define", variables, objetos y argumentos constantes. Atención a los objetos temporales.
10 Funciones inline Repasamos el proceso de compilación y enlazado. inline nos puede ayudar a hacer más eficientes nuestros programas.
11 Uso de static y control sobre los espacios de nombres. Con static controlamos la zona de almacenamiento de nuestras variables, objetos y funciones. Con namespace segmentamos el espacio global de nombres
12 Repaso Repaso de lo visto hasta el momento.
EJ Ejercicios I Unos ejercicios variados sobre lo visto hasta el momento. Es conveniente además repasar los libros sugeridos.
PA Exámen Parcial Preguntas del Exámen Parcial y sus soluciones.
14 Sobrecarga de Operadores I Un operador no es que una forma más cómoda de llamar a una función ( + en lugar de suma() ). Aprendemos a definir y utilizar operadores como la suma para nuestros objetos de clases tales como los números complejos.
15 Sobrecarga de Operadores II Seguimos con sobrecarga de operadores. Vemos los unitarios. Incremento como prefijo y como sufijo, indexación [] y operador llamada (). Hay unos ejercicios convenientes de realizar.
16 Creación Dinámica de Objetos Revisamos lo que ya sabemos: Creación Dinámica de objetos y de arrays de objetos.
17 Herencia I Por fin llegamos a la herencia. Vemos tipo de acceso a los atributos y la herencia pública y la privada.
18 Herencia II Orden de llamada de constructores y destructores. Orden de llamada de operador asignación. Problemas con la vinculación.
19 Herencia III Superposición y sobrecarga en la herencia y en las jerarquías de clases. Herencia y Composición. Clases Abstractas.
20 Polimorfismo I Concepto de polimorfismo. Funciones virtuales para cambiar el comportamiento de llamadas con punteros.
21 Polimorfismo II Clases Abstractas y funciones virtuales puras.
22 Plantillas I Otra forma para hacer nuestros programas reutilizables. Funciones genéricas que pueden trabajar con distintos tipos de datos.
23 Plantillas II Métodos genéricos dentro de una clase. Plantillas para definir clases genéricas que no están atadas a ningún tipo de datos concreto.
24 Clases con atributos dinámicos. Punteros a objetos, atributos de tipo puntero y constructores, destructores, operador '=' y el famoso constructor copia.
25 Operadores y retorno con this y operadores globales. Retorno por valor o por referencia en operadores. Implementación de operadores mediante métodos propios o mediante funciones gloabales.
26 Ejercicios Resumen. Ejercicios de uso de composición, sobrecarga de operadores, copia de objetos, herencia y polimorfismo.
FO Exámen Final Ordinario. Preguntas del exámen.
FOC Código del Exámen Final Ordinario. Propuesta de código para resolver el exámen.


Prácticas

Tipo Número Descripción
1 Repaso de Programación Estructurada
2 Uso de Clases y Objetos. Estándares.
2r Código que serviría para la práctica 2.
3 Aplicación para crear objetos Alumno y tratarlos en una lista.


Os dejo unos enlaces referentes a la bibliografía utilizada para dar el curso y las prácticas y exámenes...

Bibliografía

Tipo Título Autor Resumen
Thinking in C++ Bruce Eckel Seguiremos principalmente este libro. Bruce Eckel ha escrito también "Thinking in Java" y otros.
Pensar en C++ Bruce Eckel Es una traducción incompleta al castellano. Podéis ayudar a traducirlo ;) ...
C++. Cómo Programar H.M. Deitel y P.J. Deitel Un clásico de C++, claro y con muchos ejemplos.
El Lenguaje de Programación C++ Bjarne Stroustrup Bjarne Stroustrup es el creador del Lenguaje C++
The Design and Evolution of C++ Bjarne Stroustrup Todo programador - en el lenguaje que sea - debería leerse este libro
Curso de C++ de "C con Clase" Salvador Pozo No es un libro pero como si lo fuera. He utilizado mucho de su excelente y claro material. Gracias Salvador.
Curso de Programación en C++ Alvaro Bustinduy Candelas Cantidad de material muy trabajado e impartido previamente por Alvaro Bustinduy y que generosamente compartió conmigo. Muchas gracias Alvaro.