Accéder au contenu principal
Documents
Tableaux JavaProgrammation orientée objet en JavaTraitement des fichiers en JavaIntroduction To JavaLes bases du langage JavaMots-clés Java

Encapsulation Java

L'encapsulation est un principe fondamental de la programmation orientée objet (POO) en Java qui consiste à regrouper les données (variables) et les méthodes (fonctions) qui opèrent sur les données en une seule unité, appelée classe. Il restreint l'accès direct à certains composants d'un objet et peut empêcher la modification accidentelle de données.

Objectif de l'encapsulation

  • Masquage des données: L'encapsulation permet de cacher la représentation interne d'un objet à l'extérieur. Seuls les détails nécessaires sont exposés par le biais d'une interface publique.
  • Flexibilité accrue: En contrôlant l'accès aux champs d'une classe, vous pouvez modifier l'implémentation interne sans affecter le code externe utilisant la classe.
  • Amélioration de la maintenabilité: L'encapsulation permet de maintenir le code en gardant les champs privés et en fournissant des méthodes publiques de type getter et setter pour modifier et visualiser les champs.

Mise en œuvre de l'encapsulation en Java

Pour réaliser l'encapsulation en Java :

  1. Déclarez les variables de la classe comme private.
  2. Fournissez public des méthodes getter et setter pour accéder à la valeur d'une variable privée et la mettre à jour.

Exemple 1 : Encapsulation de base

public class Student {
    private String name;
    private int age;

    // Getter method for name
    public String getName() {
        return name;
    }

    // Setter method for name
    public void setName(String name) {
        this.name = name;
    }

    // Getter method for age
    public int getAge() {
        return age;
    }

    // Setter method for age
    public void setAge(int age) {
        if (age > 0) {
            this.age = age;
        }
    }
}

Dans cet exemple, la classe Student possède des champs privés name et age. Des méthodes publiques getter et setter sont fournies pour accéder à ces champs et les modifier. L'outil de définition de age comprend un contrôle de validation de base.

Exemple 2 : Encapsulation avec validation

public class BankAccount {
    private double balance;

    // Getter method for balance
    public double getBalance() {
        return balance;
    }

    // Setter method for balance with validation
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        }
    }

    public void withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
        }
    }
}

La classe BankAccount encapsule le champ balance. Il fournit les méthodes deposit et withdraw pour modifier le solde, en veillant à ce que seules des opérations valides soient effectuées.

Conseils et bonnes pratiques

  • Utilisez des champs privés: Déclarez toujours les champs de la classe comme private pour les protéger de toute modification extérieure.
  • Fournir des méthodes d'accès: Utilisez les méthodes getter et setter de public pour contrôler l'accès aux champs. Cela permet une validation et une flexibilité dans la modification de la mise en œuvre interne.
  • Logique de validation: Mettez en œuvre une logique de validation dans les méthodes de définition afin de garantir la cohérence de l'état de l'objet.
  • Classes immuables: Envisagez de rendre les classes immuables (sans setters) si l'état de l'objet ne doit pas changer après sa création. Cela renforce la sécurité et simplifie la programmation simultanée.

Apprendre l'essentiel de Java

Développez vos compétences en Java à partir de la base et maîtrisez les concepts de programmation.
Commencez à apprendre gratuitement