# מערך שיעור: מחלקות, שדות וקונסטרוקטורים📋 מערך מרצה

משך: 2 שעות אקדמיות (90 דקות).

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

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

דגש קריטי: זהו שיעור הפתיחה של כל יחידת ה-OOP — הוא קובע את השפה (Class/Object/Field) שכל שאר היחידה נשענת עליה. השקיעו זמן בביסוס נכון.

---

## מהלך השיעור

| חלק בשיעור | משך | הערות ודגשים |
| --- | --- | --- |
| פתיחה וחיבור | 5 דקות | הראו קוד עם `student1Name`, `student1Age`, `student2Name`... — "מה אם יש 30 תלמידים?" |
| הבעיה: משתנים מפוזרים | 10 דקות | הדגישו סיכון לחוסר-סנכרון בין מערכים מקבילים |
| הרעיון: class | 15 דקות | הגדרת Student עם שדות בלבד, בלי קונסטרוקטור עדיין |
| קונסטרוקטור | 20 דקות | הוסיפו קונסטרוקטור, הסבירו "רץ פעם אחת ביצירה" |
| this | 15 דקות | הראו קונפליקט שם פרמטר/שדה בלי this, ואז עם this |
| תרגול מודרך | 15 דקות | תרגיל 1+2 |
| שאלות + סיכום | 10 דקות | חיזרו על Class מול Object |

---

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

- "תבנית מול מופע" היא האנלוגיה החשובה ביותר בשיעור הזה — כדאי אנלוגיה מוחשית (עוגיות מתבנית אחת, כל עוגייה עצמאית) לפני שעוברים לקוד.
- הדגימו בפירוש ששינוי בשדה של מופע אחד לא משפיע על מופע אחר — זו הנקודה שהכי מבססת את המושג "עצמאות בין מופעים".
- `public` על השדות כאן הוא זמני ומכוון — אל תתעכבו על "האם זה נכון" כרגע, רק ציינו שהשיעור הבא יטפל בזה.

---

## מושגים

**Class** — תבנית שמגדירה שדות ומתודות לישות מסוימת.
**Object (Instance)** — מופע קונקרטי שנוצר מהתבנית עם `new`.
**Field** — משתנה ששייך למחלקה, חלק מהמצב של כל מופע.
**Constructor** — מתודה שרצה פעם אחת ביצירת מופע חדש.
**`this`** — מתייחס למופע הנוכחי עצמו.

---

## תרגיל חשיבה

**שאלת פתיחה:** "אם הייתם צריכים לנהל 100 תלמידים בלי מחלקות — רק משתנים בודדים — כמה משתנים הייתם צריכים, וכמה קל היה לטעות?"

**מהלך:** תנו לסטודנטים לחשב (100 תלמידים × 3 שדות = 300 משתנים). הובילו לתובנה שהבעיה לא רק "הרבה משתנים" אלא **חוסר קשר פורמלי** ביניהם — שום דבר לא מונע לעדכן `studentName5` בטעות ולשכוח את `studentAge5` המקביל.

**מה המרצה מראה בסוף:** צרו 3 מופעי `Student` בלולאה (או ידנית), אחסנו אותם ב-`List<Student>`, ועברו עליהם עם `foreach` והדפיסו את כולם בשורה אחת קצרה — הראו כמה זה קצר וברור בהשוואה ל-300 המשתנים הבודדים שדיברתם עליהם בהתחלה.
