Encadenamiento de Llamadas en Programación Orientada a Objetos
Clase 20 de 39 • Curso de Programación Funcional con Java SE
Contenido del curso
- 2

Funciones en Programación Funcional: Conceptos Básicos
03:15 - 3

Funciones como Ciudadanos de Primera Clase en Programación
02:39 - 4

Funciones Puras: Concepto y Ejemplos Prácticos
04:05 - 5

Efectos Secundarios en Programación y su Impacto en el Código
03:12 - 6

Funciones de Orden Superior en Programación
02:28 - 7

Funciones Lambda en Programación Funcional Java
03:30 - 8

Inmutabilidad de Datos en Programación Funcional con Java
11:16
- 9
Programación Funcional en Java SE: Conceptos y Prácticas
00:06 - 10

Programación Funcional en Java: Práctica y Ejemplos en IntelliJ
02:48 - 11

Programación Funcional en Java: Creación y Uso de Funciones
04:03 - 12

Programación Funcional con Predicados en Java
04:57 - 13

Interfaz Consumer y Supplier en Java: Uso y Ejemplos Prácticos
03:54 - 14

Funciones Java para Transformación de Datos y Operaciones Binarias
07:10 - 15

Creación y Uso de Interfaces Funcionales Personalizadas en Java
08:51 - 16

Métodos de Referencia en Programación Funcional Java
04:46 - 17

Inferencia de tipos en Java: funciones y métodos
03:53 - 18

Uso de Expresiones Lambda en Java: Sintaxis y Aplicaciones
12:47 - 19

Interfaz Funcional en Java: Creación y Uso de Métodos Default
04:59 - 20

Encadenamiento de Llamadas en Programación Orientada a Objetos
03:52 - 21

Composición de Funciones en Programación Funcional
06:06
- 22

Uso de la Clase Optional en Java para Manejo de Valores Nulos
12:59 - 23

Manipulación de Streams en Java: Operaciones y Limitaciones
10:18 - 24

Programación Funcional en Java: Uso de Streams y Operaciones Terminales
07:21 - 25
Operaciones de Stream en Java: Intermedias y Finales
05:05 - 26

Operaciones y Concurrente con Stream en Java
05:51 - 27
Operaciones Terminales en Java Streams
06:18 - 28
Operaciones Intermedias en Streams de Java
09:21 - 29

Conversión de Strings a Listas de Enteros en Java
06:14
- 30

Construcción de Proyecto para Buscar Empleo Usando APIs
01:17 - 31

Configuración y Uso de Gradle en Proyectos Java con IntelliJ
03:23 - 32

Creación de una Herramienta de Búsqueda de Trabajo en Terminal
01:51 - 33

Creación de Puntos de Entrada y Dependencias en Proyectos Java
05:54 - 34

Creación de APIs RESTful con Feign y Spring Boot
09:31 - 35

Creación de una Interfaz de Línea de Comandos con JCommander
13:05 - 36

Validación de Argumentos en Terminal con Clases en Ciel
04:32 - 37

Procesamiento de Argumentos y Solicitudes API en Java
11:38 - 38

Creación de API para búsqueda de empleos con Java y CLI
08:31
¿Qué es el encadenamiento de llamadas?
El encadenamiento de llamadas, también conocido como "chaining", es un concepto frecuentemente utilizado en programación, aunque no es exclusivo de la programación funcional. Permite conectar la salida de una ejecución con la entrada de otra, facilitando códigos más eficientes y legibles. Este patrón es especialmente útil cuando se trabaja con funciones u objetos que devuelven una instancia de sí mismos.
¿Cómo se aplica en la clase StringBuilder?
La clase StringBuilder es un ejemplo clásico del uso de encadenamiento de llamadas. Esta clase está diseñada para construir cadenas de caracteres de manera eficiente en Java. Puedes comenzar creando una instancia de StringBuilder y luego encadenar múltiples métodos sobre ella. Aquí un ejemplo:
StringBuilder sb = new StringBuilder();
sb.append("Hola")
.append(", ")
.append("mundo!")
.append(" ¿Cómo estás?");
Este código efectúa múltiples llamadas al método append sin necesidad de volver a escribir el nombre del objeto sb. Cada llamada a append devuelve la misma instancia de StringBuilder, lo que permite que las llamadas se encadenen.
¿Cómo implementar el encadenamiento en una clase propia?
El proceso para implementar el encadenamiento de métodos en una clase propia es bastante sencillo. Puedes crear una clase que devuelve una instancia de sí misma en cada método. Vamos a ilustrarlo con una clase simple, Chainer:
public class Chainer {
public Chainer sayHello() {
System.out.println("Hola");
return this;
}
public Chainer sayGoodbye() {
System.out.println("Adiós");
return this;
}
public static void main(String[] args) {
Chainer chainer = new Chainer();
chainer.sayHello().sayGoodbye();
}
}
En este ejemplo, cada método retorna this, que es la instancia actual de Chainer. Esto permite que un método se llame inmediatamente después del otro, como en chainer.sayHello().sayGoodbye();.
¿Cuáles son las ventajas de usar el encadenamiento de llamadas?
El encadenamiento de llamadas ofrece diversas ventajas en el desarrollo de software:
- Código más limpio y legible: Al evitar repetir el nombre del objeto constantemente, se mejora la claridad del código.
- Eficiencia: Reduce la creación de variables innecesarias para cada resultado intermedio, ahorrando memoria y tiempo de ejecución.
- Flexibilidad: Facilita la adición de nuevas operaciones o métodos al objeto, permitiendo que el código evolucione con menos riesgos de errores.
¿Dónde veré la aplicación del encadenamiento en programación funcional?
Aunque el encadenamiento no es exclusivo de la programación funcional, es una técnica que se integra bien con ella, especialmente en la composición de funciones. Verás cómo el encadenamiento puede facilitar procesos complejos de manipulación de datos y transformaciones, manteniendo la inmutabilidad y la claridad del código. La habilidad para conectar funciones de manera fluida es un recurso invaluable que puede simplificar significativamente el proceso de desarrollo en múltiples contextos y aplicaciones complejas.
Recomendaciones para seguir aprendiendo
Explora más sobre las bibliotecas y frameworks que implementan el encadenamiento para obtener una mejor comprensión. Ya sea en Java, JavaScript, o cualquier otro lenguaje de programación, esta técnica es ampliamente aplicable y te permitirá crear aplicaciones más simples y escalables. No dudes en practicar implementando tus propias clases con métodos encadenados, ya que esta práctica te ayudará a internalizar sus beneficios y aplicarlos en proyectos futuros.
¡Sigue aprendiendo e innovando en tu journey como desarrollador!