Cours avancé de développement Python
Chapitre
>
Niveau
Classes Avancées
Polymorphisme de classe
Objectif
Terminez de préparer quelques mélanges de vin afin qu'ils soient prêts à être traités en utilisant le polymorphisme de classes.
Il existe certains types de vin de spécialité qui nécessitent plus de préparation que d'autres et requièrent des ajouts supplémentaires avant de pouvoir être mélangés et vieillis pour obtenir un vin de qualité. Pour y parvenir, nous devons utiliser le polymorphisme de classes, qui est un moyen d'optimiser l'utilisation des objets créés à partir de classes. Cela se fait en faisant en sorte que les fonctions internes des classes partagent des propriétés afin qu'elles puissent toutes être appelées de la même manière malgré leur provenance de classes différentes.
Dans l'éditeur de code, vous trouverez quatre (4) classes qui incluent quatre types de vin différents : grape, cherry, strawberry et mango. Chaque classe aura deux fonctions nommées add() et take_action(). Bien que ces fonctions soient structurées de la même manière, leur contenu peut être différent. Chacune des classes doit avoir sa fonction take_action() complétée avec un matériau à placer.
Pour commencer, rendez-vous vers la marque en X lumineuse et faites face au bureau pour lire la note en utilisant la fonction read(). Notez les informations écrites qui vous indiqueront ce qui doit être ajouté dans la fonction take_action() de chaque classe. Par exemple, pour la classe grape, il faut ajouter "white oak" en utilisant la fonction place() comme illustré ci-dessous:
# Class for making grape wine
class grape:
def __init__(self,item):
self.name = "grape"
self.item = item
# Adds materials
def add(self):
player.speak("%s are added to the %s mixture." % (self.item, self.name))
# Take actions
def take_action(self):
player.place(self.name)
# New code added
player.place("white oak")
Une fois que tous les matériaux nécessaires ont été ajoutés aux fonctions des classes, rendez-vous vers la marque en X doré et récupérez les ingrédients à placer dans les mélanges de vin. Utilisez la fonction collect() pour récupérer la constante de liste nommée ingredients, et vérifiez son contenu avec la fonction speak().
Rendez-vous ensuite au bas de la carte et collectez les quatre (4) sacs de fruits et baies pour disposer des composants nécessaires à la finition du mélange de vin.
Maintenant que tout a été collecté, il est temps d'ajouter tous les matériaux pour terminer les mélanges de vin. Créez des objets des classes en remplissant leur argument; il devrait y avoir quatre (4) objets: grape_mix, cherry_mix, strawberry_mix et mango_mix.
Pour chaque objet, définissez la classe qui correspond au nom et ajoutez l'élément qui doit être mélangé conformément à la liste que vous avez collectée. Pour grape, il y a "nothing" à ajouter, pour cherry ajoutez "pure water", pour strawberry ajoutez "sugar" et pour mango ajoutez "spice". Par exemple, un objet défini devrait ressembler à ceci: grape_mix = grape("nothing")
Une fois que les objets ont été créés, il est temps de mettre le polymorphisme de classes à profit. Rendez-vous vers la marque en X sombre sous le tapis rouge, faites face au tonneau et utilisez la boucle configurée dans l'éditeur de code. La boucle vous permettra de naviguer vers chaque baril de vin sur la rangée du bas et d'ajouter les éléments nécessaires pour compléter leurs mélanges.
Le tapis red nécessite le strawberry_mix, le tapis purple nécessite le cherry_mix, le tapis green nécessite le grape_mix et le tapis orange nécessite le mango_mix. Ajoutez les éléments dans la boucle dans l'ordre dans lequel ils sont présentés sur la carte de gauche à droite. Par exemple:
for mix in (strawberry_mix, mango_mix, cherry_mix): mix.add() mix.take_action() player.turn_right() player.move_forward(2) player.turn_left()
Comme dans l'exemple, les mélanges correspondent à la disposition des tapis de gauche à droite, c'est-à-dire: red, orange, purple correspondent respectivement à strawberry_mix, mango_mix, cherry_mix. Une fois la séquence terminée, rendez-vous vers la marque en X sombre sur le tapis green, faites face au tonneau, et répétez la même opération avec la seconde boucle configurée dans l'éditeur de code. Cette fois-ci, effectuez le parcours de droite à gauche avec les couleurs des tapis (green, purple, orange) telles qu'indiquées sur la carte pour terminer le niveau.