Skip to content

Alipser/JavaFunctionalParadigm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Descripción: Este repositorio, JavaFunctionalParadigm, explora los conceptos fundamentales y avanzados de la programación funcional en Java. A través de ejemplos prácticos y recursos didácticos, aprenderás a aplicar técnicas de programación funcional en tus proyectos Java para mejorar la claridad, la seguridad y la eficiencia de tu código.

Contenido

  1. Efectos Secundarios (Side Effects) Los efectos secundarios son cambios de estado observables fuera del ámbito de una función. En programación funcional, se busca minimizar los efectos secundarios para mejorar la predictibilidad y seguridad del código. Un ejemplo típico de efecto secundario es modificar una variable global o realizar operaciones de entrada/salida como leer o escribir en un archivo.

  2. Funciones Puras Una función pura es aquella que siempre produce el mismo resultado para los mismos argumentos y no tiene efectos secundarios. Esto significa que no modifica ningún estado externo ni depende de variables fuera de su alcance. Las funciones puras son fáciles de razonar y probar, lo que es un pilar fundamental en la programación funcional.

  3. Inmutabilidad La inmutabilidad implica que una vez que un dato es creado, no puede ser modificado. En lugar de cambiar el estado de un objeto existente, se crean nuevos objetos con los cambios deseados. Esto evita problemas relacionados con el estado compartido y facilita la concurrencia y paralelización.

  4. Expresiones Lambda Las expresiones lambda en Java son funciones anónimas que se pueden tratar como objetos de primera clase. Esto significa que pueden ser asignadas a variables, pasadas como argumentos a métodos y retornadas como valores. Las lambdas simplifican la escritura de código al permitir una sintaxis más concisa y enfocada.

  5. Interfaz Funcional Una interfaz funcional es una interfaz que tiene un solo método abstracto. Este tipo de interfaces es fundamental para el uso de lambdas en Java, ya que las lambdas implementan el método abstracto de una interfaz funcional. Ejemplos comunes incluyen Predicate, Function, Consumer y Supplier.

  6. Stream API El Stream API permite realizar operaciones funcionales sobre colecciones de datos. Los Streams pueden ser utilizados para realizar operaciones de mapeo, filtrado, reducción y muchas otras transformaciones de datos. Los Streams facilitan el procesamiento paralelo y la escritura de código más declarativo.

  7. Uso de Optional Optional es una clase contenedora que puede o no contener un valor no nulo. Se usa para representar valores que pueden estar presentes o ausentes, evitando el uso de null y reduciendo el riesgo de NullPointerException.

Interfaz Funcional Descripción Método Principal Parámetros Tipo de Retorno
Consumer Representa una operación que acepta un único argumento de entrada y no retorna ningún resultado. accept(T t) T void
Supplier Representa una función que no toma argumentos y proporciona un resultado. get() None T
Function Representa una función que acepta un argumento y produce un resultado. apply(T t) T R
BiFunction Representa una función que acepta dos argumentos y produce un resultado. apply(T t, U u) T, U R
UnaryOperator Es una especialización de Function para operaciones que toman un solo argumento y retornan un resultado del mismo tipo. apply(T t) T T
BinaryOperator Es una especialización de BiFunction para operaciones que toman dos argumentos del mismo tipo y retornan un resultado del mismo tipo. apply(T t, T u) T, T T

About

repositorio dedicado a explorar y ejemplificar los conceptos y técnicas de la programación funcional en Java.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages