Coding for KidsCoding for Kids
Kreativní ÚrovněVýzvyPrůvodce pro Učitele
Hlasovat pro funkce
Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň

Pokročilé třídy
Třídní polymorfismus

Cíl

Dokončete přípravu některých směsí vína, aby byly připraveny na zpracování pomocí polymorfismu tříd.

Existují určité typy speciálních vín, které vyžadují více přípravy než ostatní a potřebují dodatečné přísady, než mohou být smíchány a stařeny do správného vína. Pro dosažení tohoto cíle musíme použít polymorfismus tříd, což je způsob, jak optimalizovat využití objektů vytvořených pomocí tříd. Toho je dosaženo tak, že vnitřní funkce tříd sdílí vlastnosti, takže mohou být volány stejným způsobem, i když pocházejí z různých tříd.

V editoru kódu budete mít nastaveny čtyři (4) třídy, které zahrnují čtyři různé typy vína: grape, cherry, strawberry a mango. Každá třída bude mít dvě funkce nazvané add() a take_action(), přestože jsou tyto funkce strukturovány stejným způsobem, obsah těchto funkcí může být odlišný. U každé třídy je třeba, aby byla funkce take_action() doplněna o materiál, který má být umístěn.

Začněte tím, že se přemístíte k lehkému X značce a otočíte se ke stolu, abyste přečetli poznámku pomocí funkce read(). Poznamenejte si informace, které jsou v ní uvedeny, protože vám řeknou, co je potřeba přidat do funkce take_action() každé třídy. Například u třídy grape je potřeba pomocí funkce place() přidat "white oak" tak, jak je znázorněno níže:

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

Jakmile budou do funkcí tříd přidány všechny materiály, které mají být umístěny, přesuňte se k zlaté X značce a seberte ingredience, které je třeba přidat do vinných směsí. Použijte funkci collect() k získání seznamové konstanty nazvané ingredients a zkontrolujte její obsah pomocí funkce speak().

Přejděte dolů na konec mapy a seberte čtyři (4) pytle s ovocem a bobulemi, abyste měli potřebné komponenty k dokončení vinné směsi.

Nyní, když máte vše sebráno, je čas přidat všechny materiály k dokončení vinných směsí. Vytvořte objekty tříd a naplňte jejich argumenty; měly by existovat čtyři (4) objekty: grape_mix, cherry_mix, strawberry_mix a mango_mix.

U každého objektu nastavte třídu, která odpovídá jménu, a přidejte položku, která má být smíchána v souladu se seznamem, který jste si sebrali. Pro grape se přidává "nothing", pro cherry přidejte "pure water", pro strawberry přidejte "sugar" a pro mango přidejte "spice". Jako příklad by definovaný objekt měl vypadat takto: grape_mix = grape("nothing")

Jakmile budou objekty vytvořeny, je čas využít polymorfismus tříd. Přejděte k tmavé X značce pod červeným kobercem, otočte se k sudu a použijte smyčku nastavenou v editoru kódu. Smyčka vám umožní projít jednotlivé vinné sudy v dolním řádku a přidat prvky potřebné k dokončení směsí.

Červený koberec vyžaduje strawberry_mix, fialový koberec vyžaduje cherry_mix, zelený koberec vyžaduje grape_mix a oranžový koberec vyžaduje mango_mix. Přidejte prvky do smyčky v pořadí, v jakém jsou na mapě zleva doprava. Například:

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

Jak je patrné z příkladu, směsi odpovídají uspořádání koberců zleva doprava, což znamená: red, orange, purple odpovídají strawberry_mix, mango_mix, cherry_mix. Jakmile bude sekvence dokončena, přesuňte se k tmavé X značce na zeleném koberci, otočte se k sudu a proveďte totéž se druhou smyčkou, která je nastavena v editoru kódu. Tentokrát ji proveďte zprava doleva s barvami koberců (green, purple, orange), jak je znázorněno na mapě, aby byla úroveň dokončena.

Kniha Kódu