Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Encapsulation en Java : Guide complet avec exemple pratique

Qu'est-ce que l'encapsulation en Java ?

L'encapsulation est l'un des piliers fondamentaux de la conception orientée objet en Java. Elle regroupe les données (champs) et les opérations qui manipulent ces données (méthodes) en une seule unité autonome – la classe. En masquant l'état interne derrière une interface bien définie, l'encapsulation protège les objets des interférences non intentionnelles et rend le code plus facile à maintenir et tester.

Dans ce tutoriel, vous apprendrez :

Cliquez ici si la vidéo n'est pas accessible

Apprendre l'encapsulation avec un exemple

Pour illustrer l'encapsulation, considérons une classe compte bancaire simple offrant dépôt et affichage du solde.

class Compte {
    private int numeroCompte;
    private int soldeCompte;
    public void afficherDonnees() {
        // code pour afficher les données
    }
    public void depot(int montant) {
        if (montant < 0) {
            // afficher erreur
        } else {
            soldeCompte = soldeCompte + montant;
        }
    }
}

Imaginez un acteur malveillant ayant accès au code source et tentant d'injecter un dépôt négatif de -100. Il y a deux vecteurs d'attaque courants :

Approche 1 : Modifier directement le champ soldeCompte. Comme le champ est déclaré private, il est inaccessible depuis l'extérieur de la classe Compte, empêchant cette attaque.

Encapsulation en Java : Guide complet avec exemple pratique

Comme vous pouvez le voir, le modificateur private impose l'encapsulation et protège l'état interne.

Encapsulation en Java : Guide complet avec exemple pratique

Par conséquent, le pirate ne peut pas manipuler le solde directement.

Encapsulation en Java : Guide complet avec exemple pratique

Approche 2 : Utiliser la méthode publique depot pour ajouter un montant négatif. La méthode contient une validation qui rejette tout montant inférieur à zéro, contrecarrant cette tentative également.

Encapsulation en Java : Guide complet avec exemple pratique

Ainsi, l'encapsulation assure que seules des opérations légitimes peuvent modifier l'état de l'objet.

Encapsulation en Java : Guide complet avec exemple pratique

La classe entière se comporte comme une capsule scellée – les données sont cachées, et l'interaction se fait uniquement via des messages bien définis. C'est l'essence de l'encapsulation.

Encapsulation en Java : Guide complet avec exemple pratique

Masquage de données en Java

Le masquage de données est la pratique de restreindre l'accès direct aux champs d'un objet depuis l'extérieur de sa classe de définition. En Java, le mot-clé private impose cette restriction, rendant le champ invisible à toutes les autres classes. Cela garde la représentation interne opaque, permettant aux développeurs de la modifier sans casser le code dépendant.

Parfois, un niveau d'accès moins restrictif, comme protected ou public, est requis pour l'héritage ou les classes utilitaires. Cependant, l'encapsulation encourage l'utilisation de champs private couplés à des méthodes d'accès contrôlées.

Méthodes Getter et Setter en Java

Les getters (accesseurs) et setters (mutateurs) fournissent une interface contrôlée pour lire et mettre à jour les champs privés. Ils permettent la validation, la journalisation, ou l'initialisation paresseuse tout en préservant l'encapsulation.

Exemple :

class Compte {
    private int numeroCompte;
    private int soldeCompte;
    // accesseur
    public int getSolde() {
        return this.soldeCompte;
    }
    // mutateur
    public void setNumero(int num) {
        this.numeroCompte = num;
    }
}

Ici, getSolde() retourne le solde actuel, tandis que setNumero() assigne un nouveau numéro de compte.

Abstraction vs Encapsulation

Bien que liées, l'abstraction et l'encapsulation servent des buts distincts :

Pensez à un smartphone : la circuitry complexe est encapsulée derrière une interface tactile, tandis que l'abstraction fournit les fonctions haut niveau comme appeler ou envoyer des messages.

Avantages de l'encapsulation en Java

Java

  1. Maîtriser l'encapsulation Java : guide pratique pour le masquage de données
  2. Maîtriser le transtypage Java : De l'élargissement au rétrécissement et au-delà
  3. Méthode Java String length() : Comment obtenir la taille d'une chaîne (Exemple)
  4. Comprendre Java String.charAt() : Syntaxe, type de retour, exceptions et exemple pratique
  5. Méthode Java String.contains() : Comment vérifier la présence de sous-chaînes – Exemples pratiques
  6. Maîtriser Java String.endsWith() : Comment vérifier les suffixes de chaînes avec exemples
  7. Lecture de Fichiers en Java avec BufferedReader – Guide Pratique avec Exemples
  8. Algorithme de tri par insertion en Java : exemple clair et guide pas à pas
  9. Tri par sélection en Java : exemple pas à pas et code complet