
- •Программалаудың парадигмалары: құрылымдық, модулдік және объектілі-бағытталған программалау.
- •2.Компьютердің логикалық схемасы. Программалау, компиляциялау және программаның орындалу орталары.
- •Программалау тілдерінің негізгі нысандары: типтер, тұрақтылар, айнымалылар, процедуралар. Олардың мақсатыжәне ара қатынасы.
- •5 Кіріс-шығыс операторлары.Кіріс-шығыс функциялары мен кітапханасы.
- •6.Функциялар және процедуралар, параметрлерді беру тәсілдері. Функция және процедура мысалдары.
- •10.2 Процедуралар
- •7.Циклды бағдарламалау орталары. Циклдан шығу әдістері. Цикл операторларына мысал. Рекурсивті функциялар.
- •8.Функциялар. Функцияның фактілі және формальды параметрлері. Айнымалы санды параметрлі функциялар. Рекурсивті функциялар.
- •9.Программаларды өңдеудің негізгі принциптері. Құрылымдық программалау, принциптері
- •10.Функциялар және көрсеткіштер. Көрсеткішпен жіберуде көрсеткіштерді функцияның нақты аргументі ретінде пайдалану.
- •12.Қолданбалы функцияларды құру.№есептеу үшін функцияларды тестілеу және анықтау. Көрсеткіш сілтемесімен берілетін фактілі аргументтер, функцияларды құру.
- •13.Алгоритм түсінігі. Алгоритмдерді талдау принциптері. O-нотация.
- •15,Сызықтық және циклдік тізімдер, стектер, дектер, кезек(файл) және екілік ағаштарды өңдеу, инициализациялау, хабарлау.
- •Сұрыптаудың негізгі алгоритмдері: қосу бойынша, таңдау бойынша сұрыптау.
- •18. Сұрыптаудың негізгі алгоритмдері: көпіршік бойынша сұрыптау. Сұрыптау алгоритмін талдау.
- •19.Сұрыптаудың негізгі алгоритмдері: шейкер сұрыптау, Шелл әдісі бойынша сұрыптау. Сұрыптау алгоритмін талдау.
- •20.Сұрыптаудың негізгі алгоритмдері: қосылу бойынша сұрыптау, тез сұрыптау. Сұрыптау алгоритмін талдау.
- •Жүктелуші модуль
- •Абсолютті модуль
- •24.Бағдарламаны тестілеу және қайта ретке келтіру.
- •Объектіге-бағытталған тілдер бағдарламасының негізгі конструкциялары. Операция және функцияларды қайта жүктеу түсінігі.
- •Объект және кластарды сипаттау. Конструктор және деструктор. Класс элементтеріне қол жетімділікті басқару сұрақтары.
- •Бірлік және көптік мұралау концепциялары. Туынды кластарды ашу және жабу.
- •Бірлік мұралау
- •Көптік мұралау
- •Полиморфизм принциптері. Абстрактілі кластар. Контейнерлі кластар.
- •29. Полиморфизм принциптері. Полиморфизм әр түрлілгі және оларды іске асыру.
- •Класс және функция шаблондары. Шешуші жағдайларда өңдеу және генерациялау.
- •Объектіге – бағытталған бағдарламалауды талдау және жобалау концерциялары. Бағдарламалық өнімдердің өмірлік циклдері.
- •Объектіге – бағытталған бағдарламалаудың құралдары және оларды объектіге – бағытталған талдауда қолдану.
29. Полиморфизм принциптері. Полиморфизм әр түрлілгі және оларды іске асыру.
1 Полиморфизм
Полиморфизм(polymorphism грек тілінен)- бұл техникалық әртүрлi есептерді, бірақ ұқсас екі немесе бірнеше есепті шығару үшін бірдей атты қолдануға мүмкiндiк беретін қасиет. Полиморфизмның объектіге бағытталған программалауда қолдану мақсаты, бір атты тапсырмасы ортақ класс әдістері (для класса действий) үшін қолдану болып табылады. Әрбiр нақты әдістердің (действия) орындалуы мәлiметтер типімен анықталады. Мысалы Си тiлі үшiн полиморфизмді қолдану жеткiлiксiз, себебі санның абсолюттiк шамасын табу үшін әр түрлі үш функция керек: abs(), labs() және fabs(). Бұл функциялар сәкесінше бүтін, ұзын бүтін (длинных целых) және жылжымалы нүктедегі санның абсолюттiк шамаларын есептеп қайтарады. Ал С++ тілінде осы аталған әр функция abs() деп атала алады. Функцияны шақыру кезінде қолданылатын маліметтер типі, нақты қай функцияның орындалып жатқанын анықтайды. C++ тілінде функцияның бір атын әр түрлі әрекеттерді (действия) орындау барысында пайдалануға болады. Бұл функцияның жүктелуі (function overloading) деп аталады.
Жалпы полиморфизмның негізгі тұжырымдамасы «бiр интерфейс, көп әдіс" идеясы болып табылады. Яғни мағынасы жақын әдістер тобы үшін ортақ бір интерфейс құруға болады деген сөз. Плоиморфизмнің негізгі қасиеті күрделі программалардың орындалуын жеңілдетеді, ол әр түрлі әдістерді орындау үшін бір ғана функцияны шақырып қолдануға мүмкіндік береді. Нақты бір әдісті алу программистке емес негізінен компиляторға жүктеледі, программист тек ортақ интерфейсті қолдануды ұмытпауы қажет. Полиморфизм сонымен бiрге операторларға да қолданыла алады. Iс жүзiнде барлық программалау тілдерінде полиморфизм шектеулі түрде қолданылады, мысалы арифметикалық операторлар. «+» символы Си тілінде бүтін, ұзын бүтін, символды айнымалылар және жылжымалы нүктедегі сандарды қосу үшін қолданылады. Бұл жағдайда компилятор автоматты түрде арифметиканың қай типі керек екенін анықтайды. Ал С++ тілінде бұл концепцияны басқа да өзіміз берген мәліметтер типіне сәйкес қолдана аламыз. Полиморфизмнің бұндай түрі операторлардың жүктелуі (operator overloading) деп аталады.
1.2 Функцияның жүктелуі
Функция жүктелуінің негізгі мақсаты мынадай: бір атпен жазылған функция әр түрлі орындалады және әр түрлі мәндер мен типіне сәйкес әр түрлі мәндер қайтарады. Жүктелу орындалу үшін, әрбір жүктелетін функцияның қайтаратын мәні мен айнымалыларын дәл сондай атпен жазылған басқа функциядан айырмашылығы болатындай етіп беру қажет. Компилятордың өзі типіне сәйкес берілген айнымалыны алатын қай функцияны алу керек екенін анықтайды.
Мысалы:
#include<iostream.h>
#include<string.h>
// int типті екі санды салыстыру
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
// float типті екі санды салыстыру
float max(float a,float b)
{
if(a>b) return a;
else return b;
}
// екі жолды салыстыру
char* max(char* a,char* b)
{
if(strcmp(a,b)>0) return a;
else return b;
}
void main()
{
int a1,b1;
float a2,b2;
char s1[20];
char s2[20];
cout<<"int tipi uwin:\n";
cout<<"a=";cin>>a1;
cout<<"b=";cin>>b1;
cout<<"MAX="<<max(a1,b1)<<"\n";
cout<<"\nfloat tipi uwin:\n";
cout<<"a=";cin>>a2;
cout<<"b=";cin>>b2;
cout<<"MAX="<<max(a2,b2)<<"\n";
cout<<"\nchar* tipi uwin:\n";
cout<<"a=";cin>>s1;
cout<<"b=";cin>>s2;
cout<<"MAX="<<max(s1,s2)<<"\n";
}