קורס פיתוח מתקדם בפייתון
פרק
>
רמה
כיתות מתקדמות
פולימורפיזם מחלקתי
מטרה
סיים להכין כמה תערובות יין כך שיהיו מוכנות לעיבוד על ידי שימוש בפולימורפיזם מחלקתי.
ישנם סוגים מסוימים של יינות מיוחדים הדורשים יותר הכנה מאחרים ודורשים תוספות נוספות לפני שניתן לערבבם ולהזדקן ליין תקין. כדי להשיג זאת, עלינו להשתמש בפולימורפיזם מחלקתי, שהוא אופן לאופטימיזציה של השימוש באובייקטים שנוצרים באמצעות מחלקות. דבר זה נעשה על ידי כך שהפונקציות הפנימיות במחלקה חולקות תכונות כך שניתן לקרוא להן באותה צורה למרות שהן שייכות למחלקות שונות.
בעורך הקוד יוגדרו ארבע (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 ) כפי שמוצגים במפה, כדי להשלים את הרמה.