Introducción a la programación Funcional

1

¿Qué es la Programación Funcional?

Entendiendo las partes de la programación funcional

2

¿Qué es una función en Java?

3

Funciones como ciudadanos de primera clase

4

Funciones puras

5

Entendiendo los efectos secundarios

6

Funciones de orden mayor

7

Funciones lambda

8

Inmutabilidad

Functional Programming en Java

9

Repositorio del curso

10

Configuración del entorno de trabajo

11

Revisando el paquete java.util.function: Function

12

Revisando el paquete java.util.function: Predicate

13

Revisando el paquete java.util.function: Consumer y Supplier

14

Revisando el paquete java.util.function: Operators y BiFunction

15

Entendiendo dos jugadores clave: SAM y FunctionalInterface

16

Operador de Referencia

17

Analizando la inferencia de tipos

18

Comprendiendo la sintaxis de las funciones lambda

19

Usando metodos default en nuestras interfaces

20

Dándole nombre a un viejo amigo: Chaining

21

Entendiendo la composición de funciones

Optional y Streams: Datos mas interesantes

22

La clase Optional

23

Entendiendo los Streams

24

¿Qué son los Stream listeners?

25

Operaciones y Collectors

26

Streams de tipo específico y Paralelismo

27

Operaciones Terminales

28

Operaciones Intermedias

29

Collectors

Todo junto: Proyecto Job-search

30

job-search: Un proyecto para encontrar trabajo

31

Vista rápida a un proyecto de Gradle

32

Revisando las opciones para nuestro CLI

33

Librerías adicionales para nuestro proyecto

34

Entendiendo la API de jobs

35

Diseñando las Funciones Constructoras de nuestro Proyecto

36

Agregando validaciones de datos

37

Diseñando las funciones de transformacion de datos

38

Creando flujos extras de transformación de Datos

Conclusiones

39

Un repaso a lo aprendido

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Creando flujos extras de transformación de Datos

38/39
Recursos

Aportes 24

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Me parece muy complejo y tal vez innecesario el ejemplo final, yo queria aplicar los conocimientos solamente de Streams, no de Jcommander ni de OpenFeign, lo complica demasiado, en tal caso no se si hubiera sido mejor usar un Enum de donde pueda sacar la data e interactuar con ella
Si hacen un demo asi podria ser de mas provecho.
No digo que este mal este demo final ya que al final aprendes a utilizar JCommander y OpenFeign, solo que no les veo un uso real a futuros proyectos,

Chicos, teninendo en cuenta que el API del curso está off, cree el siguiente proyecto de git con la api https://dummyapi.io/explorer
este es el git: https://github.com/camilomih/functional-cli-post

Implementé un CLI para consultar el API de Rick And Morty

Comparto el código fuente
https://github.com/barreracarlosandres/CLIRickAndMorty

La API ya esta depreciada. Por lo que al ejecutar los comandos, no arroja nada.

El proyecto lo diferente que hice fue hacerlo en Multi-modulos con Gradle tratando de seguir los principios de Clean Architecture, este es el enlace del repo. ¿Me queda la duda de como se le harían pruebas a un proyecto así?

Excelente serie de clases instructor Sinuhé, siguiendo cada uno de los pasos pude construir este proyecto en Windows 10, acá comparto una imagen de una de las búsquedas:
 

Tener en cuenta que ya en 2022, el endpoint del proyecto esta deprecado -> https://github.blog/changelog/2021-04-19-deprecation-notice-github-jobs-site/

Igual, eso no quita el punto del ejercicio

Para el proyecto trabaje con API de Star Wars, comparto el repo https://github.com/Paulabad-BigData/swapi
La clave está en practicar y practicar.

Hola!
Este es mi projecto con base en el realizado en la clase:
https://github.com/tizor98/JobSearch
Use la api disponible en USA JOBS

Cada vez mas sorprendido de como se construye una CLI

hice dos pequeños cambios ya que no me funcionaba el cli.isHelp y el stream.empty

<code>

Optional<CLIArguments> cliArgumentsOptional =
streamOfCLI
.filter(cli -> cli.isHelp() && cli.getKeyword() != null)
.findFirst();

    cliArgumentsOptional.map(CLIFunctions::toMap)
            .map(JobSearch::executeRequest)
            .orElseGet(() -> Stream.empty())
            .forEach(System.out::println);

deberian actualizar el proyecto ya que sin la API disponible no se sirve el proyecto

tuve muchos problemas con la terminal no reconoce ni el comando unzip ni ls 😦

Aqui esta mi repo con la API de Rick y Morty: <https://github.com/Gonzagut99/FunctionalP-JobsAPI>

En todo el proyecto no se empleó la palabra reservada Function, sólo se utilizaron clases y métodos, es sólo una observación, para decir que quizá el proyecto es semi funcional.

Seguramente los que hagan el curso este año y venideros utilizarán otra API para probarlo, cuando hagan el cambio tengan cuidado en la manera en que viene ese JSON, ya que Gson es sensible con eso. De igual forma, algunas funciones y objetos cambiarán dependiendo de la estructura del Json, al igual que cómo se maneje la información dentro del stream, me costó horas darme cuenta de eso jajaja

El api de jobs está deprecada desde agosto del 2021 según dice la página https://jobs.github.com/

Se encuentra deprecado el repo de jobs github, ya no existe

Exelente Ejemplo, Simple, entendible, ordenado y completo.

Gracias 😃

Bueno en mi terminal es netamente la de windows, lo unico que me cambiaron fueron los comandos pero funciono.

Para los que quieran decomprimir el archivo .zip con la terminal de windows, pueden usar el comando Expand-Archive desde Windows powerShell, desde la cmd tradicional no encontré una herramienta nativa para realizar esta tarea!

De igual forma en PowerShell pueden usar el tradicional

./Job-Search.bat java --location Mexico

y ejecutara la herramienta sin problemas

Como lo ejecuto en Windows?

No me funcionó