Нысандармен және кластың басқа даналарымен жұмыс істеу кезінде атрибуттарға қол жеткізу бағдарламашы үшін әдеттегі операциялардың бірі болып табылады. Нысандарда сақталған белгілі бір мәліметтерге қол жеткізу, олар үшін қолданылатын қауіпсіздік әдістерін ескере отырып, қиынға соғуы мүмкін. Сонымен, жеке және қорғалған спецификаторлар жабатын атрибуттарды сынып данасынан тек сол немесе бала объектісіне (қорғалған) сыныпқа жататын әдіспен шығаруға болады.
Нұсқаулық
1-қадам
Сіздің бағдарламаңызда атрибуты қажет болатын класстың данасына объект немесе көрсеткіш жасаңыз. Мұндай операцияның стандартты құрылымы CMyClass myObj1 болып табылады. Кейде объектіні инициализациялау үшін белгілі бір параметрлерді класс конструкторына жіберу керек. Бұл жағдайда объектіні құру туралы жазба келесідей көрінуі мүмкін: CMyClass myObj1 (param1, param2, param3), мұнда CMyClass - класс атауы, myObj1 - құрылатын объектінің аты, ал конструктор сұраған барлық параметрлер тізімделеді. жақшаға. Класс данасына нұсқағыш келесідей жасалады: CMyClass * pObj1 = жаңа CMyClass (param1, param2, param3).
2-қадам
Атрибутты шақырудың қарапайым тәсілі - оған бағдарламаның кез келген жеріне тікелей сілтеме жасау. Алайда, бұл ашық модификаторы бар сыныпта сипатталған ашық деректер үшін ғана мүмкін. Нысан арқылы тікелей қатынас келесідей көрінеді: myObj1.attr1, мұндағы attr1 - осы класстың атрибуты. Меңзер үшін қоңырау келесідей болады: pObj1–> attr1.
3-қадам
Егер сізге сілтеме жасау керек атрибут жасырын күйге ие болса және жеке модификаторы бар класста сипатталса, оған қол жеткізу сол сыныпқа жататын әдіс арқылы ғана мүмкін болады. Сыныптың әдісі немесе функциясы жалпыға ортақ мәртебеге ие болуы керек. Қажетті атрибуттың өңделуін жазатын сыныпқа жаңа әдісті қосыңыз. Бұл жағдайда функцияларға параметрлерді беруге болады, олардың мәніне байланысты белгілі бір әрекеттер орындалады. Функцияның өзі атрибуттың мазмұны сияқты деректерді де қайтара алады. Жеке атрибутпен жұмыс істеу үшін екі функцияны жүзеге асыратын C ++ бағдарламалық коды: CMyClass {қорғалған: int attr1; // жалпы төлсипат: void funcA1 (int param) {attr1 = param; } int funcA2 () {return attr1; }};
4-қадам
Осылайша, attr1 жеке төлсипатын сізге қажет мәнге қою үшін, бұрын құрылған объектіні қолданып, сол кластағы әдісті шақырыңыз: myObj1.funcA1 (10) - ұқсас жасырын операция арқылы 10 мәні attr1 атрибутына орналастырылады. Сыныптың данасына сілтегішпен жұмыс істегенде ұқсас амал келесідей болады: рObj1–> funcA (10). Attr1 жеке төлсипатын алу және онда сақталған мәнді білу үшін кластың басқа әдісін шақырыңыз: int Res = myObj1.funcA2 (). Бұл жағдайда Res бүтін айнымалысына сыныптың жасырын айнымалысының мәні беріледі.
5-қадам
Егер сізге балалар сыныптарының барлық объектілерінде қорғалған мәртебесі бар атрибутты шақыру қажет болса, оның айнымалысына тікелей сілтеме жасаңыз. Алайда, шетелдік сыныптардың функцияларында жұмыс істегенде, қорғалған деректерге қол жеткізуді жоғарыда сипатталған тәсілмен алу керек болады.
6-қадам
Атрибутты объект жасамай шақыру үшін оның құрылымындағы келесі айнымалы арқылы айнымалысын статикалық деп жариялаңыз: static int attr1. Бұл жағдайда атрибутты енгізуді көрсете отырып, бағдарлама кодының кез келген жерінен шығаруға болады: CMyClass:: attr1.