- •Қазақстан республикасы білім және ғылым министрлігі қ. Жұбанов атындағы ақтөбе мемлекеттік университеті
- •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. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):
Кластарды сипаттау кезінде класс объектілеріне көрсеткіштің статикалық массивін енгізіңіз.
Конструкторларды жазу кезінде осы көрсеткіштерді құрылатын объектілердің адресін сақтау үшін қолданыңыз.
Деструкторларды жазу кезінде статистикалық массивтен жойылатын объектілердің адресін өшіріңіз.
Жеке консольмен және файлмен жұмыс жасау үшін кластың объектілерін енгізу –шығару үшін орналастыру және шығару амалдарын қайта жүктеңіз.
Барлық класс объектілерінің тізімін шығару үшін жеке функцияны өңдеңіз.
БЛИЦ-ТЕСТ:
1. Ағын түрінің саны
a) 2 b) 3 c) 4 d) 5
2. Ағындық енгізу класы
a) istream b) ostream
c) iostream d) istrstream
3. Ағындық шығару класы
a) istream b) ostream
c) iostream d) istrstream
4. Енгізу – шығару класы
a) istream b) ostream c) iostream d) istrstream
5. Функция мәнін қайтару инструкциясын таңдаңыз:
a) return b) end c) define d) typedef
ӘДЕБИЕТТЕР:
Г.С. Иванова и др. ООП: Учебник для вузов, М., Изд-во МГТУ им.Баумана, 2003.- 368 с.
Павловская Т.А. С и С++. Программирование на языке высокого уровня.
Р.Вайнер, Л.Пинсон. С++ ИЗНУТРИ.
Р. Лафоре. Объектно-ориентированное программирование в С++.4-е издание. Питер.2004
Г. Шилдт. Самоучитель C++. - Санкт-Петербург, Изд. BHV, 2004.
А.В. Замулин. Курс лекций: Объектно-ориентированное программирование (С++)
Подбельский В.В., Фомин С.С. Программирование на языке Си: Учебное пособие. – М.: Финансы и статистика, 2004
Қр білім және ғылым министрлігі
Қ. Жұбанов атындағы Ақтөбе мемелекеттік университеті
Информатика және ЕТ кафедрасы
050602 - «Информатика» мамандығы күндізгі бөлімінің
4-курс студенттеріне арналған
«OBP 4301 Объектіге бағытталған программалау» пәнінен
лабораториялық жұмыстарды жүргізуге арналған әдістемелік нұсқау
ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС № 1-2
С++-ТЕГІ КЛАССТАР ЖӘНЕ ОБЪЕКТІЛЕР
Жұмыстың мақсаты: Класс құрылымымен, оны құрумен және қолданылуымен, класс мүшелерін сипаттаумен және оларды алу әдістерімен таныстыру.
Қысқаша теориялық мәліметтер
Кластар. Класс түсінігі
Класс – бұл қолданушы анықтайтын тип. Кластың сипатталуы Си тіліндегі структураның сипатталуына ұқсас. Date деген датаны және осы типті айнымалылармен жұмыс жасауға арналған функциялар жиынын анықтау үшін, struct типін қолданып дата түсінігінің жүзеге асырылуын қарастырайық:
struct date {
int month, day, year; // дата: айы, күні, жылы
void set(int, int, int);
void get(int*, int*, int};
void next();
void print();
// …
};
Осылайша сипатталған функциялар, функция-мүшелер деп аталады және структура мүшелеріне қатынау үшін стандартты синтаксистің көмегімен сәйкес типті айнымалы үшін ғана шақырылуы мүмкін. Мысалы:
date today; // бүгін
date my_burthday; // менің туған күнім
void f()
{
my_burthday.set(30,12,1950);
today.set(18,1,1985);
my_burthday.print();
today.next();
}
Әртүрлі струтураларда бірдей атты функция-мүшелер болғандықтан, функция-мүшені анықтаған уақытта структура аты көрсетілуі тиіс:
void date::next()
{
if ( ++day > 28 ) {
// жұмыстың күрделі бөлігін орындайды
}
}
Функция-мүшеде мүшелердің аттары объектке айқын сілтемеуі мүмкін. Бұл жағдайда аты объекттің функция шақырылған мүшесіне тиісті болады (жатады).
Date сипаттамасы date типті объектілермен жұмыс жасау үшін бірқатар функциялар ұсынады, бірақ бұл функциялар date типті объектілер үшін жалғыз болуы керек екендігін көрсетпейді. Бұл шектеуді struct орнына class типін қолданып қоюға болады:
class date {
int month, day, year;
public:
void set(int, int, int);
void get(int*, int*, int};
void next();
void print();
};
public: белгісі класс денесін екі бөлікке бөледі. Бірінші жабық бөліктегі атаулар тек функция-мүшелермен қолданылуы мүмкін. Екіншісі, ашық бөлігі класс объектісінің интерфейсін құрайды. Struct – бұл барлық мүшелері ашық болатын class, сондықтан функция-мүшелер жоғарыда көрсетілгендей қолданылады. Мысалы:
void date::print() // АҚШ-та қолданылатындай баспаға шығарады
{
cout << month << "/" << day << "/" year;
}
Мәліметтер құрылымына ену мүмкіндігі айқын сипатталған функциялар тізімімен шектелгендігінің бірнеше артықшылығы бар. Датаның мүмкін емес мәнді қабылдауының кез келген қатесі (мысалы, желтоқсан 36, 1985), функция-мүше кодымен шақырылуы керек, сондықтан өңдеудің бірінші сатысы, локализация, программа орындауға жіберілмес бұрын орындалады. Бұл date типіндегі кез келген өзгеріс оның мүшелеріндегі өзгерістерден тәуелді деген жалпы тұжырымның дербес жағдайы. Тағы бір артықшылығы – осы типті қолдануды үйрену үшін, функция-мүшелердің анықтамасын ғана білу жеткілікті болады.
Жабық мәліметтерді қорғау қажеттілігі класс мүшелерінің аттарын қолдануды шектеумен байланысты. Функция-мүшеде объект мүшелеріне тікелей сілтеуге болады. Мысалы:
class x {
int m;
public:
int readm() { return m; }
};
x aa;
x bb;
void f()
{
int a = aa.readm();
int b = bb.readm();
// …
}
member() мүшесін бірінші рет шақырғанда m aa.m-ге тиісті болады, ал екіншісінде - bb.m-ге.
Функция-мүше шақырылған объектке көрсеткіш функцияның жасырын параметрі болып табылады. Бұл айқын емес параметрге this-ге сияқты сілтеуше болады. х класының әрбір функциясында this көрсеткіші айқын емес түрде сипатталады
x* this;
және функция-мүше шақырылған объектке сілтейтіндей инициализацияланады. this айқын түрде сипатталуы мүмкін емес, өйткені ол кілттік сөз. x класы эквивалентті түрде былай сипатталуы мүмкін:
class x {
int m;
public:
int readm() { return this->m; }
};