Skip to content

dodero/iiss-cpp-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ejercicios

Procedimiento

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Temas

1. Ocultación

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++

2. Herencia

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++

3. Delegación

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++

4. Functors

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++

5. Anotaciones

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

6. Excepciones

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++

7. Undefined

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

8. Aspectos

Implementar en C++ usando aspectos el ejemplo del caso Editor de Figuras.

Referencia: AspectC++

9. Lambdas

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:

10. Mixins

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:

11. Promesas

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:

12. Futuros

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:

13. Variants

Implementar en C++17 un ejemplo de uso de uniones type-safe empleando los siguientes mecanismos del lenguaje:

  • std::variant

Referencias:

14. Observables

Implementar en C++ un ejemplo de procesamiento de streams de eventos asíncronos empleando los siguientes elementos de la biblioteca RxCpp:

  • rxcpp::observable

Referencias:

About

Ejemplos de IISS en C++

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published