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

S'initier au polymorphisme

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Dans cette vidéo, vous aborderez les principes du polymorphisme. Puis, vous verrez comment ajouter à votre projet soit un élève, soit un enseignant.
08:48

Transcription

Dans cette vidéo, nous allons voir un nouveau concept de la programmation orientée objet. Nous allons voir le concept de polymorphisme. Mais d'abord, nous allons compléter notre projet. Pour cela, nous allons donner la possibilité de choisir entre élève ou enseignant, lors de l'insertion. Et lors de l'affichage nous grouperons les élèves ensemble et les enseignants ensemble. Pour cela, nous allons avoir besoin d'une classe Enseignants qui aura également son nom et son prénom. Nous aurons besoin de stocker une collection d'enseignants et ensuite, d'ajouter soit un élève, soit un enseignant et de le mettre dans la collection qui convient. Et pour supprimer la même chose et pour l'affichage le parcours des deux collections. Commençons par créer la classe Enseignants. Elle va à côté de la classe « ElèveBean », clic droit, « new Java Class », « EnseignantBean. » Je lui ajoute un attribut nom et un attribut prénom en « Private. » Je vais générer le constructeur, « Generate » , « Constructor. » Je vais commencer par faire un constructeur vide. « Select None », voilà, cela construit un constructeur vide, c'est-à-dire, un constructeur qui ne prend pas de paramètres. « Generate », je sélectionne les deux. Pour sélectionner les deux, je reste appuyé sur la touche « Shift » et j'appuie OK, puis je vais générer les « Getters » et « Setters », clic droit, « Generate », « Getter », « Setter », même chose, je reste appuyé sur la touche « Shift », OK. Comme pour la classe Élèves, je vais mettre mon petit commentaire qui m'indique que ce n'est que des « Getters » et « Setters. » Alors, la différence entre les deux constructeurs, dans le premier, je ferai « new EnseignantBean », sans rien passer et après derrière, je vais faire « Enseignant.setNom » et « Enseignant.setPrénom », et grâce à ce constructeur, je pourrai faire directement « new EnseignantBean » en transmettant, et le nom, et le prénom. Et si on regarde ce qui nous a été généré, c'est la même chose que dans le « Setter » Maintenant, côté « Activity » : on va avoir besoin de récupérer nos deux radio boutons. Notre premier radio bouton, celui d'élève, on récupère son nom d'ID, donc, c'est un typage radio bouton et on va faire la même chose pour enseignant. Maintenant qu'on a créé nos variables, il va falloir récupérer les instances. A l'aide du « findViewByID », on caste un radio bouton et même chose pour enseignant. J'ai fait pointer mes variables vers les radio boutons. Concernant l'ajout, ici je crée une boucle et je n'ajoute que des élèves. Maintenant, il va falloir que je différencie si c'est un élève ou si c'est un enseignant. Pour cela, on prend notre radio bouton « Elève. » et là tout un tas de méthodes. On a vu que dans la convention Java on utilise soit « Get », soit « Set. » En fait, pour les Booleans, on va utiliser « is » au lieu de « get », d'ailleurs, si je commence à écrire « is », j'ai tous les accesseurs qui renvoient que des booleans, c'est pour le petit détail. Nous, en l'occurence, on va prendre « isChecked » qui nous indique si notre radio bouton est coché ou non. Si mon radio bouton est coché, je crée mon élève, je lui donne un nom, un prénom et je l'ajoute. Sinon, je peux soit mettre un « else if » avec l'enseignant, mais le principe des radio boutons, c'est que comme il y en a déjà un qui est coché par défaut, vu que dans le XML on a précoché celui d'élève, je n'aurai pas la possibilité graphiquement de décocher les deux. C'est-à-dire que si je clique sur Enseignant, ça décochera élève mais ça cochera enseignant, donc, j'en aurai toujours au moins un des deux qui est coché. Je peux faire un « if else » sans souci. Donc, je vais faire exactement la même chose que pour élève, mais avec enseignant. Je crée mon enseignant : égal new enseignant. Ici, notre « enseignantBean », on va pouvoir lui transmettre soit aucun paramètre et faire comme élève, faire un « setNom » et « setPrénom », soit lui transmettre directement le nom et le prénom dans son constructeur, vu qu'on a créé un constructeur qui prend les deux attributs. On va plutôt faire cette stratégie. Il me reste à créer la collection d'enseignants. De la même manière que j'ai cré une collections d'élèves, je crée une collection d'enseignants de type « EnseignantBean. » Donc, ici la déclaration et maintenant l'instantiation. J'ai donc, deux collections : une d'élèves, une d'enseignants. Au moment de l'ajout, je peux ajouter mon enseignant dans ma collection d'enseignants. Que j'ai fait ajouter ou ajouter plusieurs, j'atteris bien dans la méthode ajouter et j'ai bien redirigé soit sur enseignant, soit sur élève. Pour rafraîchir l'écran, ici, je n'affiche que mes élèves. Je vais maintenant séparer les deux. Ici, je vais écrire Elèves :/n, puis, je vais avoir ma liste de tous mes élèves et derrière, je vais faire exactement pareil avec enseignant, sauf que je vais réutiliser ma variable résultat pour la compléter, un petit plus, sinon ça va remplacer le texte déjà existant. Je vais refaire une boucle FOREACH, mais cette fois sur les enseignants, sur ma collection d'enseignants. Alors, ici, j'ai fait un copier coller. Il ne me reste plus qu'à copier-coller mes enseignants à la place de mes élèves. Mon enseignant n'a pas la méthode « isAdulte », on n'en a pas parlé, on peut l'enlever. J'ai donc, fait mon affichage. Il ne me reste plus qu'à supprimer le dernier, et pour supprimer le dernier, on refait comme pour l'ajout, « if (rb_eleve.isChecked) », c'est qu'on supprime le dernier élève, sinon, on fait la même chose pour l'enseignant. Alors, ici, j'ai fait un copier-coller de ce code-là. On voit ici qu'on peut facilement faire l'erreur de n'en mettre que deux sur trois, et au final, on se retrouve ici avec la possibilité d'avoir un « out of band exceptions », parce qu'on n'a pas fait attention à notre copier-coller. Une façon simple de vérifier qu'on a bien tout remplacé, c'est de sélectionner le texte justement que l'on remplace. Et là, on peut voir qu'en surligné il y a toutes les utilisations de la variable et ici, elles apparaissent en vert. Donc, là je vois bien que mon élève n'a pas bien été remplacé. C'est une petite astuce pour s'améliorer dans les copier-coller. J'ai maintenant remplacé mon enseignant partout. On teste. J'ai bien mes élèves, mes enseignants qui sont séparés. Je supprime le dernier enseignant, je supprime le dernier élève. Parlons maintenant du polymorphisme. Ici, j'ai la méthode « getNom » qui est appliquée à la variable Élève. Ici, j'ai la méthode «getNom », mais cette fois appliquée à la variable « EnseignantBean. » Donc, ces deux méthodes ont exactement le même nom, mais c'est le contexte qui fait qu'on va utiliser la méthode « getNom » de la classe Élèves ou la méthode « getNom » de la classe « EnseignantBean. » Dans la classe « EnseignantBean », j'ai deux constructeurs : un qui ne prend pas de paramètres, un qui prend deux paramètres. Là, c'est la même chose, c'est le contexte qui va faire en sorte qu'on appelle soit l'un, soit l'autre. Une méthode a ce qu'on appelle une signature. C'est ce qu'il permet de la représenter. Sa signature est déterminée par sa visibilité. Est-ce qu'elle est publique ou est-ce qu'elle est « private » ? Et en existe un autre qu'on verra plus tard. Est-ce qu'elle statique ou non ? Quelle est sa valeur de retour ? « Void, int, string. » Quel nom elle possède ? Le nombre et le type de ses paramètres. Et si elle retourne une exception ou non. On verra plus tard les exceptions. Grâce au polymorphisme et en fonction du contexte, c'est une méthode plutôt qu'une autre qui sera appelée. On reviendra sur la signature des méthodes, dans la séquence sur le fonctionnement de l'héritage. On y verra que la signature d'une méthode peut être importante. Donc, pour résumer le principe du polymorphisme, c'est en fonction du contexte qu'on saura quelle méthode sera appelée.

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 !