דף הבית  שיעורים  הורשה וגישה  הרשאות גישה - המשך
 
הרשאות גישה - המשך
 
בתוספת ל-public ו-private ניתן להשתמש גם במילת הגישה protected. הגדרת גישה זו מאפשרת את הנתונים לתת המחלקות בלבד.
כאשר משתנה מחלקה (או פונקצית חבר) מוגדר כ-protected, הגישה אליו אסורה לכל אלמנט בתוכנית שאינו שייך למחלקה לה המשתנה שייך. ההבדל לעומת גישת ה-private הוא, שבעוד שלמשתנה המוגדר כ-private יכולים לגשת רק אלמנטים של המחלקה בה הוא מוגדר, למשתנה המוגדר כ-protected יכולים לגשת אלמנטים של מחלקות בהן הוא מופיע, כלומר מחלקות היורשות מהמחלקה בה הוא הוגדר.
לדוגמא:

class Base {
protected:
 int i;
public:
 void Set(int a) { i = a; }
};

class Sub:public Base {
private:
 int k;
public:
 void Setk() { k = i+1; }
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

הפונקציה Setk שבמחלקה Sub ניגשת למשתנה המחלקה i שנורש מהמחלקה Base מכיוון שהוא מוגדר במחלקה Base כ-protected. אם המשתנה i היה מוגדר במחלקה Base כ-private, אלמנטים של המחלקה Sub לא היו יכולים לגשת אליו.
במצב בו לתת המחלקה יש תת מחלקה משל עצמה, משתנה המחלקה המוגדר במחלקת האב הראשונה כ-protected יהיה נגיש גם לתת המחלקה האחרונה. לדוגמא נוסיף את המחלקה הבאה:

class SubSub:public Sub {
private:
 int m;
public:
 void Setm() { m = i+2; }
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

המחלקה SubSub יכולה גם היא לגשת אל המשתנה i המוגדר כ-protected במחלקת האב - Base.
חשוב לזכור להשתמש בגישת protected במידת הצורך, כדי לאפשר למחלקות היורשות ממנה להשתמש בכל הנתונים הדרושים להן.
שיעור זה מגדיר תכונה חשובה של תכנות מונחה עצמים - כימוס (incapsulation).
הכוונה בכימוס היא שניתן לשלוט על אילו אלמנטים במחלקה פתוחים למשתמשים חיצוניים, כלומר החבאת מימוש המחלקה מגורמים חיצוניים, כך שהמשתמשים יצטרכו לדאוג רק לממשק למחלקה.