FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Comment garder votre code propre avec l'encapsulation d'objets

L'encapsulation signifie garder quelque chose d'isolé. Si vous mettez quelque chose dans une capsule, le monde extérieur ne peut pas y accéder. L'encapsulation est un concept important dans la programmation orientée objet, car elle permet de garder un code complexe gérable.

Pourquoi avez-vous besoin de cours

Disons que vous avez une application de zoo pour enfants avec des centaines de milliers de lignes de code. Imaginez maintenant qu'il existe un objet très important qui est au centre de toute l'application, appelé animal . Et si chaque partie du programme qui était un animal pouvait accéder à cet objet et le modifier ?

Un accès illimité causerait beaucoup de chaos. Si un porcelet utilise animal pour définir ses paramètres, puis animal aura porcelet les attributs. Maintenant, disons qu'une chèvre décide d'utiliser animal pour définir ses paramètres.

En JavaScript/TypeScript, cela ressemblerait à ceci :

var animal ={nom :"porcelet", pattes :4, couleur :"rose", décoration :"museau"} 
animal.name ="chèvre"
animal.decoration ="cornes"

La prochaine chose que vous savez, vous avez des chèvres roses et des porcelets avec des cornes. Observez le code en action dans le bac à sable TypeScript, puis cliquez sur exécuter pour afficher la sortie de la console.

Si vous apprenez à programmer et que vous cherchez de l'inspiration en plus de créer un zoo pour enfants, voici 10 autres projets pour vous inspirer.

Parce que votre base de code est si énorme, cela pourrait prendre des centaines d'heures pour trouver le code qui donne des cous de lama à vos agneaux et de la laine à vos canetons. Et une fois que vous avez trouvé le code incriminé, vous devrez écrire encore plus de code spaghetti pour empêcher les objets d'interférer les uns avec les autres. Il doit y avoir un meilleur moyen.

La façon de résoudre le problème de chevauchement consiste à définir des objets avec des classes. N'importe quelle partie du code peut créer un objet basé sur la définition de la classe. La création d'un objet unique s'appelle l'instanciation. Il garantit que chaque objet créé aura ses propres propriétés. Et ces objets ne pourront pas interférer les uns avec les autres accidentellement.

Les classes ne suffisent pas ; Vos variables d'objet ont également besoin d'être encapsulées

Nous avons donc décidé que chaque animal a besoin de son propre objet. Créons une classe qui définira nos animaux.

classe Animal { 
nom :chaîne ;
jambes :nombre;
couleur :chaîne;
décoration :ficelle;
constructeur (nom :chaîne, jambes :nombre, couleur :chaîne, décoration :chaîne) {
this.name =nom;
this.legs =jambes ;
this.color =couleur;
this.decoration =décoration ;
}
}

Ensuite, créons quelques objets animaux.

let babyDuck =new Animal("baby duck", 2, "yellow", "beak"); 
let lapin =new Animal("lapin", 4, "gris", "oreilles tombantes");

Jouez avec le code jusqu'à présent.

Maintenant, nous pouvons ajouter tous les animaux que nous voulons sans aucune mutation étrange. Ou pouvons-nous ?

Comment garder votre code propre avec l encapsulation d objets

Que se passerait-il si une nuit, un programmeur fatigué écrivait du code pour éditer un animal à partir de l'application creepy-crawly, mais qu'il éditait le lapin par erreur ?

bunny.color ="noir" ; 
lapin.jambes =8;

Les lapins araignées ne sont pas cool, mec ! C'est tout aussi mauvais que lorsque nous n'avons pas encapsulé notre code dans des objets. Faisons en sorte que cela ne se reproduise plus jamais.

La première chose que nous devons faire est de rendre nos objets privés . Cela signifie que rien ne peut éditer nos variables directement après les avoir créées. Voici le code montrant que la modification de variables privées crée une erreur.

Les variables doivent cependant être modifiables. Et c'est là que les getters et passeurs entrez.

Les getters et les setters sont des fonctions qui accèdent aux variables et les modifient de manière contrôlée. Les setters peuvent définir des limites sur les données qui sont modifiées. Et les getters peuvent modifier les données récupérées.

Voici à quoi ressemble notre classe avec les fonctions get et set pour contrôler le nombre de jambes.

classe Animal { 
nom_privé :chaîne ;
_jambes privées :nombre ;
couleur_privée :chaîne ;
décoration_privée :chaîne ;
constructeur (nom :chaîne, jambes :nombre, couleur :chaîne, décoration :chaîne) {
this._name =nom ;
this._legs =jambes ;
this._color =couleur;
this._decoration =decoration;
}
obtenir les jambes() {
retourne this._legs;
}
définir les jambes (legCount:nombre) {
if(legCount> 1 &&legCount <5) {
this._legs =legCount ;
}
}
}

Apprendre l'encapsulation et éviter les variables globales

Voici le code final. Récapitulez ce que vous avez appris pour vous assurer de votre compréhension :

  • Ajoutez des getters et des setters pour le reste des variables.
  • Renvoyez le nom de l'animal sous la forme d'une balise span :lama
  • Modifiez la variable de décoration pour autoriser plusieurs décorations. Créez un getter et un setter appropriés pour refléter ce changement.

Si vous voulez que votre code fonctionne comme une machine bien huilée, vous devez absolument utiliser l'encapsulation. Évitez les variables globales à tout prix. Et si vous avez besoin de partager des variables entre des objets, vous pouvez consulter la documentation TypeScript sur la création de variables de classe/statiques pour savoir comment procéder.


[]