כיצד לשלוט בשינויי גישה ב-C++: הבנת הנראות של חברים

Kyzd Lslwt Bsynwyy Gysh B C Hbnt Hnr Wt Sl Hbrym



הסתרת נתונים היא אחת מתכונות המפתח של C++ המתייחסת להגבלת הגישה של נתונים במחלקה כדי למנוע גישה לא רצויה לנתונים של מחלקה מבחוץ. לפיכך, משתני הגישה משמשים כדי להגדיר אילו חברי כיתה נגישים לאיזה מקור חיצוני ולאיזה לא.

גישה לשינויי גישה ב-C++

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

שינוי גישה ציבורית ב-C++

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







דוגמא

משנה הגישה הציבורית משמש להכרזה על מחלקה, ולחברי הנתונים שלה גישה לפונקציות האחרות בתוך התוכנית.



#include

#include

#include

באמצעות מרחב שמות std ;
משולש כיתה
{
פּוּמְבֵּי :
לָצוּף איקס , ו , עם ;
בָּטֵל קֶלֶט ( )
{
cout << 'הזן את הצלע x של משולש:-' ;
אֲכִילָה >> איקס ;
cout << 'הזן את הצלע y של משולש:-' ;
אֲכִילָה >> ו ;
cout << 'הזן את הצלע z של משולש:-' ;
אֲכִילָה >> עם ;
}
בָּטֵל אֵזוֹר ( )
{
לָצוּף ס = ( איקס + ו + עם ) / 2 ;
לָצוּף אֵזוֹר = sqrt ( ס * ( ס - איקס ) * ( ס - ו ) * ( ס - עם ) ) ;
cout << ' \n שטח משולש =' << אֵזוֹר ;
}
} ;
int רָאשִׁי ( )
{
משולש t1 ;
t1. קֶלֶט ( ) ;
t1. אֵזוֹר ( ) ;
לַחֲזוֹר 0 ;
}

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







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

משנה גישה פרטית ב-C++

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



דוגמא

שתי הכיתות ציבוריות ופרטיות מוכרזות, וערך ההחזר של התוכנית אמור להיות שטח המשולש.

#include

#include

#include

באמצעות מרחב שמות std ;
משולש כיתה
{

פְּרָטִי :
לָצוּף איקס , ו , עם ;
פּוּמְבֵּי :
בָּטֵל קֶלֶט ( )

{

cout << 'הזן את הצלע x של משולש:-' ;
אֲכִילָה >> איקס ;
cout << 'הזן את הצלע y של משולש:-' ;
אֲכִילָה >> ו ;
cout << 'הזן את הצלע z של משולש:-' ;
אֲכִילָה >> עם ;

}
בָּטֵל אֵזוֹר ( )
{

לָצוּף ס = ( איקס + ו + עם ) / 2 ;
לָצוּף אֵזוֹר = sqrt ( ס * ( ס - איקס ) * ( ס - ו ) * ( ס - עם ) ) ;
cout << ' \n שטח משולש =' << אֵזוֹר ;

}

} ;

int רָאשִׁי ( )
{
משולש t1 ;
t1. קֶלֶט ( ) ;
t1. אֵזוֹר ( ) ;
לַחֲזוֹר 0 ;

}

ב-main(), האובייקט t1 אינו יכול לגשת ישירות למשתני המחלקה הפרטית float x, y ו-z, כך שניתן לתפעל אותו רק בעקיפין דרך קלט הפונקציה הציבורית (), מכיוון שפונקציה זו משיגה את הערכים של x, y ו-z.

שטח המשולש מתקבל על ידי גישה לכיתה הפרטית באמצעות מניפולציה שלו באמצעות מחלקה ציבורית. אם הערכים של x, y ו-z לא יוכרזו במחלקה ציבורית, לא תהיה גישה אליהם ב-main() לצורך חישובים.

Protected Access Modifier ב-C++

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

דוגמא

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

#include

#include

#include

באמצעות מרחב שמות std ;
//כיתת הורים
משולש כיתה
{

מוּגָן :
לָצוּף איקס , ו , עם ;
} ;
//כיתת ילד
כיתת TriangleChild : משולש ציבורי {
פּוּמְבֵּי :
בָּטֵל קֶלֶט ( )

{

cout << 'הזן את הצלע x של משולש:-' ;
אֲכִילָה >> איקס ;
cout << 'הזן את הצלע y של משולש:-' ;
אֲכִילָה >> ו ;
cout << 'הזן את הצלע z של משולש:-' ;
אֲכִילָה >> עם ;

}
בָּטֵל אֵזוֹר ( )
{
לָצוּף ס = ( איקס + ו + עם ) / 2 ;
לָצוּף אֵזוֹר = sqrt ( ס * ( ס - איקס ) * ( ס - ו ) * ( ס - עם ) ) ;
cout << ' \n שטח משולש =' << אֵזוֹר ;

}
} ;

int רָאשִׁי ( )

{
ילד משולש ;
יֶלֶד. קֶלֶט ( ) ;
יֶלֶד. אֵזוֹר ( ) ;
לַחֲזוֹר 0 ;

}

TriangleChild היא מחלקה בירושה אשר נגזרת מכיתה משולש. המשתנים x, y ו-z מוכרזים במשולש עם מילת המפתח המוגנת. משמעות הדבר היא שהמשתנים הללו מוגנים אך ניתן לגשת אליהם על ידי TriangleChild מכיוון שמשולש היא מחלקת האב שלו. הערכים של משתנים הוקצו ב-TriangleChild למרות שהם מוכרזים במחלקה Triangle.

הגישה למשתנים מתבצעת דרך כיתת הילד, ולאחר מכן מחושב השטח של משולש.

סיכום

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