Coding for KidsCoding for Kids
Kreative LevelHerausforderungenLehrerhandbuch
Für Funktionen abstimmen
Fortgeschrittener Python-Entwicklungskurs
Kapitel
>
Stufe

Fortgeschrittene Klassen
Klassenpolymorphismus

Ziel

Bereite einige Weinmischungen fertig vor, damit sie durch den Einsatz von Klassenpolymorphismus verarbeitet werden können.

Es gibt bestimmte Arten von Spezialwein, die mehr Vorbereitung als andere benötigen und zusätzliche Zusätze erfordern, bevor sie gemischt und zu richtigem Wein ausgebaut werden können. Um dies zu erreichen, müssen wir Klassenpolymorphismus verwenden. Dies ist eine Methode, die Nutzung von mit Klassen erstellten Objekten zu optimieren. Dies geschieht, indem die internen Klassenfunktionen Eigenschaften teilen, sodass sie alle auf die gleiche Weise aufgerufen werden können, obwohl sie aus unterschiedlichen Klassen stammen.

Im Code-Editor hast du vier (4) Klassen eingerichtet, die vier verschiedene Weinsorten enthalten: grape, cherry, strawberry und mango. Jede Klasse verfügt über zwei Funktionen mit den Namen add() und take_action(). Obwohl diese Funktionen gleich strukturiert sind, können deren Inhalte unterschiedlich sein. Jede der Klassen muss ihre take_action()-Funktion mit einem Material, das platziert werden soll, versehen.

Gehe zunächst zum Licht-X-Zeichen und wende dich dem Schreibtisch zu, um die Notiz mit der read()-Funktion zu lesen. Notiere die enthaltenen Informationen, die dir sagen, was der take_action()-Funktion jeder Klasse hinzugefügt werden muss. Zum Beispiel muss bei der grape-Klasse mit der place()-Funktion, wie unten veranschaulicht, "white oak" hinzugefügt werden:

# 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")

Sobald alle Materialien, die platziert werden müssen, zu den Klassenfunktionen hinzugefügt wurden, gehe zum Gold-X-Zeichen und sammle die Zutaten, die in die Weinmischungen gegeben werden müssen. Verwende die collect()-Funktion, um eine Listenkonstante namens ingredients abzuholen, und überprüfe den Inhalt mithilfe der speak()-Funktion.

Gehe zum unteren Rand der Karte und sammle die vier (4) Taschen mit Früchten und Beeren, damit du die notwendigen Komponenten hast, um die Weinmischung fertigzustellen.

Jetzt, da alles gesammelt wurde, ist es an der Zeit, alle Materialien hinzuzufügen, um die Weinmischungen zu vervollständigen. Erzeuge Objekte der Klassen und befülle deren Argumente. Es sollten vier (4) Objekte erstellt werden: grape_mix, cherry_mix, strawberry_mix und mango_mix.

Setze bei jedem Objekt die Klasse, die dem Namen entspricht, und füge das Element hinzu, das in Übereinstimmung mit der gesammelten Liste gemischt werden soll. Für grape wird "nothing" hinzugefügt, für cherry füge "pure water" hinzu, für strawberry füge "sugar" hinzu und für mango füge "spice" hinzu. Zum Beispiel sollte ein definiertes Objekt so aussehen: grape_mix = grape("nothing")

Sobald die Objekte erstellt wurden, ist es Zeit, den Klassenpolymorphismus einzusetzen. Gehe zum dunklen X-Zeichen unter dem roten Teppich, wende dich dem Fass zu und nutze die im Code-Editor eingerichtete Schleife. Die Schleife ermöglicht es dir, zu jedem Weinfass in der unteren Reihe zu navigieren und die Elemente hinzuzufügen, die benötigt werden, um ihre Mischungen zu vervollständigen.

Der red Teppich benötigt das strawberry_mix, der purple Teppich benötigt das cherry_mix, der green Teppich benötigt das grape_mix und der orange Teppich benötigt das mango_mix. Füge die Elemente in die Schleife in der Reihenfolge ein, in der sie auf der Karte von links nach rechts dargestellt sind. Zum Beispiel:

for mix in (strawberry_mix, mango_mix, cherry_mix): mix.add() mix.take_action() player.turn_right() player.move_forward(2) player.turn_left()

Wie im Beispiel entsprechen die Mischungen der Anordnung der Teppiche von links nach rechts, was bedeutet: red, orange, purple entsprechen strawberry_mix, mango_mix, cherry_mix. Sobald die Sequenz abgeschlossen ist, gehe zum dunklen X-Zeichen auf dem grünen Teppich, wende dich dem Fass zu und wiederhole dasselbe mit der zweiten Schleife, die im Code-Editor eingerichtet ist. Diesmal soll sie von rechts nach links entsprechend der Reihenfolge der Teppichfarben (green, purple, orange) erfolgen, wie sie auf der Karte angegeben sind, um das Level abzuschließen.

Codebuch