disclaimer
כל מה שכתוב כאן זו דעתי האישית, וייתכן שסגל הקורס לא מסכים (אם אקבל הערות בנושא אשמח לתקן / לערוך / לעדכן בהתאם)
ראיתי הרבה הודעות פה בפורום הקורס (וגם בקבוצות אחרות שנוצרו סביב הקורס) שנושא המחלקות הוא מאוד מבלבל / קשה לתפיסה וכן הלאה, ואני אישית מאוד מסכימה, גם אני עדיין עושה הלוך-חזור בנושא. למיטב הבנתי מהודעות פה בפורום צפויה מחברת נוספת בנושא מחלקות, שאיני יודעת מה התוכן שלה יהיה. אני מצפה שיהיה בה תוכן חדש שאני לא יודעת לצפות (משפט חסר פואנטה?) אבל שבכל אופן כשלעצמה תהווה תרגול נוסף של הנושא, שאני באופן אישי חושבת שחזרה ותרגול זו הדרך הטובה ביותר ללמוד נושא חדש.
לאלו שכן רוצים עוד ועכשיו, חשבתי על כמה תרגילי מחשבה / תרגילים שאפשר לממש בפועל שאישית עוזרים לי בנושא, ושנגישים לכל משתתפי הקורס, והחלטתי לחלוק כאן.
כיוון המחשבה האישי שלי על בסיס מחברת מס’ 1 בשבוע 7 (בלבד) וייתכן שישתנה בהמשך, הוא שימוש במחלקות לצרכים הבאים:
- טיפול באובייקטים רבים שיש להם תכונות משותפות, או התנהגות שדומה מבחינות מסוימות, ושנוטים להזדקק לפעולות דומות. מעבר ליכולת ליצור אובייקטים שמתקיימים במקביל וניתן לגשת אליהם ב"גמישות" מבחינת זמן, סדר הפעולות שנעשות עליהם וכו’ יש גם אפשרות לטפל בכל האובייקטים במחלקה בבת אחת ע’י הענקת תכונות משותפות וכן הלאה (בעיני זה השימוש שהכי קל להבנה מבחינת מחלקות) את השימוש הזה קל לראות הדוגמת היוזרים במחברת, ומתרגיל “סקרנות” במחברת - נניח שחברת הסקרים שלנו מריצה 500 סקרים שונים עבור לקוחות שונים במקביל, זה נוח להסתכל על הקוד מזווית הראייה של סקר בודד.
- מחלקות בפייתון מגיעות עם מספר “פעולות קסם” שלעיתים עושות את החיים קלים יותר (פה הכרותי עם פעולות אלו עדיין קטנה מאוד, ומה שעשיתי באופן אישי זה לגשת לתיעוד בנושא, אין לי הרבה מה לתרום כאן)
- סידור הקוד, חלוקת הקוד, איגוד פונקציות שקשורות אחת לשניה מבחינת סוג המשתנים שאליהם אנחנו מייעדים אותן. בנושא זה גם קראתי בתיעוד של פייתון, ונראה לי שיש יתרונות שנובעים מריבוי מחלקות בקוד בכך שפעולות והגדרות מסוימות בתוך מחלקה לא “זולגות החוצה” למחלקות אחרות, ובכך מתאפשר שימוש בשמות עם חשש מינימלי ל’דריסה’ של קטעי קוד אחרים, בייחוד כשחלקי קוד ממקורות ויוצרים שונים מתערבבים ביחד. אני חושבת שחלק מזה אפשר לראות בשימוש במודולים.
כיוון ששימוש (1) הוא הקל לי ביותר לתפוס, חשבתי על מספר תרגילים שהכי קשורים לזה, בתקווה שתרגול שימוש במחלקות למטרה כלשהיא יהפוך את הנושא ל"זורם" יותר בשבילי, ובכך אוכל בהמשך להבין ולהשתמש במחלקות גם לשימושים האחרים שלהן. אז ככה:
מתוך שבוע 4, מחברת 3:
.* ספריות: במהלך המחברת הוצגו מספר ספריות, הכוללות תכונות ופעולות נפוצות.
האם ניתן לבנות ספרייה כמחלקה? מה תבחרו כאובייקט: את הספר? את הסופר? במה זה דומה או שונה ממבני הנתונים המוצגים במחברת? אילו תכונות כדאי לדרוש מכל מופע במחלקת הספרייה? איך כדאי להעניק את התכונות האלו? מהן הפעולות הנפוצות שתרצו להשתמש בהן בספרייה?
לאחר שלב ראשון של רשימת הדרישות מהספרייה, ממשו אותה!
“עוד לבנה בחומה” - מחלקת בנייה.
ממשו את התרגיל, הפעם כמחלקה בה כל סטודנט הוא אובייקט. על הפעולה self.final_grade לספק את הציון הסופי כפי שמוגדר בתרגיל.
“הקינוח הכי זול” - בתרגיל ‘חתכת עוגה’ (שבוע 5, מחברת 2) חישבנו את עלות הכנת העוגה. אני אוהבת לשמור חוברת מתכונים, בה כל מתכון לקינוח הוא מופע, וכשמתחשק לי לבשל, אני רוצה לדעת מה עלות המתכון ע"פ עלות המוצרים בחנות של קשטן היום (הוא מפרסם את רשימת המוצרים ועלותם ל-100 גר’ באתר האינטרנט של החנות שלו מדי יום. ניתן להוריד את הרשימה מהאתר כמילון, או כקובץ CSV אם בא לכם לתרגל עוד משהו)