Coding for KidsCoding for Kids
Kreative NivåerUtfordringerLærerveiledning
Stem på funksjoner
Avansert Pythonutviklingskurs
Kapittel
>
Nivå

Avanserte klasser
Klassepolymorfisme

Mål

Fullfør forberedelsen av noen vinblandinger slik at de kan være klare for prosessering ved å bruke klassepolymorfisme.

Det finnes visse typer spesialvin som krever mer forberedelse enn andre og forutsetter ekstra tilsetninger før de kan blandes og eldes til riktig vin. For å oppnå dette må vi bruke klassepolymorfisme, som er en måte å optimalisere bruken av objekter opprettet ved hjelp av klasser. Dette gjøres ved at de interne klassefunksjonene deler egenskaper, slik at de alle kan kalles på samme måte, til tross for at de tilhører forskjellige klasser.

I kodeeditoren vil du ha satt opp fire (4) klasser som inkluderer fire forskjellige typer vin: grape, cherry, strawberry og mango. Hver klasse vil ha to funksjoner kalt add() og take_action(). Selv om disse funksjonene er strukturert på samme måte, kan innholdet i dem være forskjellig. Hver klasse må ha sin take_action()-funksjon fylt ut med et materiale som skal plasseres.

For å starte, gå til det lyse X-merket og vend deg mot pulten for å lese notatet ved å bruke read()-funksjonen. Legg merke til informasjonen som er skrevet, da den vil fortelle deg hva som må legges til i take_action()-funksjonen i hver klasse. For eksempel, i grape-klassen må "white oak" legges til ved hjelp av place()-funksjonen, slik det er illustrert 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 materialene som skal plasseres er lagt til i klassefunksjonene, gå til det gylne X-merket og hent ingrediensene som trengs til vinblandingene. Bruk collect()-funksjonen for å hente en listekonstant med navnet ingredients, og sjekk innholdet med speak()-funksjonen.

Gå til bunnen av kartet og samle de fire (4) posene med frukt og bær, slik at du får de nødvendige komponentene for å fullføre vinblandingen.

Nå som alt er samlet, er det på tide å legge til alle materialene for å fullføre vinblandingene. Opprett objekter av klassene og fyll inn argumentene deres; det skal være fire (4) objekter: grape_mix, cherry_mix, strawberry_mix og mango_mix.

På hvert objekt skal du sette klassen som tilsvarer navnet og legge til elementet som skal blandes i, i henhold til listen du samlet. For grape legges det til "nothing", for cherry legges det til "pure water", for strawberry legges det til "sugar" og for mango legges det til "spice". Som et eksempel skal et definert objekt se slik ut: grape_mix = grape("nothing")

Når objektene er opprettet, er det på tide å bruke klassepolymorfisme. Gå til det mørke X-merket under det røde teppet, vend deg mot tønnen og bruk løkken som er satt opp i kodeeditoren. Løkken lar deg navigere til hver vintønne i den nederste raden og får deg til å legge til de elementene som trengs for å fullføre blandingene.

Det red teppet trenger strawberry_mix, det purple teppet trenger cherry_mix, det green teppet trenger grape_mix og det orange teppet trenger mango_mix. Legg til elementene i løkken i den rekkefølgen de er presentert i kartet fra venstre mot høyre. 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 tilsvarer blandingene hvordan teppene er plassert fra venstre mot høyre, altså: red, orange, purple tilsvarer strawberry_mix, mango_mix, cherry_mix. Når sekvensen er fullført, gå til det mørke X-merket på det grønne teppet, vend deg mot tønnen, og gjør det samme med den andre løkken som er satt opp i kodeeditoren. Denne gangen skal den gå fra høyre mot venstre med fargene på teppene (green, purple, orange), slik det vises i kartet, for å fullføre nivået.

Kodebok