Coding for KidsCoding for Kids
Δημιουργικά ΕπίπεδαΠροκλήσειςΟδηγός Εκπαιδευτικού
Ψηφίστε για λειτουργίες
Προχωρημένο Μάθημα Ανάπτυξης σε Python
Κεφάλαιο
>
Επίπεδο

Προηγμένες Τάξεις
Πολυμορφισμός Κλάσης

Στόχος

Ολοκληρώστε την προετοιμασία μερικών μείξεων κρασιού ώστε να είναι έτοιμες για επεξεργασία χρησιμοποιώντας τον πολυμορφισμό κλάσεων.

Υπάρχουν ορισμένοι τύποι ειδικού κρασιού που απαιτούν περισσότερη προετοιμασία από άλλους και χρειάζονται επιπλέον προσθήκες πριν αναμειχθούν και ωριμάσουν σε κατάλληλο κρασί. Για να το πετύχουμε αυτό, πρέπει να χρησιμοποιήσουμε τον πολυμορφισμό κλάσεων, ο οποίος αποτελεί έναν τρόπο βελτιστοποίησης της χρήσης αντικειμένων που δημιουργούνται με τις κλάσεις. Αυτό επιτυγχάνεται με το να μοιράζονται οι εσωτερικές συναρτήσεις της κλάσης ιδιότητες, ώστε να μπορούν όλες να καλούνται με τον ίδιο τρόπο, παρά το γεγονός ότι προέρχονται από διαφορετικές κλάσεις.

Στον επεξεργαστή κώδικα έχετε δημιουργήσει τέσσερις (4) κλάσεις που περιλαμβάνουν τέσσεριους διαφορετικούς τύπους κρασιού: grape, cherry, strawberry και mango. Κάθε κλάση θα έχει δύο συναρτήσεις με ονόματα add() και take_action(), παρόλο που αν και έχουν την ίδια δομή, το περιεχόμενο τους μπορεί να διαφέρει. Κάθε μία από τις κλάσεις πρέπει να έχει τη συνάρτηση take_action() ολοκληρωμένη με το υλικό που πρέπει να τοποθετηθεί.

Για αρχή, περπατήστε προς το φωτεινό σημάδι X και στραφείτε προς το γραφείο για να διαβάσετε τη σημείωση χρησιμοποιώντας τη λειτουργία read(). Καταγράψτε τις πληροφορίες που αναγράφονται, οι οποίες θα σας δείξουν τι πρέπει να προστεθεί στη συνάρτηση take_action() κάθε κλάσης. Για παράδειγμα, στην κλάση grape πρέπει να προστεθεί το "white oak" χρησιμοποιώντας τη λειτουργία place() όπως φαίνεται παρακάτω:

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

Μόλις προστεθούν όλα τα υλικά που πρέπει να τοποθετηθούν στις συναρτήσεις της κλάσης, περπατήστε προς το χρυσό σημάδι X και μαζέψτε τα συστατικά που χρειάζονται να τοποθετηθούν στις μείξεις του κρασιού. Χρησιμοποιήστε τη λειτουργία collect() για να πάρετε μια λίστα σταθερών με το όνομα ingredients και ελέγξτε το περιεχόμενό της χρησιμοποιώντας τη λειτουργία speak().

Περπατήστε στο κάτω μέρος του χάρτη και μαζέψτε τις τέσσερις (4) σακούλες με φρούτα και μούρα, ώστε να έχετε τα απαραίτητα συστατικά για να ολοκληρώσετε τη μείξη του κρασιού.

Τώρα που όλα έχουν μαζευτεί, ήρθε η ώρα να προστεθούν όλα τα υλικά για να ολοκληρωθούν οι μείξεις του κρασιού. Δημιουργήστε αντικείμενα από τις κλάσεις και περάστε το επιχείρημά τους, θα πρέπει να υπάρχουν τέσσερα (4) αντικείμενα: grape_mix, cherry_mix, strawberry_mix και mango_mix.

Σε κάθε αντικείμενο, ορίστε την κλάση που αντιστοιχεί στο όνομά του και προσθέστε το στοιχείο που πρέπει να αναμειχθεί σύμφωνα με τη λίστα που μαζεύσατε. Για το grape προστίθεται το "nothing", για το cherry προσθέστε το "pure water", για το strawberry προσθέστε το "sugar" και για το mango προσθέστε το "spice". Για παράδειγμα, ένα καθορισμένο αντικείμενο πρέπει να μοιάζει ως εξής: grape_mix = grape("nothing")

Μόλις δημιουργηθούν τα αντικείμενα, είναι ώρα να αξιοποιήσετε τον πολυμορφισμό κλάσεων. Περπατήστε προς το σκοτεινό σημάδι X κάτω από το κόκκινο χαλί, στραφείτε προς το βαρέλι και χρησιμοποιήστε τον βρόχο που έχει ρυθμιστεί στον επεξεργαστή κώδικα. Ο βρόχος θα σας επιτρέψει να μεταβείτε σε κάθε βαρέλι κρασιού στη χαμηλή σειρά και να προσθέσετε τα στοιχεία που απαιτούνται για την ολοκλήρωση των μείξεών τους.

Το χαλί red χρειάζεται το strawberry_mix, το χαλί purple χρειάζεται το cherry_mix, το χαλί green χρειάζεται το grape_mix και το χαλί orange χρειάζεται το mango_mix. Προσθέστε τα στοιχεία στον βρόχο με τη σειρά που εμφανίζονται στον χάρτη από τα αριστερά προς τα δεξιά. Για παράδειγμα:

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

Όπως στο παράδειγμα, οι μείξεις αντιστοιχούν στη σειρά τοποθέτησης των χαλιών από τα αριστερά προς τα δεξιά, δηλαδή: red, orange, purple αντιστοιχούν σε strawberry_mix, mango_mix, cherry_mix. Μόλις ολοκληρωθεί η ακολουθία, περπατήστε προς το σκοτεινό σημάδι X στο πράσινο χαλί, στραφείτε προς το βαρέλι και επαναλάβετε τη διαδικασία με τον δεύτερο βρόχο που έχει ρυθμιστεί στον επεξεργαστή κώδικα. Αυτή τη φορά, ο βρόχος θα είναι από δεξιά προς τα αριστερά με τα χρώματα των χαλιών (green, purple, orange) όπως φαίνεται στον χάρτη, προκειμένου να ολοκληρωθεί το επίπεδο.

Βιβλίο Κώδικα