Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Полиморфизм принциптері. Абстрактілі кластар. Контейнерлі кластар



 

Объектіге-бағытталған бағдарламалау (орыс тілі Объектно-ориентированное программирование; ағыл. Object-orinted programming) — объектілерді қолдану арқылы бағдарламалау парадигмасы, объектілік-бағдарланған архитектурагы пайдаланады. Мәліметтердің әрбір құрылымы тек бір программалық модульде тұруы тиіс. Бұл мәліметтер құрылымындағы өзгерістердің және мәліметтермен орындалатын әрекеттердің оңашалануына кепілдік береді. Мәліметтерге кез келген қатынас құру тек модульді пайдалану арқылы болады. Объектілік-бағдарланған программалау негізгі 3 қасиетімен: инкапсуляцияларымен, мұрагерлігімен және полиморфизмімен сипатталады. Объект ұғымы дәстүрлі Паскаль, Си процедуралық-бейімделген программалау тілдеріне де енгізіледі. Объектіге-бағытталған бағдарламалау – объектілердің көмегімен бағдарламаларды жобалау, жазу. Объектіге -бағытталған бағдарламалаудың негізі болып объект саналады. Объект деп – мәліметтер және олармен жұмыс істеу әдістерінің жиынтығы аталады. Объектілі -бағытталған бағдарлама деп – объектілер және олардың өзара әрекеттесу тәсілдерінің жиынтығы аталады. Объектілі-бағытталған бағдарламалаудың негізгі принциптері:

Полиморфизм;

Инкапсуляция;

Мұрагерлік.

Полиморфизм - бір иерархиядағы объектілер үшін бір атаумен берілген әдістерді қолдану мүмкіндігі.

Инкапсуляция - бір объектілік типте мәліметтерді біріктіру.

Мұрагерлік - бір класстың мінездемелерін басқа класс арқылы қолдану мүмкінідігі. Кластар әдісі нақты өмір объектілерінің құрылуын көрсететін - әрбір заттың немесе процестің мінездемелер жиынтығы мен өзгешелігіне ие, басқа сөзбен айтқанда қасиеттер мен тәртіптерге.Объект жүйеде автономды әсер етуші болып табылады. Объектілердің рөлінде негізгі өкіл ретінде адамдарды, белгілі бір орындарды, ұжымдарды, концепциялар мен оқиғаларды көрсетуге болады.Объект тәртіп пен идентификация күйіне ие, ұқсас объектілердің құрылымы мен тәртібі объектілердің ортақ класын анықтайды.Класс қолданушының анықтауымен берілгендердің абстрактілі типі болып табылады. Ол қандай да бір заттың қасиеті мен тәртібін немесе берілгендер өрісімен(құрылымға сәйкес) қатысты процестің және жұмыс істеу функцияларын сипаттайды. Абстрактілеуобъектінің сыртқы ерекшеліктеріне назар аударып, бар тәртіп ерекшеліктерін жоқ тәртіп ерекшеліктерінен бөліп алуға көмектеседі. Абстрактілеудің бірнеше типтері бар. Олар объектілерден бастап нақты пәндік облыстың физикалық объектілерімен сәйкестелетін және шынайы өмірде бола алмайтын объектілермен аяқталатын. Объект элементтерін бір-бірінен бөлетін, оның ұйымдастырылуын және тәртібін анықтайтын процесс инкапсуляция деп аталады Абстракцияның контрактілік элементтерін реализациядан бөлектеу үшін инкапсуляция қолданылады. Көп жағдайда инкапсуляция объектінің сыртқы тәртібіне әсер етпейтін, көрінбейтін ішкі детальдардың қолданылуымен орындалады. Әдетте объектінің ішкі құрылымы және әдістердің іске асырылу реализациясы көрінбейді. Интерфейс – берілген класс объектілерінің ішкі тәртібін көрсетеді.Егер интерфейс сол қалпы қалған болса, бағдарлама бөлігін өзгертпестен класс реализациясын өзгертуге интерфейс көмектеседі. Иерархия “бүтін бөлік” агрегация қатынасын енгізеді. Мысал ретінде “Ұжым – қызметкер” арасындағы қатынасты келтіруге болады. Мұнда бүтін бөлік жай ғана өзінің бөлігінен үлкен болады.Модульділік – ішкі байланыстылыққа жататын, бірақ модульдері өз ішінде әлсіз байланысқан жүйенің қасиеті. Бағдарламаны модульге бөлу оның қиындығын азайтуға көмектеседі. Сонымен қатар модульді бағдарламаның ішінде көптеген жақсы анықталған және құжатталған, бағдарламаны толық түсінуге қажетті интерфейстер жасалады.Объектілі модульді құрғанда жүйені жеке компоненттерге бөлу ұсынылады. Олар:

Проблемалық облыс (бизнес – деңгей класы)

Адаммен қарым – қатынас (терезе және есеп беру)

Берілгендермен басқару (МҚБЖ-мен жұмыс)

Басқа жүйелермен ара қатынас

Бір кластың объектілерін басқаның орнына қолданудан қорғану әдісін және осындай басқаруды типтеу деп түсінуге болады.

VB-те type кілттік сөзіннен басталатын жариялау берілген тип айнымалысына емес типке жаңа ат енгізеді. Type кілттік сөзімен енгізілетін аттар, жаңа типтер емес, синонимдер болып табылады.

Типтеудің жетістіктері:

Типтердің бақылауының болмауы бағдарламаның орындалуы барысында, түсініксіз жағдайда бағдарламадан шығуға әкеліп соқтыруы мүмкін; Көптеген жүйелерде редактірлеу – компиляциялау процестері жедел жүреді және мұндай жағдайларда қатені ерте табу мүмкін емес;Типтерді жариялау бағдарламаларды құжаттауды жақсартады; Егер типтер белгілі болса, көптеген компиляторлар эффектілік объектілік кодтарды генерациялайды.

Контейнерлі класстар: Контейнерлер -бұл құрамында басқа бір типті объектілері бар объектілер. Контейнерлік кластар шаблон болып табылады, сондықтан онда сақталынатын объектілер қоса салынған немесе қолданушылық типте болуы мүмкін. Бұл объектлерді көшірме жасауға және меншіктеуге болады.Қосылған типтер бұл талаптарды қанағаттандырады, мұндай талап класта да көшірме алу немесе меншіктеу операциясының конструкторы жабылған немесе қорғалған болып жарияланбаса да тиісті болады. STL конструкторы бағдарлама жазу барысында қолданылатын негізгі мәліметтер құрылымын іске асырады.Меншікті ПЭУ жасау ( басқаша ОСХ басқа элементтері, ActiveX элементтерін басқару) – жаңа және СОМ моделіне негізделген өте ыңғайлы, қолданбаны өңдеу кезінде бағдарламалық кодты қайтара қолданатын визуалды құрал. Ол, мысалы, MS Office және Internet Explorer қолданбаларын құру кезінде қолданылған. ПЭУ-дің біз оқып кеткен басқа бағдарлама компоненттерінен айырмашылығы мынада: ол клиент қолданбаға өзінің қызметі мен әдісін беруден басқа қолданушыға визуалды интерфейсті де береді. Сондықтан ПЭУ қолданбалар формасында орналасқан функционалды мүмкіндіктерін орындау үшін қолданылады және тағы да Internet желісінде жұмыс істейтін ActiveX қолданба-құжатында қолданылады. Ашық ПЭУ интерфейсін анықтау және сәйкесінше кодты жасау үшін басқа элементтердің(ActiveX Control Interface Wizard) интерфейс мастерінің көмегімен қолдануға болады. Оны жанама меню күйіне(Add-Ins) құрамына енгізу үшін басты менюден күйге келтіру менеджерінің диалогын шақырамыз (Add-In Manager): Add-Ins_Add-In Manager және VB ActiveX Control Interface жалаушасын орнату керек.

Бірінші диалог пунктіне енгізілетін болып табылады және мастердің мүмкіндігін сипаттайды.Келесі диалог Select Interface Members – стандартты көрсетілген класс мүшесінің Clock элементін анықтауға мүмкіндік береді. Available names (қол жетімді) тізімінде көрсетілген мүшелердің көбі UserControl базалық кластың мүшелері де болады.Келесі Set Mapping (Байланыстарды орнату) қадамында біз таңдаған және біздің ПЭУ-де өзіміз құрған класс мүшелерінің UserControl контейнерінің өзінің класс мүшелерімен байланысуын іске асырамыз.

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";

}

 

30 Класс және функция шаблондары. Шешуші жағдайларда өңдеу және генерациялау.

 

Шаблондар (templates) – өте мықты құрал.

Шаблонды функциялардың қарапайым мысалы:

Type square (Type a){ Type b; b = a*a;return b;} int x = 5;int i; i = square(5); float y = 0.5;float f; f = square(y);

Егер қарапайым түрде функция құратын болсақ, екі түрлі функция жазу керек: int типі үшін және float типі үшін. Ал егер тағы да басқа типті қолданатын осындай функция қажет болса,онда оны қайтадан тағы жазу керек болады. Шаблондарды қолданып функцияның тек бір ғана экземплярын қолдануға болады. Функцияда нақты типтің орнына параметрлік тип немесе басқаша шаблон аргументі қолданылады

Төмендегі мысалда Type идентификаторы параметрлік тип болып табылады. . Функцияда бұл идентификатор 3 рет кездеседі: қайтарылатын мән, функция аргументі және bайнымалысының анықтамасы. Яғни Type кез келген қарапайым тип ретінде қолданылады. Ол үшін функция алдында келесі жолды қосу керек:

template<class Type> Type square (Type a) template<class Type>Type square (Type a) template< class Type >Type square (Type a) template< class Type > Type square (Type a)

Функция алдында template (шаблон) кілттік сөзі тұру керек, ал бұрыштық жақшаларда кілттік сөзі class болатын параметрлік типтің атын көрсету керек. class кілттік сөзінің орнына type сөзін қолдануға болады. Параметрлік тип идентификаторы кез келген бола алады.

31. Borland C++ Builder, Microsoft C++, Java секілді объектіге – бағытталған бағдарламалаудың әртүрлі инструментальды құралдары.

 

Объектіге бағдарланған программалауды жүзеге асыратын программалау орталарына Visual Basic, C++ Builder және т.б. жатады. ОБП-дың мағынасы мынада: программаның құрамындағы көптеген элементтер (мысалы, терезелер, мәзірлер, батырмалар және т.б.), программаға тұтастай қойылатын және программистің басқаруына ыңғайланған белгілі бір объектілер ретінде қарастырылады. Бұл объектілердің инкапсуляция, қабылдаушылық және полиморфизм принциптеріне негізделген ерекше қасиеттері, әдістері және әрекеттері болады. Объектіге бағдарланған программалаудың негізін құрайтын да осы инкапсуляция, қабылдаушылық және полиморфизм принциптері.

Класс.Инкапсуляция, қабылдаушылық және полиморфизм принциптеріне сәйкес анықталатын объектілерді программада сипаттау және қолдану үшін класс деп аталатын жаңа құрылымдық тип қарастырылады. Кез-келген объект белгілі бір кластың өкілі, бір данасы немесе айнымалысы болып есептеледі. Кластың құрамына өрістер, әдістер және қасиеттеркіреді.

Тума кластар өздерінде түпкі кластың барлық өрістерін сақтап калады және оны өзгерте алмайды, алып тастауға да болмайды, тек жаңа өрістермен толықтыруға болады. Түпкі класстың программадағы сипатталуы немесе кластың жаңа данасын құру программа модулінде келесі түрде жазылады.:

classкластың аты

{

private:

< жабық элементтер немесе мәліметтер>

жабық конструкторлар>

< жабық функция-элементтер>

рrotected:

< қорғалған элементтер немесе мәліметтер>

< қорғалған конструкторлар>

< қорғалған функция-элементтер>

рublic:

< ашық элементтер немесе мәліметтер>

< ашық конструкторлар>

< ашық деструкторлар>

< ашық функция-элементтер>

};

Мысалы:rectangle деп аталатын класты анықтау

classrectangle // кластың аты

{

private:

double length; // ұзындығы жабық элемент

double width; // ені жабық элемент

public:

rectangle() // конструктор үнсіздік бойынша

{assign(0,0);}

rectangle (doubleLen, double Wide) //конструктор

{assign(Len,Wide);}

double Length() // функция -элемент

{return length;}

double Width() // функция -элемент

{return width;}

double Area() // // функция -элемент

{return length*width;}

voidassign(doubleLen, double Wide); // // функция -элемент

};

Мұндағы, private, protected, publicбөлімдері класс құрамындағы элементтерді пайдаланудың ережелерін немесе приоритеттерін анықтайды. Ол бөлімдердің әрқайсысының қызметі бар.

Класстың функция-элементтерідегеніміз, бұл – бірнеше операторлардан тұратын, класстан тыс анықталатын функциялар. Бұл функциялар сол класс анықталған файлда болуы да мүмкін, бұл функция мен оның прототипінің берілуі сияқты болып келеді. Әдетте, функция-элементтерөз алдына бөлек *.h немесе *.сpp файлдарда жинақталады және оны анықтағанда әуелі оның класының атын жазып, сонан соң «::» /екі рет қос нүкте/ белгісін қойып, сонан соң барып функцияның аты жазылады, мысалы:

classrectangle // кластың аты

{

private:

... ... ...

public:

... ... ...

void assign(doubleLen, double Wide); // функция -элемент

}; // классты анықтау бітті

voidrectangle :: assign(double Len, double Wide)

// функция-элементтің өзінің анықталуы

{ length=Len;

width=Wide;

}

Конструкторлар классқа жататын объектілерді дұрыс құру үшін қолданылады.Конструктордыңанықталуы келесі түрде болады:

classrectangle // кластың аты

{

private:

... ... ...

public:

rectangle() // конструктор үнсіздік бойынша

{assign(0,0);}

rectangle (doubleLen, double Wide) //конструктор

{assign(Len,Wide);}

... ... ...

};

Конструктор үнсіздік бойынша болғанда оның параметрлері берілмейді немесе оның мәні нақты көрсетіліп беріледі, мысалы:

classrectangle // кластың аты

{

private:

... ... ...

public:

rectangle() // конструктор үнсіздік бойынша

{assign(0,0);}

rectangle (doubleLen, double Wide) //конструктор

{assign(Len,Wide);}

rectangle (doubleLen=10, double Wide=12) //конструктор үнсіздік мәні бойынша

... ... ...

};

Деструкторларклассқа жататын объектілерді автоматты түрде жою үшін қолданылады.Деструктордың анықталуы келесі түрде болады, мысалы:

class rectangle // кластың аты

{

private:

... ... ...

public:

rectangle(); // конструктор

... ... ...

~rectangle (); //деструктор

... ... ...

};

32 Объектіге – бағытталған бағдарламалауды талдау және жобалау концерциялары. Бағдарламалық өнімдердің өмірлік циклдері.

 

Обьектіге бағытталған бағдарламалар – бұл бағдарламалар әдісі, бағдаламалардың біріккен және обьектілерімен қарым қатынасынасын айтамыз.Обьектіге бағытталған бағдарламалар алгоритм емес, логикалық обьектідегі элементтерді құру үшін қолданылады. Объектіге бағытталған бағдарламалаудағы негізгі түсініктер–"класс", "объект", "интерфейс", "инкапсуляция", "наследование", "полиморфизм", "событие".Программадағы объект— бұл шын мәніндегі объектінің абстракциясы.Объект атрибуттардан тұрады.Атрибуттар объектінің негізгі белгілерін көрсетеді.Класс –бұл объекттерден құралған және кластардың мүшелерінен тұрады. Объект класстың экземпляры болып табылады.Объектіге бағытталған бағдарламалау принципінде құрылған программаны объекттердің бір бірімен байланысқан объектттер ретінде көруге болады.А объектісі Б объектісіне әсер етсе, Б объектісі А-ға кері әсер етуі мүмкін немесе В-ға әсер етуі мүмкін. Егер А — Объект жүйесі үшін ішкі болса,онда Б — интерфейсті объект. Біртипті хабарламаларды өңдей алатын әр түрлі кластар объектілерін бірге қолдану қажеттілігі полиморфизмді қолдауды қажет етеді. Полиморфизм-әр түрлі объектілерді бірдей типті айнымалыларға жазу. Қазіргі объектіге-бағытталған программалауда «хабарламаны жіберу әдісті шақыру ретінде»концепциясы қолданылады — объектілердің өзара әрекеттесуі сырттан қолжетімді әдістерді шақыру арқылы қамтамасыз етіледі. Виртуалды әдістер концепциясы полиморфты айнымалыларды қолданғанда қажетті әдістерді орындауды қамтамасыз ету құралы ретінде пайда болды.

Бағдарламалық өнімдердің өмірлік циклы– бұл бағдарламалық өнімді құру қажеттілігі туралы шешімді қабылдаудан басталып, қолданыстан мүлдем алынып тасталғанға дейінгі аралықтағы уақыт периоды. Кез келген типті бағдарламалар жеке кезеңдерден тұратын өмірлік циклдармен сипатталады: a) бағдарламалық құралдардың нарық маркетингі, бағдарламалық өнімге қойылатын талаптардың спецификациясы;b) бағдарламалық өнімнің құрылымын жобалау; c) программалау (программалық код құру), тестілеу, бағдарламаның автонды және комплексті дұрысталуы(отладка);d) бағдарламалық өнімді құжаттау, қолданбалы және технологиялық құжаттамаларды дайындау;e) бағдарламалық ұралдардың нарыққа шығуы, бағдарламалық өнімнің таралуы;f) бағдарламалық өнімді қолданушылардың пайдалануы; g) бағдарламалық өнімнің тексеріліп тұруы;h) бағдарламалық өнімнің сатылымнан шығарылуы.

 

33 Объектіге – бағытталған бағдарламалаудың құралдары және оларды объектіге – бағытталған талдауда қолдану.

 

Объектіге – бағытталған бағдарламалаудың құралдары - бұл бағдарламашыларға өз кодының өңдеуiнiң жанында ұғымға қарағанда процедура объект ұғыммен операция жасауға мүмкiндiк беретiн объективтi-хабар әдiстемелiктiң бөлiктерi. Объекттер капсуладан шығарылған мәлiметтер және бiрге шумақталған процедураларда туралы өйткенi бейнелей болады. объекттiң мәнi. «Объекттiң интерфейсi, объектпен өзара әрекеттесу суреттейдi, онда ол анықталған. Объективтi-хабар бастапқы кодтың iске асыруының жанында алған бағдарлама бұл объекттердiң өзара әрекеттесуi суреттейдi.

Негiзгi ұғымдар: Абстракция

Абстрактциялау - бұл әдiс қарастыруынан объекттiң мағыналы мiнездемелерiнiң болмалатын жиындары алмағанда ерекшелеу. Сәйкесiнше абстракция - бұл мiнездемелер жиын әйтседе.

Басқалық

Басқалық - бұл жүйенiң қасиетi, мүмкiндiк беретiн сыныптағы мәлiметтер және олармен жұмыс iстейтiн әдiстерiн топтастырсын және қолданушыдан iске асырудың бөлшегiн жабу.

Мұрагер болу

Мұрагер болу - бұл ендi негiзiнде жаңа сыныбын сипатталсын алып пайдаланатын функционалдықпен жартылай немесе толықпен қазiргi мүмкiндiк беретiн жүйелер қасиет. Мұрагер болу өндiрiп алатын сынып негiздi, аналық немесе суперкласспен деп аталады. Жаңа сынып - сыныппен нәсiлмен, мұрагермен немесе туындыларға.

Полиморфизм

Полиморфизм - бұл жүйенiң қасиетi түр және объекттiң iшкi құрылымы туралы бiрдей интерфейспен мәлiметсiз объекттердi пайдалану.

Сынып

Сынып қазiргi (объект ) мән әлi де түсiндiрiп жатылатын үлгiмен бастапқы кодтың (аттардың кеңiстiгi ) терминологиясының тiлiнде болып табылады. Iс жүзiнде ол устройст суреттей

 

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.