- •1.1 Оқытушы туралы мәлеметтер:
- •1.2 Пән туралы мәліметтер:
- •Оқу жоспарының көшірмесі
- •1.5 Пәнді қысқа сипаттау
- •1.7 Әдебиет тізімі
- •1.9 Саясат және процедура.
- •2 Белсенді тарату материалдың мазмұны
- •2.2 Дәрістік сабақтардың конспектілері
- •Программаның құрылымы
- •Ерекше жағдайдың өңдеуішті анықтау
- •Ерекше жағдайдың мәліметтердің элементерің қолдану
- •Абайсыз ерекше жағдайларды өңдеу
- •Ерекше жағдайлар және класстар
- •Мұрагерлік
- •2.3 Зертханалық сабақтардың жоспары
- •2.4 Оқытушының жетекшілігімен орындалатын студенттердің өзіндік жұмыстары бойынша өткізілетін сабақтардың жоспары (соөж)
- •2.5 Студенттердің өздік жұмыстары бойынша сабақ жоспары (сөж)
- •2.6 Өздік бақылау үшін тест тапсырмалары
- •Сведения
- •2.7 Курс бойынша емтихан сұрақтары
- •2.8 Глоссарий
Абайсыз ерекше жағдайларды өңдеу
Егер программа ерекше жағдайды генерацияласа, ол табылмаса (програмада сәйкесті ерекше жағдайды өңдеуіші болмаса), онда С++ тілінде стандартты ұсынылады. Көбіне стандартты өңдеуіш программаны аяқтайды. Келесі UNCAUGHT.CPP программада көрсетілген, стандартты ерекше жағдайдың өңдеуіші программаны қалай аяқтайды:
#include <iostream.h>
class some_exception { };
void main(void)
{ cout << "Ерекше жағдайдың генерациялау алдын ала" << endl; throw some_exception(); cout << "ерекше жағдай генерациялды" << endl; }
Осы уақиғада, программа ерекше жағдайды генерациялағанда (егер оны программамен анықталмаса ), С++ стандарты ерекше жағдайдың өңдеуішің қосады да программаны аяқтайды. Сол себептен программанын соңғы операторы ешқашан орындалмайтын ерекше жағдайдың генерациялайтын туралы хабарлайды. С++ стандартты ерекше жағдайдың өңдеуіштің орнына программа өзінің өңдеуішің анықтайлады. С++ өзінің стандартты өңдеуіш туралы компиляторға хабарлау үшін, программа кітапхананың орындау кезенің set_unexpected функциясын қолдану керек. Set_unexpected функцияның прототипі except.h тақырыпты файлда анықталған.
Ерекше жағдайлардың функциясын генерациясын баяндау
Функцияның прототипі қайтарлынған функциянын мәнің типін және оның параметрлерінің типтерін анықтайды. Егер программада ерекше жағдайлар қолданса, онда осы ерекше жағдайларды генерациялайтын функцияны көрсету үшін функцияның прототипін қолдануға болады. Мысалы, компиляторға келесі функцияның прототипі хабарлайды, функция power_plant ерекше жағдайларды melt_down және radiation_leak генерациялайды:
void power_plant(long power_needed) throw (melt_down, radiation_leak);
Ерекше жағдайларды функция прототипіне құрамына қосқан кезде, басқа программистке хабарлауға болады, егер осы функцияны қолданса, қандай ерекше жағдайларды тексеруге болады.
Ерекше жағдайлар және класстар
Класс құру негізінде, оған байланысты ерекше жағдайларды анықтау қажет. Нақты класқа ерекше жағдайды құру үшін, оны жалпы (public) кластын элементтерінің біреуне осы ерекше жағдайды қосу керек. Мысалы, string кластын сипаттамасы екі ерекше жағдайды анықтайды:
class string
{ public: string(char *str); void fill_string(*str); void show_string(void); int string_length(void); class string_empty { } ; class string_overflow {}; private: int length; char string[255]; };
Көрсетілгендей, string_empty және string_overflow ерекше жағдайларды класс class string анықтайды. Төменде келтірілген кодта, ерекше жағдай бар екенін тексеру үшін глобальды рұқсаттын операторын және кластың атын қолдану керек:
try
{ some_string.fill_string(some_long_string); }; catch (string::string_overflow)
{ cerr << "Жолдың ұзындығы асып кетті,символдардар алынып тасталды" << endl; }
Ерекше жағдайлар программаларда қателік жағдайларды іздеуді жеңілдету және өңдеу үшін арналған. Ерекше жағдайларды тексеру және іздеу үшін try, catch және throw операторларды қолдану қажет.
Негізгі әдебиет: 1 [151-156], 2[703-736]
Бақылау сұрақтары:
1. Ерекше жағдайлар деген не?
2.Try оператордын міндетті?
3. Ерекше жағдайды генерациялау үшін қандай әрекеттер орындалады?
4. Ерекше жағдайлардын өңдеуштің міндетті неде?
5. Ерекше жағдайлардын өңдеуштің мысалын келтіріңіз.
14-дәріс. ОБП: класстар және абстракциялау.
Объектілі-бағытталған программалау нақты әлемдегі объектілерді олардың программалық эквиваленттер көмегімен моделдейді.
Кластар программистке атрибуттарды (мәліметтер элементтер түрінде берілген) және нақты әрекеттері (функция-элементтері түрінде берілген) бар объектілерді моделдеуге мүмкіндік береді. Бір кластың объектілері бірдей сипаттамаларға ие болады. Мәліметтер элементтері және функция-элементтері бар типтерді анықтағанда әдетте class түйінді сөзі қолданылады.
Конструктор. Функция-элементі класс атымен аталса, онда ол осы кластың конструкторы деп аталады Конструктор - бұл класс объектісінің мәліметтер элементтерін инициалдайтын кластың арнайы функция-элементі. Кластың конструкторы объекті құрылатын кезде автоматты түрде шақырылады.Объекті құрылғаннан кейін оның элементтері конструктордың көмегімен инициалдануы мүмкін. Мәліметтер элементтері кластың анықтауында инициалдануы мүмкін емес. Мәліметтер элементтері не кластың конструкторында инициалдануы керек, не олардың мәні объекті құрылғаннан кейін орнатылуы мүмкін. Конструктор қайтарылатын мәннің типін белгілей алмайды, бірақ қайсібір мәнді қайтарады. Кластың объектісін баяндағанда оның атының оң жағыман дөңгелек шақшадағы үтірі бар нүктеге дейін инициализаторлар берілуі мүмкін. Бұл инициализаторлар кластың конструкторына аргумент ретінде беріледі.
Деструктор. Кластың атымен бірдей атты, алдында тильда (~) символы бар функция кластың деструкторы деп аталады. Кластың объекті әрекет облысынан шыққанда кластың деструкторы автоматты түрде шақырылады. Деструктордың өзі объетіні нақтылы бұзбайды, іс жүзінде оған бөлінген жады жүйеге қайтару алдында кластың әрбір объектінің қорытынды тазалауын орындайды. Деструктор параметрлерді қабылдамайды және мәнді қайтармайды. Класта тек бір ғана деструктор болуы мүмкін.
Ескерту. С++ тілінде класстардын атаулары С әріпінен басталады.
Негізгі әдебиет: 1 [140-156], 2[405-458], 3[257-277]
Бақылау сұрақтары:
1. Объектілі бағытталған программалау процедурлік программалаудан айырмашылығы неден турады?
2. Объект деген не?
3. Әдіс деген не?
4. Класс деген не?
5. Класс объектіден айырмашылығы неде?
15-дәріс. ОБП: мұрагерлік, визуалды функциялар және полиморфизм
