Encapsulation Java | Exam-Lib
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
Welcome to our Education website, plz like our page facebook to support us. Thank You and wish you good navigation

Encapsulation Java

abdelouafiNov 10, 2018

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      815
      Likes Received:
      14
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      Encapsulation
      La signification de l’encapsulation est de s’assurer que les données "sensibles" sont cachées des utilisateurs. Pour y parvenir, vous devez:

      déclarer les variables / attributs de classe comme privés (accessibles uniquement dans la même classe)
      fournit des méthodes de définition et de lecture publiques permettant d'accéder à la valeur d'une variable privée et de la mettre à jour

      Get et Set
      Vous avez appris dans le chapitre précédent que les variables privées ne sont accessibles que dans la même classe (une classe extérieure n'y a pas accès). Cependant, il est possible d'y accéder si nous fournissons des méthodes de lecture et de définition publiques.

      La méthode get renvoie la valeur de la variable et la méthode set la définit.

      La syntaxe pour les deux est qu'ils commencent par get ou set, suivi du nom de la variable, avec la première lettre en majuscule:

      Exemple
      Code:
      public class Person {
        private String name; // private = restricted access
      
        // Getter
        public String getName() {
          return name;
        }
      
        // Setter
        public void setName(String newName) {
          this.name = newName;
        }
      }

      Exemple expliqué
      La méthode get renvoie la valeur du nom de la variable.

      La méthode set prend un paramètre (newName) et l'assigne à la variable name. Le mot-clé this est utilisé pour faire référence à l'objet actuel.

      Cependant, comme la variable de nom est déclarée privée, nous ne pouvons pas y accéder de l'extérieur de cette classe:

      Exemple
      Code:
      public class MyClass {
        public static void main(String[] args) {
          Person myObj = new Person();
          myObj.name = "John";  // error
          System.out.println(myObj.name); // error 
        }
      }
      Code:
      /* Code from filename: Person.java
      public class Person {
         private String name;
      
         // Getter
         public String getName() {
           return name;
         }
      
         // Setter
         public void setName(String newName) {
           this.name = newName;
         }
      }
      */
      
      public class MyClass {
        public static void main(String[] args) {
          Person myObj = new Person();
          myObj.name = "John";
          System.out.println(myObj.name);
        }
      }
      
      Si la variable a été déclarée comme publique, nous nous attendrions à la sortie suivante:
      Code:
      John
      Cependant, lorsque nous essayons d'accéder à une variable privée, nous obtenons une erreur:
      Code:
      MyClass.java:4: error: name has private access in Person
          myObj.name = "John";
               ^
      MyClass.java:5: error: name has private access in Person
          System.out.println(myObj.name);
                        ^
      2 errors
      À la place, nous utilisons les méthodes getName () et setName () pour accéder à la variable et la mettre à jour:
      Exemple
      Code:
      public class MyClass {
        public static void main(String[] args) {
          Person myObj = new Person();
          myObj.setName("John"); // Set the value of the name variable to "John"
          System.out.println(myObj.getName());
        }
      }
      
      // Outputs "John"
      Code:
      /* Code from filename: Person.java
      public class Person {
         private String name;
      
         // Getter
         public String getName() {
           return name;
         }
      
         // Setter
         public void setName(String newName) {
           this.name = newName;
         }
      }
      */
      
      public class MyClass {
        public static void main(String[ ] args) {
          Person myObj = new Person();
          myObj.setName("John");
          System.out.println(myObj.getName());
        }
      }
      

      Pourquoi encapsulation?
      • Meilleur contrôle des attributs et méthodes de classe
      • Les variables de classe peuvent être rendues en lecture seule (si vous omettez la méthode set) ou en écriture seule (si vous omettez la méthode get)
      • Flexible: le programmeur peut modifier une partie du code sans affecter les autres parties
      • Sécurité accrue des données
       
      Loading...

      Merci de partager ce post sur facebook

Share This Page

Share