Encapsulation en Java et modification de classes avec Java Agents

Decouvrez l'encapsulation en Java avec un exemple pratique, puis apprenez a modifier des classes dynamiquement avec les Java Agents et les varargs.

Mahmoud DEVO
Mahmoud DEVO
December 27, 2025 3 min read
Encapsulation en Java et modification de classes avec Java Agents

Encapsulation et Modification de Classes avec Java Agents

Introduction

Dans ce tutoriel, nous allons explorer deux concepts clés en programmation orientée objet : l’encapsulation et la modification de classes avec des agents Java. Ces techniques sont essentielles pour créer des applications robustes et évolutives.

Encapsulation

L’encapsulation est la pratique consistant à cacher l’implémentation d’une classe au sein de celle-ci, en exposant uniquement son interface. Cela permet de protéger les détails de l’implémentation et de faciliter les modifications futures.

Exemple : La Classe Angle

public class Angle {
    private double angleInDegrees;
    private double angleInRadians;

    public static Angle angleFromDegrees(double degrees) {
        Angle a = new Angle();
        a.angleInDegrees = degrees;
        a.angleInRadians = Math.PI * degrees / 180;
        return a;
    }

    public static Angle angleFromRadians(double radians) {
        Angle a = new Angle();
        a.angleInRadians = radians;
        a.angleInDegrees = radians * 180 / Math.PI;
        return a;
    }

    public double getDegrees() {
        return angleInDegrees;
    }

    public double getRadians() {
        return angleInRadians;
    }

    public void setDegrees(double degrees) {
        this.angleInDegrees = degrees;
        this.angleInRadians = Math.PI * degrees / 180;
    }

    public void setRadians(double radians) {
        this.angleInRadians = radians;
        this.angleInDegrees = radians * 180 / Math.PI;
    }
}

Dans cet exemple, la classe Angle cache ses propriétés internes (angleInDegrees et angleInRadians) derrière une interface publique. Cette approche permet de garantir que les deux représentations des angles sont toujours synchronisées.

Modification de Classes avec Java Agents

Les agents Java sont des bibliothèques qui peuvent modifier les classes au cours de l’exécution du programme. Ils offrent un moyen de réécrire la métadonnée d’une classe sans avoir à modifier son code source.

Exemple : Modification de la Classe Angle

public class Angle {
    private double angleInDegrees;

    public static Angle angleFromDegrees(double degrees) {
        Angle a = new Angle();
        a.angleInDegrees = degrees;
        return a;
    }

    public double getDegrees() {
        return angleInDegrees;
    }

    public void setDegrees(double degrees) {
        this.angleInDegrees = degrees;
    }
}

Dans cet exemple, nous avons supprimé la propriété angleInRadians et modifié les méthodes pour ne plus prendre en compte cette valeur. Nous allons maintenant voir comment modifier la classe Angle avec un agent Java.

Création d’un Agent Java

Pour créer un agent Java, nous devons :

  1. Définir une classe qui contiendra le code de modification de la classe cible.
  2. Configurer le fichier MANIFEST.MF pour spécifier que l’agent peut réécrire les classes.
public class PremainExample {
    public static void premain(String agentArgs, Instrumentation inst) {
        // Code de modification de la classe Angle
    }
}

Chargement de l’Agent

Pour charger l’agent, nous devons :

  1. Créer un fichier jar qui contient le code de l’agent.
  2. Configurer les arguments de ligne de commande pour spécifier que l’agent doit être chargé.
java -javaagent:PremainAgent.jar -jar myProgram.jar

Varargs (Variable Argument)

Les varargs sont une fonctionnalité Java qui permet d’utiliser des paramètres variables dans les méthodes. Ils peuvent être utilisés pour passer soit un tableau, soit une séquence de paramètres.

Exemple : Utilisation de Varargs

public class Main {
    public static void printVarArgArray(double... args) {
        for (double arg : args) {
            System.out.println(arg);
        }
    }

    public static void main(String[] args) {
        double[] array = {1, 2, 3};
        printVarArgArray(array);

        printVarArgArray(1, 2, 3);
    }
}

Dans cet exemple, nous utilisons la méthode printVarArgArray pour imprimer les éléments d’un tableau ou d’une séquence de paramètres.

Conclusion

L’encapsulation et la modification de classes avec des agents Java sont deux concepts essentiels en programmation orientée objet. Ils permettent de créer des applications robustes et évolutives. Nous avons vu comment utiliser ces techniques pour modifier la classe Angle et charger un agent Java au cours de l’exécution du programme.

Prochaines Étapes

  • Explorer d’autres bibliothèques de modification de classes, telles que Javassist ou BCEL.
  • Apprendre à créer des agents Java plus complexes pour modifier les classes dans différents contextes.
Advertisement

In-Article Ad

Dev Mode

Share this article

Mahmoud DEVO

Mahmoud DEVO

Senior Full-Stack Developer

I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.

Enjoyed this article?

Subscribe to get more tech content delivered to your inbox.

Related Articles