- Elegir un tema de teoría de la lista de temas.
- Notificar por correo del campus al profesor de teoría el tema elegido y esperar su confirmación.
- Elegir el ejemplo del tema estudiado en clases de teoría, o bien proponer un ejemplo alternativo.
- Implementar el ejemplo empleando los mecanismos del lenguaje que se proponga.
- Incluir una breve explicación escrita en markdown, que incluya instrucciones sobre cómo compilar el ejemplo.
- Incluir en el código un programa principal breve de demostración del ejercicio.
- Ubicar los ficheros markdown y el código fuente del ejemplo en la carpeta con el nombre del tema situada bajo la carpeta
temas
.
- Publicar el ejemplo en este mismo repositorio
- Añadir todos los cambios en una rama (branch) con el mismo nombre del tema, en minúsculas y sin acentos.
- Todos los ficheros deben estar realizados sobre una carpeta cuyo nombre también coincida con el nombre del tema.
- Los nombres permitidos para las carpetas a situar bajo
temas/
son:ocultacion
,herencia
,delegacion
,functors
,anotaciones
,expcepciones
,undefined
,aspectos
,lambdas
,mixins
,promesas
,futuros
,observables
. - Los cambios deben incluir las instrucciones, el código realizado y los ficheros de configuración y makefiles necesarios para compilar y probar el ejemplo.
- Al acabar el ejercicio, hacer una solicitud de extracción o pull request (PR) en la rama creada con el nombre del tema para solicitar la incorporación de lo realizado en el ejercicio.
- Instrucciones: ¿Cómo hacer tu primer pull request en Github?
- No olvides borrar la rama que has empleado para hacer el PR del tema elegido.
- Hacer la presentación del ejercicio realizado de alguna de estas dos formas:
- Pedir fecha al profesor para presentar el ejemplo en clase, o bien...
- Grabar un video explicativo de menos de 8' y entregarlo a través del campus.
Implementar en C++ el ejemplo final de Recorrido de listas usando los siguiente mecanismos de ocultación de la implementación en C++:
- Modificadores de visibilidad:
protected
,private
,friend
- Iteradores de
std
Referencias: Capítulo 5 de Bruce Eckel-Thinking in C++
Implementar en C++ el ejemplo de Aventura usando los siguientes mecanismos de C++:
- Herencia simple
- Dynamic casting
Referencias: Capítulo 14 de Bruce Eckel-Thinking in C++
Implementar en C++ el ejemplo final de Orquesta usando los siguientes mecanismos de C++ para la delegación/composición:
- Métodos polimórficos
- Funciones virtuales
Referencias: Capítulo 15 de Bruce Eckel-Thinking in C++
Implementar en C++ el ejemplo de la identificación de BankAccount y que se puedan definir diversos atributos para comparar cuentas, usando los siguientes mecanismos de C++ para inyectar como dependencias el criterio de comparación:
- polimorfismo paramétrico (templates)
- sobrecarga de operadores binarios
- objetos función o functors
Referencias:
- Capítulo 16 de Bruce Eckel-Thinking in C++
- Capítulo 12 de Bruce Eckel-Thinking in C++
- Functors en C++
Implementar en Java el ejemplo de BankAccount con diversos atributos comparables, usando los siguientes mecanismos de Java para inyectar como dependencia el comparador a usar:
- anotaciones definidas a medida según el JSR 330
Referencia: Creating a Custom Annotation in Java de Baeldung
Implementar en Java ejemplos de excepciones, usando los siguientes mecanismos para gestión de errores:
- Excepciones checked en Java
- Excepciones unckeched en Java
Referencias:
- Capítulo XX de Bruce Eckel-Thinking in C++
Implementar en C++ el ejemplo del caso "MobileTester" del apartado Optionals usando los siguientes mecanismos del lenguaje para resolver el problema de los valores no definidos y el mal uso de null
:
std::optional
Referencia: CppReference
Implementar en C++ usando aspectos el ejemplo del caso Editor de Figuras.
Referencia: AspectC++
Implementar ejemplos en C++ del uso de funciones anónimas (expresiones lambda) empleando los siguientes mecanismos del lenguaje:
- Lambdas genéricas de C++11
- Lambdas variádicas de C++14/C++17
- Lambdas mutables
Referencias:
Implementar en C++ un ejemplo de mixin que permita mezclar distintos comportamientos en una misma clase, empleando los siguientes mecanismos del lenguaje:
- polimorfismo estático (templates)
- polimorfirmo dinámico
Referencias:
Implementar en C++ un ejemplo de programación asíncrona, similar a los mostrados en Promesas y futuros, que emplee los siguientes mecanismos del lenguaje:
std::async
std::promise
Referencias:
Implementar en C++ un ejemplo de programación asíncrona, similar a los mostrados en Promesas y futuros, que emplee los siguientes mecanismos del lenguaje:
std::async
std::future
Referencias:
Implementar en C++17 un ejemplo de uso de uniones type-safe empleando los siguientes mecanismos del lenguaje:
std::variant
Referencias:
Implementar en C++ un ejemplo de procesamiento de streams de eventos asíncronos empleando los siguientes elementos de la biblioteca RxCpp:
rxcpp::observable
Referencias: