Nous mettrons à jour notre Politique de confidentialité prochainement. En voici un aperçu.

Java pour les développeurs Android

Associer héritage et encapsulation

Testez gratuitement nos 1341 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Dans cette vidéo, vous appliquerez le principe d'encapsulation et vous associerez également l'héritage concerné.
07:13

Transcription

Dans cette vidéo, nous allons voir le principe d'encapsulation, lié à l'héritage. Je vous rappelle le principe d'encapsulation, c'est le fait de pouvoir donner accès à nos attributs ou à nos méthodes, à l'extérieur du fichier. Par exemple, le nom et prénom étant déclarés « private », dans la classe « MainActivity », je ne peux pas faire élève.Nom ou élève.Prénom. En revanche, « getNom » et « getPrénom », étant déclarés en tant que public, je peux faire « élève.getNom » ou « élève.getPrénom ». Nous allons voir dans cette vidéo, comment cela fonctionne avec l'héritage. Première étape, nous allons ajouter le champ particulier de l'élève, à savoir, sa classe. Nous allons l'étendre de « PersonneBean » et lui enlever les attributs en commun. Ici, nous voyons plusieurs erreurs. La première, le constructeur, ce constructeur n'appelant pas le constructeur de la classe personne, j'ai une erreur. La deuxième, ici, j'ai mon âge qui est aussi en erreur. Pourquoi il est en erreur ? Tout simplement, parce qu'ici, je l'ai mis en « private ». Donc, il n'est accessible que dans la classe « PersonneBean ». Pour résoudre le problème, on peut le passer en public. Ici, j'ai bien l'élément, autre problème, maintenant, il est accessible partout, c.à.d dans la classe « MainActivity », je peux de nouveau faire élève.âge. Il existe donc un troisième mot-clé qui est l'intermédiaire : « protected ». « Protected » le rend accessible, à la fois dans la classe « PersonneBean » et dans toutes ses classes héritantes, donc, à savoir, enseignant et élève. Donc, là, notre âge est ... sauf qu'en fait, « protected » va même un petit peu plus loin, il rend à la fois les classes héritantes, mais aussi les classes qui sont dans le même package. Cest-à-dire, qu'il va falloir créer un package, qu'ici, j'ai appelé « beans » et mettre nos « beans » dedans, sinon, dans « MainActivity », si « MainActivity » se retrouve dans le même package que « PersonneBean », on va pouvoir faire élève.âge. Donc, le fait d'avoir mis ces trois éléments dans un package à part, cela nous permet d'isoler l'information. Il existe un quatrième mot-clé, en fait, il existe une autre version, celle que vous utilisez depuis le début, qui est de ne rien mettre, c'est-à-dire, marquer directement « int âge ». Cette version donne accès uniquement aux éléments qui sont dans le même package c'est-à-dire, que si la classe héritante n'est pas dans le même package, elle n'y aura pas accès, par contre, une classe non héritante dans le même package y aura accès. Ce qui nous donne en résumé ce petit tableau. Revenons au constructeur de « EleveBean ». Ici, je vais intentionnellement créer plusieurs constructeurs. Voilà, j'ai donc quatre constructeurs : nom-prénom, nom-prénom-âge, nom-prénom-classe, nom-prénom-classe-âge. Les deux anciens constructeurs deviennent obsolètes, car dans la classe « PersonneBean », nous demandons un nom et un prénom en paramètre. Alors, dans mes nouveaux constructeurs, j'ai un nouveau mot-clé, le mot-clé super. Nous avons vu le mot-clé « this » qui permet d'appeler les attributs et les méthodes ou le constructeur de la même classe. Le mot-clé super permet de spécifier qu'on parle de la classe mère, c'est-à-dire qu'ici, le super représente ce constructeur. D'ailleurs, si je clique dessus, il m'amène bien ici. Alors là, je vais vous montrer une bonne pratique. Quand on commence à travailler avec beaucoup de constructeurs, l'idéal est de faire en sorte, que quel que soit le constructeur que je choisisse, par cheminement, j'arrive toujours vers le même constructeur. Je vous montre l'exemple. Ici, celui qui prend le plus de paramètres, c'est ce constructeur-là. Donc, nous avons redirigé le nom et le prénom sur le constructeur de personnes, nous avons stocké la classe et nous pouvons maintenant faire « this.age = age ». Oui, le mot-clé « this » représente la classe mère, mais ici, il n'y a pas d'attribut âge dans la classe « ElèveBean », il va donc chercher l'attribut âge de la classe « PersonneBean », elle en hérite. Et comme notre attribut âge est « protected », nous y avons bien accès. Alors, maintenant que ce constructeur là est fait, je vais faire en sorte que les trois autres redirigent dessus. Nous allons commencer par ce constructeur-là et faire en sorte qu'il redirige sur ce constructeur-là. Pour ça, nous allons utiliser le mot-clé « this », transmettre le nom, le prénom et au choix soit l'âge, soit la classe. Ici, nous n'avons pas de classe, donc nous allons transmettre nul. Ce constructeur va rediriger sur ce constructeur-là. Donc, même chose, « this », nom, prénom, nul, nous n'avons pas la classe et l'âge. Ce constructeur va rediriger sur celui-là, « this », nom, prénom, nous avons la classe et nous n'avons pas l'âge, nous allons donc faire le « random » que nous faisions avant. Et nous n'avons plus besoin de ces deux constructeurs. Voilà, quel que soit le constructeur que je choisisse, si j'arrive ici, il me redirige sur celui-là et celui-là me redirige sur celui-là. Donc, quel que soit le constructeur que je choisisse, j'atterrirai bien dans ce constructeur-là. L'appel à un constructeur, que ce soit un constructeur de la même classe ou un constructeur de la classe parente, doit forcément être la première ligne du constructeur, donc ici, le « this » correspond bien à la première ligne, ici, le super correspond bien à la première ligne. Si je tente d'inverser, j'ai une erreur m'indiquant que cela doit être la première ligne. Il ne me reste plus qu'à enlever les « getters » et les « setters » qui sont déjà dans la classe Personne. Il ne me reste plus qu'à créer le « getter » et le « setter » de ma classe. Voilà, ma classe « ElèveBean » est maintenant opérationnelle. Nous allons retourner dans « MainActivity » pour corriger l'erreur qui a été créée suite à ces changements. Donc, ici, maintenant, notre constructeur vide n'existe plus, nous allons lui donner un nom et un prénom. Voilà, graphiquement, aucun changement, mais nous avons commencé à pouvoir factoriser du code. Voilà, pour le principe d'encapsulation avec l'héritage.

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 !