Coding for KidsCoding for Kids
Poziomy KreatywneWyzwaniaPrzewodnik dla Nauczycieli
Głosuj na funkcje
Zaawansowany kurs programowania w Pythonie
Rozdział
>
Poziom

Zaawansowane klasy
Polimorfizm klasowy

Cel

Dokończ przygotowywanie mieszanek wina, aby mogły być przetwarzane, wykorzystując polimorfizm klas.

Istnieją pewne rodzaje specjalistycznych win, które wymagają więcej przygotowań niż inne i potrzebują dodatkowych składników, zanim zostaną zmieszane i poddane starzeniu, aby stać się prawidłowym winem. Aby to osiągnąć, musimy użyć polimorfizmu klas, co jest sposobem na optymalizację wykorzystania obiektów tworzonych przy użyciu klas. Osiąga się to poprzez dzielenie właściwości wewnętrznych funkcji klas, tak aby wszystkie mogły być wywoływane w ten sam sposób, mimo że pochodzą z różnych klas.

W edytorze kodu znajdziesz cztery (4) klasy, które obejmują cztery różne rodzaje wina: grape, cherry, strawberry oraz mango. Każda klasa będzie miała dwie funkcje o nazwach add() i take_action(). Pomimo że te funkcje są zbudowane w taki sam sposób, zawartość tych funkcji może się różnić. Każda z klas musi mieć w funkcji take_action() umieszczony materiał, który należy dodać.

Na początek przejdź do oznaczenia X z jasnym kolorem i zwróć się w stronę biurka, aby przeczytać notatkę za pomocą funkcji read(). Zwróć uwagę na informacje zapisane w notatce, które wskażą, co należy dodać do funkcji take_action() każdej klasy. Na przykład, w klasie grape należy dodać "white oak" za pomocą funkcji place(), jak pokazano poniżej:

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

Po dodaniu wszystkich materiałów, które muszą zostać umieszczone w funkcjach klas, przejdź do oznaczenia X w kolorze złota i zbierz składniki, które muszą zostać dodane do mieszanek wina. Użyj funkcji collect(), aby pobrać listę stałych o nazwie ingredients, a następnie sprawdź ich zawartość za pomocą funkcji speak().

Przejdź do dolnej części mapy i zbierz cztery (4) torby owoców i jagód, aby mieć niezbędne składniki do ukończenia mieszanki wina.

Teraz, skoro wszystko zostało zebrane, czas dodać wszystkie materiały, aby ukończyć mieszanki wina. Utwórz obiekty klas i przekaż im właściwy argument, powinny powstać cztery (4) obiekty: grape_mix, cherry_mix, strawberry_mix oraz mango_mix.

Dla każdego obiektu ustaw klasę odpowiadającą nazwie i dodaj składnik, który ma być zmieszany, zgodnie z listą, którą zebrałeś. Dla grape dodajesz "nothing", dla cherry dodajesz "pure water", dla strawberry dodajesz "sugar", a dla mango dodajesz "spice". Na przykład, zdefiniowany obiekt powinien wyglądać tak: grape_mix = grape("nothing")

Gdy obiekty zostaną utworzone, czas wykorzystać polimorfizm klas. Przejdź do ciemnego oznaczenia X pod czerwonym dywanikiem, zwróć się w stronę beczki i użyj pętli ustawionej w edytorze kodu. Pętla pozwoli Ci przejść przy każdej beczce wina w dolnym rzędzie i dodać elementy niezbędne do ukończenia ich mieszanek.

Dywanik w kolorze red potrzebuje strawberry_mix, dywanik purple potrzebuje cherry_mix, dywanik green potrzebuje grape_mix, a dywanik orange potrzebuje mango_mix. Dodaj elementy do pętli w kolejności, w jakiej są przedstawione na mapie od lewej do prawej. Na przykład:

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

W przykładzie mieszaniny odpowiadają ułożeniu dywaników od lewej do prawej, co oznacza: red, orange, purple odpowiadają kolejno strawberry_mix, mango_mix, cherry_mix. Gdy sekwencja zostanie zakończona, przejdź do ciemnego oznaczenia X na dywaniku green, zwróć się w stronę beczki i wykonaj to samo przy użyciu drugiej pętli ustawionej w edytorze kodu. Tym razem pętla powinna działać od prawej do lewej, zgodnie z kolorami dywaników (green, purple, orange), jak pokazano na mapie, aby ukończyć poziom.

Księga Kodów