מטרת הדף היא לעשות דיסאמביגואציה בין מינוח שמופיע לעיתים בהוראה (“תכונות”) לבין המינוח הרשמי ב־C#: ב־C# המילה Property / תכונה היא ישות שונה מ־Field / שדה.
הרעיון בשורה אחת
ב־C#:
- שדה (Field) הוא משתנה בתוך המחלקה (לרוב
private). - תכונה (Property) היא “עטיפה” שנראית מבחוץ, עם
get/set, ויכולה לבצע ולידציה/לוגיקה.
במשרד החינוך, לעיתים כשמבקשים לכתוב “תכונות” מתכוונים בפועל ל־שדות private (כלומר Fields), ולא ל־Properties.
דוגמה בסיסית ב־C#
| רכיב | #C משרד החינוך | C# Code |
|---|---|---|
| שדה (Field) |
|
|
| תכונה (Property) |
|
|
| דוגמה – קריאה (Get) |
|
|
| דוגמה – קביעה (Set) |
|
|
“ממשק” חיצוני לגישה/עדכון של ערך. נראה מבחוץ כמו נתון, אבל בפועל זו תחבירית פעולה/מנגנון עם get/set.
טבלה משווה — שדות מול תכונות (מטרת דיסאמביגואציה)
| מונח בהוראה (עברית) | המונח הרשמי ב־C# | מה זה בפועל? | איך מזהים בקוד? | למה זה חשוב? |
|---|---|---|---|---|
| "תכונה" (כמו שמופיע לפעמים בדרישות) | Field (שדה) |
משתנה פנימי במחלקה, לרוב private. זה *הנתון עצמו*.
|
שורה כמו private int age;
|
אם תלמיד/ה כותבים רק שדות — הם/ן עדיין לא כתבו Property. חשוב לדעת על מה בדיוק הדרישה מדברת. |
| "פעולות מאחזרות/קובעות" (לעיתים מדברים על get/set כ"פעולות") | Property (תכונה) | מנגנון גישה מבוקר לשדה (או לחישוב ערך). יכול לבצע ולידציה/לוגיקה. |
בלוק עם get/set או תכונה אוטומטית: public int X { get; set; }
|
מאפשר הכמסה אמיתית: לא לחשוף שדה, לשמור על כללים (למשל גיל לא שלילי), ולשנות מימוש בלי לשבור משתמשים. |
| "תכונה" (במובן הכללי: תיאור של אובייקט) | תלוי: Field או Property | לפעמים מתכוונים לנתון פנימי, ולפעמים לדרך החיצונית לגשת אליו. | מסתכלים מה מופיע בקוד בפועל. | זו בדיוק הסיבה לדף הזה: לא להתבלבל בין המונחים. |
כלל אצבע להוראה (שימושי בבדיקת עבודות)
אם כתוב private int x; — זה שדה (Field).
אם כתוב public int X { get; set; } או בלוק get/set — זו תכונה (Property).
הערה פדגוגית קצרה
כשנאמר בכיתה “תכונות” במובן של מה יש לאובייקט, קל להחליק למצב שבו מתכוונים לשדות. אבל בעולם של C# (וגם של OOP מודרני), תכונה (Property) היא כלי שמייצג גישה חיצונית מבוקרת — לא “סתם משתנה”.
במילים אחרות:
- שדה = הנתון
- תכונה = הדרך הנכונה לחשוף/לשנות את הנתון מבחוץ (או אפילו לחשב אותו)