Coding for KidsCoding for Kids
Kreatív SzintekKihívásokTanári Útmutató
Szavazzon a funkciókra
Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint

Haladó osztályok
Osztály polimorfizmus

Célkitűzés

Készítsd el a bor keverékeket, hogy feldolgozásra készek legyenek, az osztálypolimorfizmus használatával.

Bizonyos típusú speciális borokat több előkészítésre van szükség, illetve extra hozzávalókat igényelnek, mielőtt keverékké és érett borral összeállítva feldolgozhatóak lennének. Ennek eléréséhez osztálypolimorfizmust kell alkalmaznunk, amely egy módja annak, hogy optimalizáljuk az osztályokból létrehozott objektumok használatát. Ez úgy valósul meg, hogy az osztály belső függvényei megosztanak bizonyos tulajdonságokat, így ugyanúgy meghívhatóak, annak ellenére, hogy különböző osztályokból származnak.

A kódszerkesztőben négy (4) osztályt találsz, amelyek négy különböző borfajtát tartalmaznak: grape, cherry, strawberry és mango. Mindegyik osztálynak két függvénye lesz, add() és take_action() néven. Annak ellenére, hogy ezek a függvények ugyanígy vannak felépítve, a tartalmuk eltérhet. Mindegyik osztálynak a take_action() függvényébe olyan anyagot kell elhelyezni, amelyet be kell állítani.

Kezdetként menj a fényes X jel felé, és fordulj a pulthoz, hogy a read() függvény segítségével elolvasd a jegyzetet. Jegyezd fel az ott leírt információkat, amelyek megmondják, hogy mit kell hozzáadni az egyes osztályok take_action() függvényéhez. Például a grape osztály esetében a player.place() függvénnyel a "white oak" kell, hogy hozzá legyen adva, ahogy az alább látható:

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

Miután az összes beállítandó anyagot hozzáadtad az osztályfüggvényekhez, menj az arany X jel felé, és gyűjtsd be azokat az összetevőket, amelyeket a bor keverékekhez kell hozzáadni. Használd a collect() függvényt az ingredients nevű listaállandó begyűjtéséhez, és ellenőrizd a tartalmát a speak() függvény segítségével.

Menj a térkép aljához, és gyűjtsd be a négy (4) gyümölcs és bogyó táskáját, hogy meglegyenek a szükséges összetevők a bor keverék befejezéséhez.

Miután minden összegyűjtődött, itt az ideje, hogy hozzáadd az összes anyagot a bor keverékek befejezéséhez. Hozz létre az osztályok objektumait, és töltsd fel az argumentumukat; négy (4) objektumnak kell lennie: grape_mix, cherry_mix, strawberry_mix és mango_mix.

Minden objektum esetében állítsd be az osztályt, amely a nevüknek megfelelő, és add hozzá a keverendő elemet a begyűjtött lista szerint. A grape esetében "nothing" kerüljön hozzáadásra, a cherry esetében "pure water", a strawberry esetében "sugar", és a mango esetében "spice". Például egy objektum így nézzen ki: grape_mix = grape("nothing")

Miután az objektumok elkészültek, itt az ideje, hogy az osztálypolimorfizmust hasznosítsuk. Menj a sötét X jel felé, ami a piros szőnyeg alatt található, fordulj a hordó felé, és használd a kódszerkesztőben beállított ciklust. A ciklus lehetővé teszi, hogy végiglépkedj a alsó sorban lévő bor hordókon, és az összetevőket hozzáadd a keverékek befejezéséhez.

A red szőnyeghez a strawberry_mix, a purple szőnyeghez a cherry_mix, a green szőnyeghez a grape_mix és az orange szőnyeghez a mango_mix tartozik. Az összetevőket add hozzá a ciklusban abban a sorrendben, ahogy azok balról jobbra jelennek meg a térképen. Például:

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

Ahogyan a példában, a keverékek megegyeznek azzal, ahogy a szőnyegek elhelyezkednek balról jobbra, vagyis: red, orange, purple megfelel a strawberry_mix, mango_mix, cherry_mix sorrendjének. Miután az első szekvencia kész, menj a sötét X jelhez a zöld szőnyegen, fordulj a hordó felé, és használd ugyanezt a ciklust a kódszerkesztőben beállítva. Ezúttal azonban jobbról balra, a szőnyegek színeinek megfelelően (green, purple, orange), ahogyan a térképen látható, a szint befejezéséhez.

Kódkönyv