Негізгі әдебиет-5 [б. 10, 359-375], 6 [б. 2, 81-83], 8 [б. 10, 313-324]
Бақылау сұрақтары:
Виртуалды функция дегеніміз не?
Қандай функциялар виртуалды бола алмайды?
Қалай виртуалды функциялар динамикалық полиморфизмді жүзеге асыруға көмектеседі?
Таза виртуалды функция дегеніміз не?
Абстрактты класс дегеніміз не? Полиморфты класс дегеніміз не?
10–Дәріс. Әрекеттер аймақтары мен атаулар кеңістіктері.
Әрекеттер аймақтары мен атаулар кеңістіктері.
Атаулар кеңістігі.
Әрбір бағдарламалық обьекттің орны мен түрі арқылы анықталатын өмір уақыты мен әрекеттер аймағы бар. Әрекеттер аймағының келесі түрлері бар:
блок;
функция прототипі;
функция;
файл;
бағдарламалық жобаның барлық файлдарын шекке қосатын файлдар тобы (әрекеттердің глобалды аймағы) ;
класс;
атаулар кеңістігі (әрекеттердің глобалды аймағының бөлігі) ;
Бағдарламалық обьекттің әрекеттер аймағының барлық бес категориясын қысқаша қарастырып өтейік:
Блок. Блок ішінде анықталған объект локалды болып саналады. Осындай обьекттің әрекеттесуінің аймағы анықталу нүктесінде анықталады және блок аяғында аяқталады. Сақтау класы обьектісінің (автоматты) өмір сүру уақыты оның анықталу мерзімінен басталады және блок жұмысы біткеннен кейін аяқталады. Static (статикалық) спецификаторы бар блок обьектісі өз мәнін блоктың аяқталуынан кейін сақтайды, ал оның өмір сүру уақыты бағдарламаның орындалу уақытымен сәйкес келеді.
Функция прототипі. Функцияның прототиптер (хабарламалар) параметрлер тізімінде көрсетілген идентификаторлардың әрекеттер аймағы ретінде тек функция прпототипі бар. Сондықтан функция параметрлерінің туынды идентификаторларын қолдануға болады және олардың мүлдем жіберіп қоюға болады.
Функция. Функция блогында анықталған бағдарламалық обьектілер қалыпты блокта сияқты әрекеттер аймағы және өмір уақытына иеленеді. Мән бойынша берілетін функция параметрлері әрекеттер аймағы ретінде бүкіл функциясы бар және өмір уақыты- функциясының орындалу уақыты.
Сілтеме бойынша берілетін функция параметрлері функция шақырылуына сәйкес аргументтермен анықталатын өмір уақытымен әрекеттер аймағына, әрине, функция блогы да кірмейді.
Файл. Атаулар кеңістігі немесе класс, функция, кез келген боктан тыс static сақтау класының сипаттауышын қолдану көмегімен анықталған бағдарламалық обьект анықтау нүктесінде басталатын және файл соңында аяқталатын әрекеттре аймағына ие болып табылады. Әрекеттер аймағына енгізілген (ішкі) блоктар қосылады, егер олардың құрамында идентификаторы бірдей болып табылатын қайта анықталған бағдарламалық обьект болмаса. Егер енгізілген блокта бірдей идентификаторы бар қайта анықталған обьект бар болсы, онда бұл жағдайда сыртқы обьект енгізілген блокта көрінбейді, оған, егер глобальды болса (атаулар кеңістігіне немесе кластан, блоктан тыс анықталған ), “::” көріну аймағына өтуді рұқсат ету операциясының көмегімен қатынасуға болады. Мұндай обьекттің өмір уақыты максималды және бағдарламаны орындау уақытына сәйкес келеді.
Бағдарлаамалық жобаның (әрекеттердің глобалды аймағы) барлық файлдарын шегіне қосатын файлдар тобы. Extern (сыртқы) класының сақтау класының сипаттаушысын қолдану көмегімен басқа файлдардағы және жарияланған және атаулар кеңістігі немесе класс, функция, блоктан тыс жобаның файлдарының біреуінде анықталған бағдарламалық обьекттің әрбір осындай файлдарын жариялау немесе анықтау нүктесінде басталатын және файл соңында аяқталатын әрекеттер аймағына ие. Әрекеттер аймағына енгізілген (ішкі) блоктары қосылады, егер олардың құрамында бірдей идентификаторы бар бағдарламалық обьекттің өмір уақыты максималды және бағдарламаны орындау уақытымен сай келеді.
Класс. Статикалық класс мүшелерінен басқа обьект – кластарының мүшелері кластың әрекеттер аймағына иеленеді. Бұл олар класс ішінде ғана орындалатынын білдіреді. Обьект – класс мүшелер өмірінің уақыты обьект-класын анықтау мерзімінен оның бұзылу мерзіміне дейінгі уақытта анықталады. Статикалық мүше-берілгендер мен әдістер глобалды болып табылады және қалыпты статикалық айнымалылар мен функциялармен салыстырғанда осы класс сипаттамасы бар көпфайлды жобаның барлық файлдары үшін рұқсат етілген болып табылады. Статикалық мүше-берілгендер қалыпты глобалды айнымалылар сияқты жоба файлдарының біреуінде анықтау керек. Статикалық мүше-берілгендер және функция-мүшелер бір обьектті құрғанға дейін де рұқсат етілген болады. Оларға «::» операторы арқылы қатынасуға болады.
Атаулар кеңістігі. С++ тілі name space операторы арқылы атаулардың әрекеттер аймағын глобалды бөлігі сияқты нақты түрде беруге мүмкіндік береді. әрбір әрекеттер аймағында атаулар кеңістігі деп аталатындарды айырады. Атаулар кеңістігі –идентификатор әмбебап болып табылатын аймақ. Түрлі атаулар кеңістіігінде идентификаторлар бірдей болуы мүмкін, себебіі сілтемелер шешуші бағдарламадағы идентификатор контексті бойынша жүзеге асырылады, мысалы:
struct Node
{ int Node;
int I;
} Node;
Бұл жағдайда қарсылықтар жоқ,себебі тип атаулары, құрылым айнымалылары мен өрістері атаулардың түрлі кеңістіктеріне қатысты болады.
С++ тілінде атаулар кеңістігінің төрт түрі анықталған , олардың әрбіреуінің шектерінде идентификаторлар әмбебаб болуы керек.
-қолданушымен анықталған типтер, функциялар, айнымалылар (объекттер) идентификаторларға қатысты атаулар кеңістігі және әрекеттердің бір аймақтық шектеріндегі константалардың аталып өтуі. Функциялар идентификатоларынан басқаларының барлығы енгізілген блоктарда қайта анықталуы мүмкін.
бірлестіктер, кластар, құрылымдар, атап өтулер типтерінің атауларын түзетін кеңістік. Бұл атаулар кеңістігінде әрбір осындай идентификатор бір әрекеттер аймағындағы шектерде әмбебап болуы керек.
Атаулардың бөлек атаулары әрбір кластың мүшелерін құрады. Класс мүшесінің аты класс ішінде әмбебап болуы керек, бірақ басқа кластардың мүшелерінің атауларымен бірдей болуы мүмкін.
Белгілер бөлек атаулар кеңістігін түзеді.
Достарыңызбен бөлісу: |