Immutabilité

Table des matières

Résumez avec :

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.

Partager en :

Articles connexes

Carte graphique

Une carte graphique, également appelée carte vidéo, est un composant essentiel des ordinateurs et des appareils électroniques. Elle est chargée de traiter les données provenant du processeur et de les transformer en informations visuelles affichées sur le moniteur, l'écran ou le projecteur. Si vous êtes

EcmaScript

ECMAScript est un langage de script standardisé qui constitue la base de plusieurs langages de programmation, JavaScript étant le plus connu et le plus utilisé. Établi par ECMA International par le biais de la spécification technique ECMA-262, ECMAScript définit le comportement du langage.

Espace de noms

Qu'est-ce qu'un espace de noms ? Un espace de noms est une fonctionnalité de divers langages de programmation qui permet de regrouper et d'organiser des éléments de code, tels que des classes, des fonctions et des variables, sous un nom unique. L'objectif principal d'un espace de noms est d'éviter les conflits de noms.

Déploiement

Le déploiement, en particulier dans le contexte de DevOps, fait référence au processus de mise en place d'une application ou d'un service dans un environnement de production, le mettant à la disposition des utilisateurs finaux. DevOps, une combinaison de “développement” et “opérations”, est une méthodologie

Retour en haut