ראשי
סיכומים ומושגי יסוד
פולימורפיזם
attributes-encapsulation
סיכומיםתרגול מודרךבחנים

תכונות וכימוס המידע

תכונות (Attributes / Fields) הן המשתנים ששומרים את המידע או ה"מצב" של האובייקט. אחד מעקרונות הברזל של תכנות מונחה עצמים הוא כימוס (Encapsulation) - הסתרת מידע.

למה אנחנו צריכים את זה בכלל?

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

יש הבדל עצום בין טווח הערכים שטיפוס המשתנה יכול להכיל, לבין טווח הערכים ההגיוני והחוקי עבור התכונה שלנו. לדוגמה, במחלקה Date (תאריך), תכונת החודש מוגדרת כ-int. הטיפוס int יכול להכיל מספרים כמו מיליון או מינוס 50, אבל בעולם האמיתי, חודש תקין הוא אך ורק מספר בין 1 ל-12.

❌ בלי כימוס (Public)

כל אחד יכול לגשת ישירות לתכונה מבחוץ ולהכניס "זבל" למערכת. הקומפיילר לא יעצור אותו כי מבחינתו 50 הוא int חוקי:

Date d = new Date();
// שגיאה לוגית חמורה!
d.month = 50;

✅ עם כימוס (Private)

התכונה מוסתרת (Private). הגישה מותרת רק דרך פונקציה פנימית של המחלקה שמבצעת "בדיקת אבטחה":

public void setMonth(int m) {
  if (m >= 1 && m <= 12)
    this.month = m;
}

מתודות גישה: Getters & Setters

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

  • Getter (לקבלת הערך): הפונקציה תחזיר תמיד ערך מאותו הטיפוס של התכונה. אם החודש הוא int, הפונקציה getMonth() תחזיר int.
  • Setter (לעדכון הערך): הפונקציה תקבל כפרמטר ערך מאותו הטיפוס של התכונה. היא תשמש כ"שער בידוק" שמוודא את תקינות הערך לפני שהוא מוצב בפועל בתכונה (כמו בדוגמה למעלה).

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

תכונות וכימוס המידע | TeachERA.I