Skip to content

dodero/iiss-cpp-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

127 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

 
 
 

Contributors