Encapsulation en Java - Comment maîtriser les POO avec l'encapsulation?

Cet article sur l'encapsulation en Java vous aidera à comprendre les concepts de base du masquage des détails d'implémentation ainsi que divers exemples simples.

La programmation orientée objet ou mieux connue sous le nom de POO est l'un des principaux piliers de Java qui a tiré parti de sa puissance et de sa facilité d'utilisation. Pour devenir développeur Java professionnel, vous devez avoir un contrôle sans faille sur les différents comme , Abstraction , Encapsulation et polymorphisme. À travers cet article, je vais vous donner un aperçu complet de l'un des concepts les plus importants de la POO, à savoir l'encapsulation en Java et comment il est réalisé.



Voici les sujets dont je discuterai dans cet article:



Vous pouvez également parcourir cet enregistrement de où vous pouvez comprendre les sujets de manière détaillée avec des exemples.



Introduction à l'encapsulation

L'encapsulation fait référence au regroupement des données sous une seule unité. C'est le mécanisme qui lie le code et les données qu'il manipule. Une autre façon de penser l'encapsulation est qu'il s'agit d'un bouclier protecteur qui empêche l'accès aux données par le code en dehors de ce bouclier. En cela, les variables ou les données d'un est caché de toute autre classe et n'est accessible que via toute fonction membre de sa propre classe dans laquelle ils sont déclarés.

Maintenant, prenons l'exemple d'une capsule médicale, où le médicament est toujours en sécurité à l'intérieur de la capsule. De même, grâce à l'encapsulation, les méthodes et les variables d'une classe sont bien cachées et sûres.



java conversion double en int

Encapsulation -Encapsulation dans Java-EdurekaL'encapsulation en Java peut être réalisée par:

  • Déclarer les variables d'une classe comme privées.
  • Fournir des méthodes publiques setter et getter pour modifier et afficher les valeurs des variables.

Examinons maintenant le code pour mieux comprendre l'encapsulation:

public class Student {private String name public String getName () {return name} public void setName (String name) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Comme vous pouvez le voir dans le code ci-dessus, j'ai créé une classe Student qui a un privé Nom . Ensuite, j'ai créé un getter et un setter pour obtenir et définir le nom d'un étudiant. Avec l'aide de ces méthodes, toute classe qui souhaite accéder à la variable de nom doit le faire en utilisant ces méthodes getter et setter.

Voyons maintenant un autre exemple et comprenons l'encapsulation en profondeur. Dans cet exemple, la classe Car a deux champs –name et topSpeed. Ici, les deux sont déclarés comme privés, ce qui signifie qu'ils ne sont pas accessibles directement en dehors de la classe. Nous avons quelques méthodes getter et setter comme getName, setName, setTopSpeed ​​etc., et elles sont déclarées comme publiques. Ces méthodes sont exposées à des «étrangers» et peuvent être utilisées pour modifier et récupérer des données de l'objet Car. Nous avons une méthode pour définir la vitesse maximale du véhicule et deux méthodes getter pour récupérer la valeur de vitesse maximale en MPH ou en KMHt. Donc, fondamentalement, c'est ce que fait l'encapsulation - elle cache l'implémentation et nous donne les valeurs que nous voulons. Examinons maintenant le code ci-dessous.

package Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Ici, le programme principal crée un objet Car avec un nom donné et utilise la méthode setter pour stocker la vitesse maximale de cette instance. En faisant cela, nous pouvons facilement obtenir la vitesse en MPH ou KMH sans se soucier de la façon dont la vitesse est convertie dans la classe Car.

package Edureka public class Exemple {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4,8 litres V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'la vitesse maximale en MPH est' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'la vitesse maximale en KMH est' + car.getTopSpeedKMH ())

So, c'est ainsi que l'encapsulation peut être réalisée en Java. Maintenant, allons plus loin et voyons pourquoi nous avons besoin d'encapsulation.

Pourquoi avons-nous besoin de l'encapsulation en Java?

L'encapsulation est essentielle en Java car:

  • Il contrôle le mode d'accessibilité des données
  • Modifie le code en fonction des conditions requises
  • Nous aide à créer un couple lâche
  • Atteint la simplicité de notre application
  • Il vous permet également de changer la partie du code sans perturber les autres fonctions ou le code présent dans le programme

Prenons maintenant un petit exemple illustrant le besoin d’encapsulation.

class Student {int id String name} public class Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

Dans l'exemple ci-dessus, il contient deux variables d'instance comme modificateur d'accès. Ainsi, toute classe dans le même package peut affecter et modifier les valeurs de ces variables en créant un objet de cette classe. Ainsi, nous n’avons aucun contrôle sur les valeurs stockées dans la classe Student en tant que variables. Afin de résoudre ce problème, nous encapsulons la classe Student.

Donc, ce sont les quelques pointeurs qui décrivent le besoin d'encapsulation. Voyons maintenant quelques avantages de l’encapsulation.

Avantages de l'encapsulation

    • Masquage des données: Ici, un utilisateur n'aura aucune idée de l'implémentation interne de la classe. Même l'utilisateur ne saura pas comment la classe stocke les valeurs dans les variables. Il / elle sera seulement conscient que nous transmettons les valeurs à une méthode setter et que les variables sont initialisées avec cette valeur.
    • Flexibilité accrue: Ici, nous pouvons rendre les variables de la classe en lecture seule ou en écriture seule selon nos besoins. Si vous souhaitez rendre les variables en lecture seule, nous devons omettre les méthodes de définition comme setName (),setAge() etc. ou si nous souhaitons rendre les variables en écriture seule, nous devons omettre les méthodes get comme getName (), getAge () etc. du programme ci-dessus.
    • Réutilisabilité: Il améliore également la réutilisation et est facile à modifier avec les nouvelles exigences.

Maintenant que nous avons compris les principes de base de l’encapsulation, passons au dernier sujet de cet article et comprenons l’encapsulation en détail à l’aide d’un exemple en temps réel.

Un exemple d'encapsulation en temps réel

Prenons un exemple de télévision et comprenons comment les détails de mise en œuvre interne sont cachés à la classe extérieure.Fondamentalement, dans cet exemple, nous cachons les données de code interne, c'est-à-dire les circuits du monde extérieur par la couverture. Maintenant en , ceci peut être réalisé à l'aide de modificateurs d'accès. Les modificateurs d'accès définissent l'accès ou le niveau d'une classe, les variables des constructeurs, etc. Comme vous pouvez le voir dans le code ci-dessous, j'ai utilisé un modificateur d'accès privé pour restreindre le niveau d'accès de la classe. Les variables déclarées privées ne sont accessibles que dans la classe Télévision.

public class Television {privé double largeur privé double hauteur privé double Screensize privé int maxVolume print int volume privé booléen puissance publique Télévision (double largeur, double hauteur, double screenSize) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int diminutionVolume () {if (0volume) volume ++ return volume}} test de classe {public static void main (String args []) {Television t = new Television (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () television. // Génère une erreur car la variable est privée et n'est pas accessible en dehors de la classe}}

Dans l'exemple ci-dessus, j'ai déclaré toutes les variables comme privées et les méthodes, les constructeurs et la classe comme publiques. Ici, les constructeurs, les méthodes sont accessibles en dehors de la classe. Quand je créeun objetde la classe Television, il peut accéder aux méthodes et aux constructeurs présents dans la classe, tandis que les variables déclarées avec un modificateur d'accès privé sont masquées. C’est pourquoi lorsque vous essayez d’accéder variable de largeur dans l'exemple ci-dessus, il jetteune erreur. C’est ainsi que les détails d’implémentation internes sont masqués aux autres classes. C'est ainsi que l'encapsulation est réalisée en Java.

Cela nous amène à la fin de cet article sur «l'encapsulation en Java». J'espère que vous l'avez trouvé informatif et que cela a contribué à ajouter de la valeur à vos connaissances. Si vous souhaitez en savoir plus sur Java, vous pouvez vous référer au

Maintenant que vous avez compris «qu'est-ce que l'encapsulation en Java», consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour les étudiants et les professionnels qui souhaitent devenir développeur Java. Le cours est conçu pour vous donner une longueur d'avance dans la programmation Java et vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog «Encapsulation en Java» et nous vous répondrons dans les plus brefs délais.