Дәріс.Объекті-бағытталған ПРОГРАММАЛАУ ТЕХНОЛОГИЯСЫ-НЫң КОНЦЕПЦИЯСЫ
«Клиент – сервер» технологиясы бойынша класс ә дістерін анық тау класс анық тамасынан тыс орналастырғ ан жө н. Кө ру облысының «::» рұ қ сат ету операторы арқ ылы компиляторғ а берілген анық талатын ә діс қ андай класқ а қ атысты екендігін хабарлайды, мысалы: int Classid:: f2 (int х) { ә діс денесі } Класс анық тамасы берілген класс объектілерін қ ұ рмайды. Объектілер оларды анық тау жолымен ғ ана қ ұ рады, мысалы: Classid obj1, obj2, obj Array [10]; Класс объектісінің ө лшемі кластың статикалық емес мү ше берілгендерінің ө лшемдер қ осындысымен жадыда анық талады. Класс ә дістері класс объектісі ү шін бө лінген жады облысының орнын алмайды. Бірнеше файлдардан тұ ратын бағ дарламалық жобалармен жұ мыс жасағ анда класс анық тамасы берілген класс объектілері қ олданатын немесе оның ә дістері анық талатан файлдарда болуғ а міндетті. Сондық тан класс анық тамасын арнайы тү рде ол қ ажет болып табылатын файлдарда #include дерективасы кө мегімен қ осылатын тақ ырыптық файлғ а (хедер-файл) орналастырылады. Егер класс ә дісінің анық тамасы анық талудан тыс орналасса, онда ол міндетті тү рде ө зі қ олданылатын файлдарда анық талғ ан болуы керек. Мұ ндай ә дістің анық тамасы класс анық тамасымен бірге тақ ырыптық файлда болуы керек.
C++ тілінде обьектілерді жою мен инициализациялау жұ мыстарын орындайтын, обьектілердің жойылуы мен қ ұ рылуы кезінде автоматты тү рде шақ ырылатын, кластың арнайы ә дістері сә йкесінше конструкторлар мен деструкторлар деп аталады. Класта бірнеше конструкторларды қ ұ руғ а болады. Ә рбір конструктордың ө зінің басқ алардан айырмашылығ ы бар параметрлері болады. Параметрлері жоқ конструктор ү нсіздік конструкторы. Деструктор ә рқ ашан жалғ ыз жә не параметрлері болмайды. Тек ашық мү шелері бар жә не конструкторы жоқ класс обьектісі мә ндер тізімі арқ ылы жай қ ұ рылымдық айнымалы сияқ ты инициализациялануы мү мкін. Егер класс конструкторларының біреуі де ашық функция – класс мү шесі болып табылмаса, онда мұ ндай кластың мү шелері қ ұ рыла алмайды. Мұ ндай кластар басқ а кластар (мұ рагерлік) ү шін базалық кластар (родительдік) болып табылады. Класс обьектісін қ ұ рғ ан кезде ол ү шін сә йкес келетін конструктор автоматты тү рде шақ ырылады. Обьекттің мү ше-берілгендерінің (обьект айнымалыларының) инициализациясы конструктордың орындалуы сияқ ты инициализациясы кезінде де орындала алады. Конструктор параметрі ө з класы бола алмайды, бірақ кө шіру конструкторы сияқ ты оғ ан жасалғ ан сілтеме болуы мү мкін. Кластың компонент-берілгенінің жалғ ыз данасы болуы ү шін жә не кластың жаң а ә рбір кластың обьектісінің қ ұ рылуы кезінде басып шығ арылмауы (не тиражировался) ү шін ол класты статикалық сияқ ты анық тау керек, яғ ни Static атрибуты болуы керек. Кластың статикалық компоненттік функциялары нақ ты обьект атауы жоқ кластың Static берілгендеріне қ атынасуды қ амтамасыз етеді. Кластың Static функциялары функциялардың жай (статикалық емес) компоненттік барлық негізгі ерекшеліктерін сақ тайды. Класқ а қ атысты функция нақ ты обьекттің берілгендерін ө ң деу ү шін шақ ырғ ан кезде бұ л функцияғ а автоматты жә не айқ ын емес функция шақ ырылғ ан обьект кө рсеткіші беріледі. Бұ л кө рсеткіштің бекітілген this аты бар жә не бағ дарламалаушы ү шін байқ аусыз кластың ә рбір функциясы келесі тү рде анық талғ ан: класс_аты*const this=ө ң делетін_обьекттің _адресі; this кө рсеткішін қ олдану тиімділігі кө рінетін жағ дайлар: -берілген класс компонентінің аты класс функциясының формальды параметрінің атымен сә йкес келгенде; -класс функциясының денесінде айқ ын тү рде бұ л функция шақ ырылғ ан обьект адресін кө рсету қ ажет болғ анда; -функция параметрі ретінде кластың бұ л функция атын жазғ ан кезде обьекттің нақ ты атына жол берілмегенде (керек обьектіге мұ ндай функция сілтемесін немесе кө рсеткішін берудің орнына).
|