KnowledgeCity

Java Avanzado: Programación Funcional

En estas lecciones, comenzará su viaje de la programación imperativa a la funcional en Java, incluyendo qué es, y cómo Java la implementa a través de…

En estas lecciones, comenzará su viaje de la programación imperativa a la funcional en Java, incluyendo qué es, y cómo Java la implementa a través de algo llamado @FunctionalInterface.  Repasaremos cómo la programación funcional puede ayudarlo mediante la creación de pequeños y concisos fragmentos de código expresivo que ahorran tiempo y dinero.

Aprenda a expresar lo que necesita realizar, en lugar de escribir todas las instrucciones usted mismo, de la misma manera que SQL hace que la base de datos sea mucho más fácil de utilizar.  Terminaremos con un vistazo a las funciones de orden superior y cómo guardar funciones en una variable de referencia que se puede pasar como cualquier otra referencia de objeto.

Objetivos de aprendizaje:

  • Distinguir entre programación imperativa y declarativa
  • Identificar cómo @FunctionalInterface puede optimizar el código
  • Comprender cómo crear funciones de orden superior

Instructor: Scott Stanlick

Duración: 19m · 3 lecciones
Nivel: Advanced
Idioma: Español

Habilidades que obtendrás

Programación funcionalInterfaz funcionalJava 11Java (lenguaje de programación)API de JavaCompiladores Java

Lo que aprenderás

  • Distinguir entre la programación imperativa y declarativa (funcional) en Java
  • Identificar cómo @FunctionalInterface puede optimizar y simplificar su código
  • Crear fragmentos de código pequeños, concisos y expresivos usando lambdas e interfaces funcionales
  • Crear funciones de orden superior en Java
  • Almacenar funciones en una variable de referencia que se puede pasar como cualquier otra referencia de objeto

Puntos clave

  • La programación funcional le permite expresar qué necesita lograr en lugar de escribir todas las instrucciones, similar a cómo SQL facilita el uso de una base de datos.
  • Java implementa la programación funcional a través de un mecanismo llamado @FunctionalInterface.
  • La programación funcional puede producir fragmentos de código pequeños, concisos y expresivos que ahorran tiempo y dinero.
  • Las funciones de orden superior le permiten guardar funciones en una variable de referencia que se puede pasar como cualquier otra referencia de objeto.

Preguntas frecuentes

¿Qué cubre este curso?

Cubre el viaje desde la programación imperativa hacia la funcional en Java, incluyendo qué es la programación funcional y cómo Java la implementa a través de @FunctionalInterface, lambdas e interfaces funcionales, y funciones de orden superior.

¿Qué habilidades adquiriré en este curso?

Adquirirá habilidades en Programación Funcional, Interfaz Funcional, Java 11, Java (Lenguaje de Programación), API de Java y Compiladores de Java.

¿Qué lecciones se incluyen?

El curso incluye tres lecciones: Programación Imperativa vs. Declarativa; Lambda e Interfaz Funcional; y Funciones de Nivel Superior.

¿Qué son las funciones de orden superior en este curso?

Las funciones de orden superior son funciones que puede guardar en una variable de referencia para que se puedan pasar como cualquier otra referencia de objeto.

Transcripción

Transcripción

Bienvenido de nuevo, Scott Stanley aquí. En estas lecciones vamos a echar un vistazo a imperativo versus programación declarativa, Lambdas, interfaces funcionales y funciones de nivel superior. Así que en esta lección, vamos a echar un vistazo específicamente a ¿Qué es la programación imperativa? ¿Qué es la programación declarativa? Entonces vemos aquí, hay un par de paradigmas de programación diferentes, un par de enfoques para resolver problemas de programación. El enfoque imperativo ha existido probablemente por más tiempo. Define un programa como una secuencia de sentencias que cambian el estado del programa. Por lo general, tiene variables de trabajo y bucles y normalmente una buena cantidad de código. Mientras que declarativo por otro lado, es un enfoque que expresa la lógica de un cálculo sin describir su flujo de control. Es algo así como declarar que te gustaria que pasara y sólo teniendo que sea así, mientras que imperativo es arremangarse y escribir una buena cantidad de código. Y luego quieren que nos aseguremos de que vemos aquí que una función debe devolver un valor basado únicamente en el argumento y no debe tener efectos secundarios. Quiero decir que es la definición de libro de texto de una función. Por lo general, cuando hablamos de programación declarativa, la función es lo siguiente que vamos a empezar a hablar de eso. Tenemos una lista de tipo de estudiante, cuatro estudiantes supongo Scott, Tyler, Chris y Edward. Y luego, antes de cada prueba en el conjunto de unidades J aquí terminaremos con una nueva lista de estudiantes para cada prueba. Entonces, de esta manera, no hay residuos entre las pruebas en ejecución. Las pruebas son totalmente independientes de esta manera. Así que eso es todo. Lo primero que miramos es una búsqueda. que está usando el estilo imperativo. Y entonces vamos a recorrer a todos los estudiantes y estamos tratando de determinar si el que alguien busca, en este caso, quieren saber si Eddie Van Halen está aquí, quieren saber si existe. Así que ahí está nuestro booleano 'encontrado = falso', así que vamos a empezar pesimista. No, no existe. Y la identificación que queremos buscar es la número cuatro. Así que ahí está nuestro bucle. Lo primero que haremos en el ciclo es decir, ¿esta identificación de estudiante es igual a la que se busca? Si es así, decimos que encontrado es igual a verdadero y salimos del bucle y volveriamos verdaderos a quien preguntaba ¿este estudiante existe? Esa es una buena cantidad de código. La forma declarativa de resolver ese mismo problema. sería preguntar a los alumnos, cuál es la colección aquí la lista de estudiantes, Pregunte a los estudiantes si contiene Eduardo. Y en este caso sería cierto. Entonces, si echamos un vistazo a cómo funcionó, el código, en lugar de tener que escribirlo cada vez que quieras jugar ese juego, este estudiante existe o no, está contenido dentro del tipo de estudiante método igual. Así que antes vimos el orden natural de un estudiante fue compararme con otro estudiante por apellido. Bueno, aquí hemos agregado un igual en un código hash que es lo que se llama cuando se invoca colecciones que no contienen. Así que regresemos y veamos eso una vez más. Cuando se invoca el método collection contains, el método estudiante es igual a lo que se invocará. Así que lo primero que va a hacer es decir ¿El otro tipo de objeto es del mismo tipo que yo? En otras palabras, quiero asegurarme que un estudiante está siendo comparado con otro estudiante. Y en ese momento puedo decir, ¿mi identificación es igual a esta otra identificación de estudiante? Así que es un enfoque mucho más limpio. Y como puedes ver si, si esa es la pregunta que alguien quiere poder preguntarte, es mucho más limpio solo decir, 'Estudiantes, ¿contienes a Edward?' Mucho más simple de hacer eso que escribir todo este código. Así que echemos un vistazo a otro ejemplo aquí. y eso es un tipo imperativo usando un comparador que hemos visto esto, creo, colección ordenar estudiantes y ordenarlos de esta manera. Entonces, si miramos a los estudiantes por fecha de nacimiento comparador, bueno ahí está, vamos a terminar clasificando a los estudiantes, dado dos estudiantes a la vez comparando sus fechas de nacimiento. Entonces todos estarán ordenados ahora cronológicamente según su fecha de nacimiento. Y el sabor declarativo de este no nos obligaría a escribir esto, no requeriría eso. El sabor declarativo de ese tipo. es lo que vamos a ver en la próxima lección. Gracias por ver. La próxima lección será Lambda e interfaces funcionales.

Aprende sobre la marcha

Lleva tu aprendizaje a todas partes: la app de KnowledgeCity te permite ver las lecciones sobre la marcha.