Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

Java pour les développeurs Android

Comprendre l'encapsulation

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
L'encapsulation Java vous permet de regrouper des données brutes. En l'appliquant à votre classe Élèves, vous serez en mesure de lire et de manipuler ses propres données.
06:45

Transcription

Pour cette vidéo, nous allons voir un nouveau concept de la programmation orientée objet, à savoir l'encapsulation. Actuellement, tous les attributs et méthodes que nous avons écrits dans la classe « ElèveBean », sont accessibles en dehors de la classe « ElèveBean. » On va voir qu'il est possible de ne rendre accessibles que certains et d'en masquer d'autres. C'est le principe d'encapsulation. Ici, tout est écrit en public. Jusqu'à présent, je ne vous ai pas expliqué l'intérêt de ce public et tout simplement, le public permet de dire si c'est accessible en dehors de la classe « ElèveBean » ou non. Par exemple, si ici, je passe mon âge en « Private », il ne devient plus accessible depuis l'extérieur. Et à tous les endroits où j'ai utilisé elève.age, je me retrouve avec l'erreur comme quoi âge est « Private », je ne peux, donc, pas le modifier. La convention Java veut que les attributs soient privés et qu'on écrive des accesseurs, c'est-à-dire des méthodes qui permettent de remplir ou de récupérer les valeurs, mais en passant par des méthodes, pas en passant directement par l'attribut. Ces méthodes ont un nom conventionné. Depuis le début, je vous parle de « Get » et de « Set. » Ce sont ces mots-clés-là qui sont à utiliser. C'est tellement conventionné qui si je commence à écrire « Set », il va me proposer les « Setteurs » de tous mes attributs. Donc, là en l'occurence je veux faire Age, il m'a écrit le « setAge. » Donc, en public la méthode sera accessible depuis l'extérieur de la classe Élève, « void », elle ne renvoie rien puisque le but d'un « setter » est de modifier et non de lire. Le mot-clé Set, le nom de mon attribut, Age en commençant par une majuscule et le nouvel âge que je veux y mettre. Ici,la variable s'appelle Age. On a un conflit de noms de variables. Comment savoir lequel des deux on va utiliser ? Je vous rappelle que l'Age qui est un paramètre a une portée uniquement dans la méthode, alors que l'âge en tant qu'attribut a une portée sur toute la classe. S'il y a un conflit de portées à cause d'un même nom de variable, il va prendre celle qui a la plus petite portée. C'est un « int », il faut le précéder d'un « string » pour qu'il le convertisse automatiquement. Donc là, je vais écrire l'âge en paramètre et non l'âge qui est ici. D'ailleurs, il suffit de regarder les couleurs syntaxiques. Ici, mon âge en paramètre est en blanc, alors que mes attributs sont en violet. Donc, ici, je vois bien que j'utilise le paramètre et non l'attribut. Comment faire pour accéder à l'attribut plutôt que paramètre, grâce au mot-clé « this » ? Si je rajoute « this. », il passe en violet, j'utilise, donc, l'attribut et non le paramètre. Cette ligne doit vous sembler maintenant un petit peu plus claire. Je prends l'âge qui est en paramètre et je le mets dans l'attribut. J'ai donc, modifié l'âge de mon élève mais sans accéder directement à l'attribut. Là, voilà comment on modifie. Et maintenant, si je veux le récupérer. De la même manière qu'on a fait un « Settext », on avait fait un « Gettext. » On va faire pareil avec « setAge » et on a le «getAge. » Si je commence à écrire « Get », comme c'est conventionné, il me propose le « getAge. » Je n'ai plus qu'à appuyer sur entrée et il m'écrit toute la ligne, et là, il se contente de renvoyage. Il n'y a pas le mot-clé « this » ici parce qu'il n'y a pas d'ambiguïté. Je peux le mettre, ça ne pose aucun problème, mais il est inutile. Alors, rassurez-vous, vous n'aurez pas besoin de faire ça avec tous les attributs. Il y a un générateur qui existe. Si je fais un clic droit, « generate », « Getter and Setter ». Et je vais pouvoir choisir tout ce que je souhaite générer. On voit que l'« Age adulte » est une statique et on peut lui faire un « Getter » et un « Setter. » Comme c'est une variabe statique le « Getter » et le « Setter » qui vont être générés seront aussi statiques. On n'utilise ici aucun attribut de la classe « ElèveBean », donc, on peut mettre la méthode « getAge » Adulte en statique. On peut être appelé à tout moment et on n'a pas besoin d'appeler sur un élève en particulier. Et je vais pouvoir passer, ici, les autres attributs en « private. » Une variable statique, constante, il n'y a pas forcément besoin d'y mettre des accesseurs, on peut la laisser en public. On va maintenant avoir des erreurs à tous les endroits où on avait utilisé des attributs directement. Il va falloir remplacer tous les accès en écriture par des « Sets », tous les accès en lecture par des « Gets. » « Elève.setNom », « élève.setPrénom », « élève.setAge. » Et donc, ici, on est en lecture, « getNom » , « getPrénom ». Là, si j'exécute, j'aurai exactement le même rendu puisqu'on a juste modifié la façon de traiter les données et non l'affichage. Qu'est-ce que va nous apporter l'encapsulation ? Cela va nous permettre de rendre certains attributs non accessibles en lecture ou non accessibles en écriture. On va pouvoir mettre à disposition uniquement les méthodes dont on peut avoir besoin sur l'extérieur. Et on aura la garantie que nos attributs ne seront pas modifiés en dehors des méthodes mises à disposition. Question d'organisation, j'aime bien mettre un commentaire qui indique à partir de quand il n'y a que des « Getters » et des « Setters. » C'est-à-dire que tout le code qui est derrière, ce n'est que des « Getters » et des « Setters. » J'ai sorti le « isAdulte », car là, je ne me contente pas de renvoyer un attribut et j'effectue un mini calcul. L'intérêt est que, comme on peut voir, il commence à y avoir quelque lignes de code. Je n'ai qu'ici que trois attributs. Imaginons une classe qui en a une vingtaine, le nom de « getter » et « setter » derrière. J'essaie généralement de les mettre à la fin et de mettre un commentaire « getter » et « setter » qui m'indique que tout ce qui est après, ce ne sont que des « getters » et des « setters. » Ça me permet d'éviter d'avoir ma méthode « isAdulte » qui apporte un intérêt différent, qui apporte du traitement, perdue dans les « getters » et « setters. » Voilà, pour les principes de l'encapsulation. On reviendra dessus dans de nombreux autres exemples.

Java pour les développeurs Android

Prenez en main la syntaxe et les concepts de Java pour vos développements d’applications pour Android. Abordez les variables, les chaînes de caractères, les conditions, etc.

7h01 (65 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :24 avr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !