דף הבית  שיעורים  הורשה וגישה  הרשאות גישה - המשך
 
הרשאות גישה - המשך
 
נניח שבמחלקת ה-Date, ערך השנה תמיד צריך לכלול גם את המאה, כלומר 1996 ולא 96. חלק מהפונקציות במחלקה עלולות להניח שהמאה כלולה במשתנה השנה, ולא לעבוד אם המצב הוא שונה.
ובכן, אם תאפשר לאחרים לשנות את השנה ישירות, הם עלולים להשים ל-year את השנה ללא המאה:

Date a;
a.year = 96;
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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

void Set(int year, int month, int day);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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

int GetYear();
int GetMonth();
int GetDay();
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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

class Date {
public:
 int day;
 int month;
 int year;
 /* member function decleration... */
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

המילה public בראש, מציינת שכל הנתונים מאופשרים לכל אחד.