- •Қазақстан республикасы білім және ғылым министрлігі қ. Жұбанов атындағы ақтөбе мемлекеттік университеті
- •050602 - «Информатика» мамандығы күндізгі бөлімінің
- •«Obp 4301 Объектіге бағытталған программалау» пәнінен
- •II кафедраның әдістемелік секциясы отырысында талқыланды
- •Пән мазмұны
- •Лабораториялық сабақтардың тақырыптарының үлгілі тізімі
- •Өзіндік жұмыстардың тақырыптарының үлгілі тізімі
- •Ұсынылған әдебиеттер тізімі
- •Оқу пәнінің жұмыс бағдарламасы
- •I жұмыс бағдарламасы дайындалып енгізілді
- •II кафедра отырысында талқыланды
- •IV факультеттің оқу-әдістемелік комиссиясына бекітуге ұсынылды
- •V алғашқы тексеру мерзімі 2011 ж. Тексеру мерзімділігі 1 жыл
- •Дәрістер
- •Практика сабақтары
- •Лаборатория сабақтары
- •Негізгі әдебиеттер
- •Оқу пәнінің жұмыс бағдарламасы
- •Пәннің тақырыптық жоспары
- •Өзіндік жұмыс тапсырмалары
- •1. Жұмыс түрлері:
- •2. Жұмыс түрлерін бағалау критериилері:
- •Курстық жұмыстың тақырыптары
- •Пән бойынша тапсырмаларды орындау және тапсыру графигі
- •Пәннің оқу-әдістемемен қамтамасыз ету картасы
- •Қр білім және ғылым министрлігі
- •2. Көпше түрдегі мұрагерлік
- •2. Операторларды қайта анықтаудың түрлері.
- •3. Унарлы операторларды қайта анықтау
- •4. Бинарлы операторларды қайта анықтау
- •5. Меншіктеу операторларын қайта анықтау
- •6. New және delete операторларын қайта анықтау
- •Жәй және күрделі полиморфизм
- •Виртуальді функциялар
- •Иерархия схемасы
- •Қр білім және ғылым министрлігі
- •2. Орындауға арналған тапсырмалар:
- •Практикалық жұмыс №2 конструкторларды және деструкторларды құру
- •2. Орындауға арналған тапсырмалар:
- •3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •Практикалық жұмыс №3-4 мұрагерлік. Жалғызданған және көпше түрдегі мұрагерлік
- •2. Орындауға арналған тапсырмалар:
- •3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •Практикалық жұмыс №5-6 полиморфизм. Амалдарды қайта анықтау
- •3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •5. Литерлік шамаларға қолданылатын функциялар қай кітапханада орналасқан?
- •Практикалық жұмыс №7-8 функциялардың және операторларды қайта жүктеудің бірге қолданылуы
- •3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •Практикалық жұмыс №9-10 енгізу-шығару ағындары
- •2. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
- •Қр білім және ғылым министрлігі
- •Жұмысты орындау тәртібі
- •Өзіндік жұмыс тапсырмалары
- •Жұмыс есебі
- •Жұмысты орындау тіртібі
- •Өзіндік жұмыс тапсырмалары
- •Жұмыс есебі
- •Жұмысты орындау тіртібі
- •Өзіндік жұмыс тапсырмалары
- •Жұмыс есебі
- •Лабораторялық жұмыс бойынша сұрақтар
- •Лабораториялық жұмыс № 6-7 объектілер иерархиясы. Топтар. Итераторлар.
- •Қысқаша теориялық мәліметтер
- •Объектілер иерархиясы.
- •Мұндағы gr топ-объект.
- •Жұмысты орындау тәртібі
- •Өзіндік жұмыс тапсырмалары
- •Жұмыс есебі
- •2.Достық функциялар
- •Іі. Жұмыстың орындалу реті
- •Ііі. Өзіндік жұмыс тапсырмалар
- •Жұмыс есебі
- •Іі. Жұмыстың орындалу реті
- •Бүтін сандармен жұмыс жасайтын объект-калькулятор.
- •Жұмысты орындау реті.
- •Әдістемелік нұсқау.
- •Есеп берудің мазмұны.
- •Калькулятор
- •Қр білім және ғылым министрлігі
- •3. Практикалық және лабораториялық сабақтарды орындау
- •Қр білім және ғылым министрлігі
- •Тақырыбы: Конструкторлар және деструкторлар
- •Тақырыбы: Мұрагерлік
- •Тақырыбы: Операторларды қайта жүктеу
- •Тақырыбы: Ағындық кластар
- •Бақылау-өлшеу материалдары
- •21. Литерлік шамаларға қолданылатын функциялар қай кітапханада орналасқан?
- •Келісу парағы
2. Операторларды қайта анықтаудың түрлері.
С++ көптеген операциялар жұмысын нақтылы класс обьектілеріменқолданған кезде олар берілген функцияларды орындайтындайетіп кйта анықтауға мүмкіндік береді. Бұл өзіндік типтерді дәл стандартты типтердей қолдануға көмектеседі. Өзіндік операциялар белгілерін енгізуге болмайды. С++ те бар кез-келген операторларды қайта анықтауға болады, тек мынадан басқа:
. .* ?: : : # ## sizeof
Операторларды қайта анықтау арнайы түрдегі әдістер көмегімен жүзеге асырылады және келесі ережелерге сүйенеді:
Операторларды қайта анықтау кезінде аргументтер көлемі, мәліметтердің қалыпты типтерінде қолданылатын ассоциациялар ережелері ( оңнан солға қарай және солдан онға қарай) және операциялар приоритеттері сақталады;
Мәліметтердің стандартты типтері үшін операторларды қайта анықтауға болмайды;
Функция-операторлар жасырын түрде қойылатын аргументтерге ие емес;
Функция-операторлар мұраға беріледі (= басқасы);
Функция-операторлар static сияқты анықтала алмайды;
Функция-операторларды үш түрлі тәсілмен анықтауға болады: ол не класс әдісі болу керек, немесе класстың серіктес функциясы, немесе қарапайым функциясы болу керек. Сонғы екі жағдайда функция класстың типін, бағыттаушысын класс сілтемесіне ие ең болмаса бір аргументті қабылдау керек.
Функция-оператордың operator деген кілттік сөзі болады, одан кейін қайта анықталатын операторының белгісі жүреді:
Тип operator оператор (параметлер тізімі) {функция денесі }
3. Унарлы операторларды қайта анықтау
Класстың ішінде анықталатын унарлы функция-операторлар параметрлерсіз тұрақты емес әдістің көмегімен көрсетілуі керек, бұл кезде операнд болып оны шақырған обьект табылады, мысалы:
Class monstr {
…
monstr & operator ++() {++health: return *this}
};
monstr Vasia:
cout << (++Vasia).get_health():
Егер функция класстан тыс анықталатын болса, ол класс типінің бір параметріне ие болу керек:
Class monstr {
…
Friend monstr & operator ++(monstr &M):
}; r
monstr& operator ++(monstr &M) {++M.health: return M:}
Егер класс ішіндегі функцияны серіктестік ретінде сипаттамасақ, өзгертілетін жолдар қолжетімділігін ескеру қажет. Берілген жағдайда health жолы private спецификаторымен сипатталғандықтан сыртқа қолжетімсіз, сондықтан оны өзгерту үшін сәйкес әдісті қолдану қажет. сипаттауға monstr класының health жолының мағынасын өзгіртуге мүмкіндік беретін change_health әдісін енгіземіз:
void change_health(int he) { health =h: }
Сол кезде инкремент операторын кластан тыс сипатталған қарапайым функция көмегімен қайта анықтауға болады:
monstr& operator ++(monstr &M) {
int h = M.get_health(); h++
M.chenge_health(h);
return M;
}
Постфикстілі инкремент және декремент операторлары int типінің бірінші параметріне ие болу керек. Ол тек қана оларды префиксті түрден ажырату үшін қолданылады:
Class monstr{
…
monstr operator ++(int) {
monstr M(*this): health++
return M;
}
};
monstr Vasia;
cout << (Vasia++).get_health();