תרגול OOP לגאמא: מחלקות, ירושה והרכבה

מאת ארז ברזאני · תרגול מקורי של GammaCyber

שש שאלות מקוריות על תכנון אובייקטים. בכל תרחיש בוחנים אחריות, חוזה ותלות, ומבדילים בין ירושה שמבטאת יחס מתאים לבין שימוש בירושה רק כדי לחסוך שורות.

הדוגמה: משלוח בשתי דרכים

מערכת משלוחים צריכה לתמוך בדואר ובאיסוף עצמי. אפשר להגדיר לכל שיטת משלוח פעולה בשם price שמחזירה עלות, ולהעביר אובייקט שיטה להזמנה. ההזמנה משתמשת בחוזה ואינה חייבת לדעת איזו מחלקה מממשת אותו. זו דוגמה להרכבה ולהפרדת אחריות.

מתי בודקים ירושה

שאלו אם אובייקט הבן יכול לעמוד בכל ההבטחות של הבסיס. אם בסיס מבטיח שאפשר לשמור מסמך והבן זורק תמיד שגיאה, שינוי הטיפוס עלול להפר את הציפייה. לפעמים ממשקים נפרדים קטנים או הרכבה מסבירים את המודל טוב יותר.

תרגול עצמאי עם הסברים

נסו לענות לפני פתיחת ההסבר. אפשר לעבוד ללא שעון או לבחור זמן אימון משלכם.

שאלה 1: הזמנה מחזיקה אובייקט Delivery. איזה קשר זה?

  1. הרכבה
  2. ירושה בהכרח
  3. משתנה גלובלי
תשובה והסבר

הרכבה: הזמנה משתמשת בשירות שמוחזק בתוכה; היא אינה סוג של משלוח.

שאלה 2: מה הרווח מפולימורפיזם?

  1. אותו קוד קורא לחוזה משותף במימושים שונים
  2. אין צורך בבדיקות
  3. אין אפשרות לשגיאות
תשובה והסבר

אותו קוד קורא לחוזה משותף במימושים שונים: שני המימושים צריכים לעמוד באותו חוזה כדי שהקורא יוכל להשתמש בהם באופן עקבי.

שאלה 3: מה מטרת encapsulation?

  1. לשמור אינווריאנטים דרך ממשק
  2. להסתיר כל פונקציה
  3. להפוך כל שדה לגלובלי
תשובה והסבר

לשמור אינווריאנטים דרך ממשק: אפשר לרכז ולידציה בעדכון מצב במקום לאפשר שינוי בלתי מבוקר.

שאלה 4: מה עדיף כאשר דרכי משלוח מתחלפות בזמן ריצה?

  1. בהכרח ירושה עמוקה
  2. אובייקט אסטרטגיה שניתן להחליף
  3. העתקת כל המחלקה
תשובה והסבר

אובייקט אסטרטגיה שניתן להחליף: הרכבה מאפשרת החלפת התנהגות בלי לשנות את טיפוס ההזמנה.

שאלה 5: האם ירושה תמיד משפרת שימוש חוזר?

  1. כן
  2. לא; תלות במימוש בסיס יכולה להקשות על שינוי
  3. רק בשפת Python
תשובה והסבר

לא; תלות במימוש בסיס יכולה להקשות על שינוי: שימוש חוזר הוא שיקול אחד; תאימות לחוזה ומורכבות חשובים לא פחות.

שאלה 6: איזו בדיקה טובה לחוזה price?

  1. בדיקה משותפת לכל מימוש על קלט תקף וקלט גבולי
  2. רק שם המחלקה
  3. מספר שורות
תשובה והסבר

בדיקה משותפת לכל מימוש על קלט תקף וקלט גבולי: בדיקה צריכה לאמת את ההבטחות שכל מימוש נדרש לקיים.

הכפתור מסמן סיום לפי הדיווח שלכם; פתיחת פתרון אינה בדיקת ידע.

הצעד הבא בלמידה

בחרו עיקרון אחד שעדיין לא ברור, חזרו לדוגמה ונסו להסביר אותה במילים שלכם.

לשיעור הקשור בקורסלמפת הקורס וחלוקת התוכן

המשאבים בעמוד הזה פתוחים. חלק משיעורי הקורס זמינים בתצוגה מקדימה, וגישה מלאה בתשלום.

להמשך תרגול

מקורות טכניים וגבולות התרגול

המקורות מסבירים טכנולוגיה. הם אינם אסמכתה למבנה מיון צבאי. התוכן כאן עצמאי; הנחיות הזימון האישי הן הקובעות. מצאתם שגיאה? כתבו לנו.