Coding for KidsCoding for Kids
Kreative NiveauerUdfordringerLærervejledning
Stem på funktioner
Avanceret Python Udviklingskursus
Kapitel
>
Niveau

Avancerede klasser
Klassepolymorfi

Mål

Færdiggør forberedelsen af nogle vinblandinger, så de er klar til forarbejdning ved at bruge klassepolymorfi.

Der er visse typer specialvin, der kræver mere forberedelse end andre og har brug for ekstra tilsætninger, før de kan blandes og lagres til rigtig vin. For at opnå dette skal vi bruge klassepolymorfi; dette er en måde at optimere brugen af objekter, der er oprettet med klasser. Dette gøres ved, at de interne klasses funktioner deler egenskaber, så de alle kan kaldes på samme måde, selvom de kommer fra forskellige klasser.

I kode editoren har du sat fire (4) klasser op, som omfatter fire forskellige typer vin: grape, cherry, strawberry og mango. Hver klasse vil have to funktioner med navnet add() og take_action(). Selvom disse funktioner er struktureret på samme måde, kan indholdet i funktionerne være forskelligt. Hver af klasserne skal have deres take_action()-funktion udfyldt med et materiale, der skal placeres.

For at starte skal du gå til det lyse X-mærke og vende dig mod skrivebordet for at læse noten med funktionen read(). Notér informationen, der står, og som fortæller dig, hvad der skal tilføjes i hver klasses take_action()-funktion. For eksempel skal klassen grape have "white oak" tilføjet med funktionen place() som illustreret nedenfor:

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

Når alle materialerne, der skal placeres, er tilføjet til klassefunktionerne, skal du gå til det guldfarvede X-mærke og hente ingredienser, der skal placeres i vinblandingerne. Brug funktionen collect() til at hente en liste-konstant med navnet ingredients, og tjek indholdet med funktionen speak().

Gå til bunden af kortet og indsamle de fire (4) poser med frugt og bær, så du har de nødvendige komponenter til at færdiggøre vinblandingen.

Nu hvor alt er indsamlet, er det tid til at tilføje alle materialerne for at fuldende vinblandingerne. Opret objekter af klasserne og giv dem et argument; der skal være fire (4) objekter: grape_mix, cherry_mix, strawberry_mix og mango_mix.

For hvert objekt skal du sætte den klasse, der svarer til navnet, og tilføje det element, der skal blandes i, i overensstemmelse med den liste, du indsamlede. For grape skal der tilføjes "nothing", for cherry skal der tilføjes "pure water", for strawberry skal der tilføjes "sugar", og for mango skal der tilføjes "spice". For eksempel skal et defineret objekt se således ud: grape_mix = grape("nothing")

Når objekterne er oprettet, er det tid til at sætte klassepolymorfi i spil. Gå til det mørke X-mærke under det røde tæppe, vend dig mod tønden, og brug løkken, der er sat op i kode editoren. Løkken gør det muligt for dig at navigere til hver vin tønde i den nederste række og få dig til at tilføje de elementer, der skal til for at fuldende deres blandinger.

Det røde tæppe har brug for strawberry_mix, det lilla tæppe har brug for cherry_mix, det grønne tæppe har brug for grape_mix, og det orange tæppe har brug for mango_mix. Tilføj elementerne til løkken i den rækkefølge, de præsenteres på kortet fra venstre mod højre. For eksempel:

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

Som i eksemplet svarer blandingerne til, hvordan tæpperne er placeret fra venstre mod højre, hvilket betyder: red, orange, purple svarer til strawberry_mix, mango_mix, cherry_mix. Når sekvensen er fuldført, skal du gå til det mørke X-mærke på det grønne tæppe, vende dig mod tønden, og gøre det samme med den anden løkke, der er sat op i kode editoren. Denne gang skal den køre fra højre mod venstre med tæppernes farver (green, purple, orange) som vist på kortet for at fuldende niveauet.

Kodebog