משך: 1.5 שעות אקדמיות (68 דקות).

מטרת השיעור: הסטודנטים יבינו למה enum עדיף על מספרי-קסם ומחרוזות חופשיות, וישתמשו בו בביטחון.

בסוף השיעור הסטודנטים צריכים: להגדיר enum משלהם, להשתמש בו בהשוואות וב-switch, ולהסביר במילים שלהם למה הוא בטוח יותר ממחרוזת חופשית.

דגש קריטי: התחילו מדוגמת Magic Number אמיתית (status == 1) לפני שמזכירים את המילה enum — זו הבעיה שהוא פותר.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותהראו קוד עם if (status == 1) — שאלו “מה זה 1?”
הבעיה: Magic Number / מחרוזת שברירית15 דקותהראו גם גרסת מחרוזת עם typo (“pendingg”) שלא נתפס
הרעיון: enum15 דקותהגדרה, שימוש בהשוואה
קוד: switch על enum15 דקותהראו את הקריאות מול שרשרת if/else מקבילה
תרגול מודרך15 דקותתרגיל 1+2
שאלות + סיכום3 דקותחיזרו על “קבוצה סגורה, נבדקת בקומפילציה”

דגשים להעברת השיעור

  • אל תעמיקו יותר מדי בערך המספרי הפנימי של enum — זה פרט מעניין, לא הליבה. הליבה היא: קבוצה סגורה + בדיקת קומפילציה.
  • אם יש זמן, שווה להראות שניסיון להשתמש בערך שלא קיים ב-enum (למשל OrderStatus.Refunded שלא הוגדר) פשוט לא מתקמפל — משלים את התמונה מול המחרוזת השברירית.

מושגים

enum — טיפוס שמגדיר קבוצה סגורה וקבועה של ערכים. Underlying Value — הייצוג המספרי הפנימי של כל ערך ב-enum. Magic Number — מספר בקוד בלי הקשר ברור, קשה לפענוח.


תרגיל חשיבה

שאלת פתיחה: “יש לכם string status = \"Pending\". חבר לצוות כתב בטעות \"pendingg\" באחד המקומות. מתי תגלו את זה — ומה זה עולה לכם?”

מהלך: הובילו לתובנה: עם מחרוזת חופשית, זה מתגלה רק בזמן ריצה (אם בכלל — יכול פשוט “לא לעבוד” בשקט). עם enum, אותה טעות היא שגיאת קומפילציה — נתפסת לפני שהקוד בכלל רץ.

מה המרצה מראה בסוף: כתבו קוד עם string status ו-typo מכוון באחת ההשוואות — הריצו, והראו שהתוכנית “פשוט לא עושה מה שציפינו” בלי שום שגיאה. אחר כך אותו תרחיש עם enum ואיות שגוי של הערך — שגיאת קומפילציה מיידית וברורה.