Inmutabilidad

Tabla de contenidos

Resumir con:

La inmutabilidad se refiere a la incapacidad de un objeto o entidad para cambiar o ser alterado una vez que ha sido creado o definido. En el contexto de la programación, los datos inmutables no pueden modificarse una vez estén creados. Es decir, que una vez que se ha asignado un valor a un objeto inmutable, no se puede cambiar ese valor. 

Por ejemplo, en algunos lenguajes de programación, como Haskell o Clojure, muchos tipos de datos son inmutables por defecto. Si se intentara modificar un objeto inmutable, se generaría un objeto nuevo con los cambios efectuados.

¿Para qué sirven los objetos inmutables?

Los objetos inmutables se crean para mantener un estado constante e inalterable una vez que han sido creados. Su objetivo principal es garantizar que no se pueda modificar su estado después de su creación, lo que nos aporta varias ventajas:

  • Mayor seguridad en entornos multihilo: Imagina que estás desarrollando un sistema de autenticación de usuarios. Si los objetos que representan las credenciales de usuario son inmutables, una vez que se han establecido, no se pueden cambiar. Esto garantiza que las credenciales no puedan verse alteradas por accidente o maldad, especialmente en entornos multihilo en los que se ejecutan varios hilos de ejecución simultáneamente.
  • Mejora la concurrencia: Los objetos inmutables no pueden cambiar su estado una vez creados, lo que elimina la posibilidad de que múltiples hilos intenten modificar el mismo objeto simultáneamente. Esto evita las condiciones de carrera (que dos hilos acceden y modifiquen un objeto a la vez) y simplifica enormemente la programación concurrente, ya que no sería tan necesario establecer mecanismos de sincronización más complejos.

Sin embargo, muchos programadores se muestran muy reticentes a crear objetos inmutables. Esto se debe a que, si en el proyecto hay que modificar muchos datos en el código, habría que generar muchos objetos nuevos. Cuantos más objetos, más sobrecargada se verá la capacidad de memoria del software y más compromete el rendimiento del software.

Crear objetos inmutables en Java

Programar objetos inmutables o constantes en Java es muy sencillo en comparación con otros lenguajes, puesto que tiene una palabra clave específica para ello: “final”. Para impedir que una variable pueda heredarse, simplemente debemos declararla como final. Te ponemos un ejemplo práctico para ilustrártelo:

public final class Punto {

    private final int x;

    private final int y;

 

    public Punto(int x, int y) {

        this.x = x;

        this.y = y;

    }

 

    public int getX() {

        return x;

    }

 

    public int getY() {

        return y;

    }

 

    public Punto desplazar(int deltaX, int deltaY) {

        return new Punto(this.x + deltaX, this.y + deltaY);

    }

}

En este ejemplo, la clase Punto representa un punto en un plano cartesiano con coordenadas x e y. Los atributos x e y son final, lo que significa que no pueden ser modificados después de la inicialización en el constructor. Una vez creado un objeto Punto, sus coordenadas no pueden ser cambiadas.

Además, el método desplazar devuelve un nuevo objeto Punto con las coordenadas desplazadas según los argumentos proporcionados. En lugar de modificar el objeto actual, este método crea y devuelve un nuevo objeto Punto con las coordenadas actualizadas, manteniendo así la inmutabilidad del objeto original.

Por lo tanto, cualquier instancia de la clase Punto es inmutable, ya que sus atributos no pueden ser modificados una vez inicializados, y cualquier operación que aparentemente modifique el objeto en realidad crea y devuelve un nuevo objeto con el estado modificado.

Compartir en:

Artículos relacionados

Blockchain

El blockchain, también conocido como cadena de bloques, es una tecnología de almacenamiento de información que se utiliza para mantener un registro descentralizado y seguro de información de forma encadenada. Digamos que el blockchain es una base de datos gigante interconectada que registra

DLP

La DLP, o prevención de pérdida de datos, es una estrategia y conjunto de tecnologías de ciberseguridad diseñadas para proteger la información sensible y confidencial contra fugas no autorizadas. Su principal objetivo es prevenir la filtración de datos críticos, como información financiera, propiedad

Decoherencia

La decoherencia cuántica es un fenómeno fundamental que se presenta en la intersección de la mecánica cuántica y la física clásica. Este proceso describe cómo un sistema cuántico pierde sus características cuánticas al interactuar con su entorno, convirtiéndose en un sistema que se comporta de manera clásica. La

Spam

Definimos como spam cualquier tipo de mensaje o forma de comunicación digital indeseada, no solicitada y, generalmente, molesta para el receptor. Es muy común hablar del spam que recibimos en el correo electrónico, pero también podemos verlo en mensajes de texto, llamadas o

Scroll al inicio