- •Қазақстан республикасы білім және ғылым министрлігі қ. Жұбанов атындағы ақтөбе мемлекеттік университеті
- •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. Литерлік шамаларға қолданылатын функциялар қай кітапханада орналасқан?
- •Келісу парағы
Объектілер иерархиясы.
Кластардың иерархиясы мұрагерлік принципінің иерархиясы болып табылады, яғни «бұл оның бір түрі». Мысалы, «жұмысшы жұмысшылардың бірі», «автокөлік» «транспорттың» бір түрі. Бұған қарағанда объектілер иерархиясы – бұл кіру принципі бойынша иерархия, яғни «бұл оның бөлігі». Мысалы, «құру – завод бөлігі», «двигатель – машина бөлігі». Сонымен, төменгі деңгей иерархиясының объектілері олар үшін топ болып табылатын жоғары деңгей иерархиясының объектілеріне кірістіріледі.
Итератор.
Итераторлар белгілі мәліметтердің әрбір элементінің кейбір әдістерін орындауға рұқсат етеді.
For all терім элементтері {әрекет}
Мұндай цикл барлық терім үшін орындала алар еді, мысалы, терімнің барлық элементтерін басып шығару үшін немесе негізгі шартты қанағаттандыратын кейбір элементті іздейтін және бұл жағдайда мұндай цикл ізделінді элемент табылған кезде аяқталады.
Біз итераторларды топқа қосылған, барлық объектілерге арналған кейбір әдістерді орындауға мүмкіндік беретін класс топтарының негізгі әдісі ретінде қарастырамыз. Итераторлар мысалына Show әдісі келеді.
Біз топтың барлық элементтерінің әрекеттерін, объектінің біреуімен ғана емес, пайдаланушының өз бетімен берген функциясымен орындауға рұқсат ететін итератордың болуын қалаймыз. Егер бұл функцияны оған функция көрсеткіші арқылы жіберсек, мұндай итераторды іске асыруға болады
Функцияға көрсеткіш типін келесі түрде анықтайық:
typedef void(*PF)(TObject*,< қосымша параметрлер>);
Функцияда TObject немесе TObject* типті міндетті параметр болады. Осы параметрлер арқылы қажетті айқын әрекеттерді орындау үшін оған объект беріледі.
Итератор-әдіс келесі түрде жазылады:
void TGroup::ForEach(PF action,< қосымша параметрлер >);
мұндағы
action функцияға топтың әрбір элементі үшін шақырылатын жалғыз міндетті параметрлі көрсеткіш;
қосымша параметрлер жіберілген шақырылушы функцияның параметрлері.
Содан соң функция көрсеткіші анықталады және функция итераторына тапсырылған инициализацияланады.
PF pf=myfunc;
Сол уақытта итератор шақырылады, мысалы, қосымша параметріне арналған int типі үшін мынадай:
gr.ForEach(pf,25);
Мұндағы gr топ-объект.
Типтердің динамикалық теңестірілуі.
Типтің динамикалық теңестірілуі полиморфизмге сүйенетін тілдер үшін тән. Бұл тілдерде компиляция кезеңінде объект типі белгісіз болатын жағдайлар болуы мүмкін.
С++ тілінде полиморфизм кластар иерархиясы, виртуальді функциялар және базалық класқа көрсеткіштер арқылы сүйемелденеді.
Топ әртүрлі кластардың объектілерін қамти отырып, тек қана белгілі класс объектілеріне арналған кейбір әрекеттерді орындасын. Сонда біз итераторда кезекті объектінің типін тануымыз қажет.
С++ тілінің стандартына RTTI (Run-Time Type Idendification) типтердің динамикалық теңестірілу құралдары қосылған. Бұл құралдар Borland C++ соңғы жүйелерінде жүзеге асырылған.
Объект типінің анықтамасын typeid операторының көмегімен аламыз, ол <typeinfo.h> тақырыптық файлында қамтылған.
Typeid операторының екі формасы бар:
typeid (объект)
typeid (тип аты)
typeid операторы сілтемені type_info типті объектіге қайтарады.
type_info класында қайта жүктелген == және != амалдары типтерді салымтыруды қамтамасыз етеді.
name () функциясы тип атына көрсеткішті қайтарады.
Бір шектеу бар. Typeid операторы тек виртуальді функциялары анықталған объектілермен ғана дұрыс жұмыс жасайды.
Мысалдар.
1.
#include<iostream.h>
#include<typeinfo.h>
class Base{
virtual void f(){};
//…
};
class Derived: public Base{
//…
};
void main()
{int i;
Base ob,*p;
Derived ob1;
cout<<typeid(i).name(); // int шығарылады
p=&ob1;
cout<<typeid(*p).name(); // Derived шығарылады
}
2.
//басы жоғарыда
void WhatType(Base& ob)
{cout<< typeid(ob).name()<<endl;
}
void main()
{
Base ob;
Derived ob1;
WhatType(ob); // Base шығарылады
WhatType(ob1); // Derived шығарылады
}
3.
//басы жоғарыда
void main()
{
Base *p;
Derived ob;
p=&ob;
if(typeid(*p)==typeid(Derived)) cout<<“p Derived типті объектіге сілтейді”;
…
}