39
аяқталатын әрекеттер аймағына ие болып табылады. Егер құрамында
идентификаторы бірдей болып табылатын қайта анықталған программалық
объект болмаса, онда әрекеттер аймағына енгізілген (ішкі) блоктар қосылады.
Егер енгізілген блокта бірдей идентификатор, қайта анықталған объект бар
болса, онда бұл жағдайда сыртқы объект енгізілген блокта көрінбейді. Оған,
егер глобальды болса (атаулар
кеңістігіне немесе кластан, блоктан тыс
анықталған ), «::» көріну аймағына өтуді рұқсат ету операциясының көмегімен
қатынасуға болады. Мұндай объекттің өмір уақыты максималды және
программаны орындау уақытына сәйкес келеді.
Программалық жобаның (әрекеттердің глобалды аймағы) барлық
файлдарын шегіне қосатын файлдар тобы. Extern (сыртқы) класының сақтау
класының сипаттаушысын қолдану көмегімен басқа файлдардағы және
жарияланған, атаулар кеңістігі немесе класс, функция, блоктан тыс жобаның
файлдарының біреуінде анықталған программалық объекттің әрбір осындай
файлдарын жариялау немесе анықтау нүктесінде
басталатын және файл
соңында аяқталатын әрекеттер аймағына ие. Егер құрамында бірдей
идентификаторы бар программалық объекттің өмір уақыты максималды және
оны орындау уақытымен сай келсе, онда әрекеттер аймағына енгізілген (ішкі)
блоктары қосылады.
Класс.
Статикалық класс мүшелерінен басқа обьект кластарының
мүшелері әрекеттер аймағын иеленеді.
Бұл олар класс ішінде ғана көрінетінін
білдіреді. Объект кластар мүшелерінің өмір уақыты – объект класын құру
мерзімінен бастап оның бұзылу мерзіміне дейінгі уақытта анықталады.
Берілген класс құрамын сипаттау, кәдімгі статикалық айнымалылар мен
функциялардан айырмашылығы сияқты көп файлдық жобаның барлық
файлдарында
қолжетімді
деректердің статикалық мүшелері және әдістер
глобальды болып табылады.
Деректердің статикалық мүшелері кәдімгі глобалды айнымалылар
сияқты жоба файлдарының біреуінде міндетті түрде анықталуы тиіс.
Деректердің статикалық мүшелері және функция-мүшелер бір объекттіні
құрғанға дейін де рұқсат етілген болады. Оларға «::» операторы арқылы
қатынасуға болады.
Атаулар кеңістігі
. С++ тілі name space операторы арқылы атаулардың
әрекеттер аймағын глобаьлды бөлігі сияқты нақты түрде беруге мүмкіндік
береді. Әрбір әрекеттер аймағында атаулар кеңістігі деп аталатындарды
айырады. Атаулар кеңістігі – идентификатор әмбебап болып табылатын
аймақ. Түрлі атаулар кеңістігінде идентификаторлар бірдей болуы мүмкін,
себебіі сілтемелер шешуші бағдарламадағы
идентификатор контексті
бойынша жүзеге асырылады, мысалы:
struct Node
{ int Node;
int I;
} Node;
40
Бұл жағдайда қарсылықтар жоқ, себебі тип атаулары, құрылым
айнымалылары мен өрістері атаулардың түрлі кеңістіктеріне қатысты болады.
С++ тілінде атаулар кеңістігінің төрт түрі анықталған, олардың
әрбіреуінің шектерінде идентификаторлар әмбебап болуы керек:
-
қолданушымен
анықталған типтер,
функциялар, айнымалылар
(объекттер) идентификаторларға қатысты атаулар кеңістігі және әрекеттердің
бір аймақтық шектеріндегі константалардың аталып өтуі. Функциялар
идентификатоларынан басқаларының барлығы енгізілген блоктарда қайта
анықталуы мүмкін;
-
бірлестіктер, кластар, құрылымдар, атап өтулер типтерінің
атауларын түзетін кеңістік. Бұл атаулар кеңістігінде әрбір осындай
идентификатор бір әрекеттер аймағындағы шектерде әмбебап болуы керек;
-
атаулардың бөлек атаулары әрбір кластың мүшелерін құрады.
Класс
мүшесінің аты класс ішінде әмбебап болуы керек, бірақ басқа кластардың
мүшелерінің атауларымен бірдей болуы мүмкін;
-
белгілер бөлек атаулар кеңістігін түзеді.
Атаулар кеңістігі.
Атаулар кеңістігі (аталған аймақ ) анықтамалар,
хабарламаларды логикалық түрде топтастыру үшін және оларға қатынауды
шектеу үшін қызмет етеді. Бағдарлама өлшемі неғұрлым үлкен болған сайын
соғұрлым аталған аймақтарды қолдану өзекті. Түрлі атаулар кеңістігінің
көмегімен атаулар қақтығысы мен сәйкес келу мүмкіндіктерінсіз басқа
бағдарламалаушымен жазылған кодтан бір
бағдарламалаушымен жазылған
кодты анықтауға болады.
Атаулар кеңістігінің жариялануы (аталған аймақ) келесі форматтарға
ие:
Namespace [аймақ _ аты]
{/ *анықтамасы және хабарламасы */….}
Атаулардың бір кеңістігі бір рет жариялануы мүмкін емес, сонымен
келешек хабарламалар алдыңғылардың кеңейтулері ретінде қарастырылады.
Сөйтіп, атаулар кеңістігі бір файлдың шектерінен тыс өзгеруі және
хабарлануы мүмкін.
Namespace demo
{int I=1; // объектті анықтау
int k=0; // объектті анықтау
void func 1(int); // функция прототипі
void func2(int r){…} // функция анықтамасы
}
// demo атаулар кеңістігі
namespace demo
{
// int I=2 ; дұрыс емес - екі анықтама
41
void func1(double); // дұрыс – функция прототипі (қайта жүктеу)
void func2 (int); // дұрыс - функция прототипі
}
Атаулар кеңістігінің хабарламасына тек хабарламаларды логикалық
түрде орналастыру болады, ал кейіннен олар аймақ аты мен «
Достарыңызбен бөлісу: