Әрбір объект қайсыбір объектер класының экземпляры болып табылады. Мысалы, Audi 6 автомобилі осы модель автомобильдері классының экземпляры болып табылады, ал, мысық сүтқоректілер классының экземпляры. Осылайша, класс – бұл абстрактілі ұғым. Класстар бір-бірімен әртүрлі қатынаста болады. Осындай қатынастардың негізгілерінің бірі: клас-ішкі класс қатынасы. Бұл объектті-программалауда мұрагерлік қатынасы ретінде белгілі. Мысалы, Audi 6 автомобильдер классы жеңіл автомобильдер классына ішкі класс болып табылады. Жеңіл автомобильдер классы кӛліктер классының ішкі классы. Кӛліктер ӛз кезегінде транспорт құралдары классының ішкі классы. Транспорт құралдарына кӛліктермен қатар самолеттер, поезд, корабль т.б. жатады.
Мұрагерлік қатынасында берлық атрибуттар мен тәсілдер аталық класстанн ұрпақ-классқа беріледі. Мұрагерлік кӛпдеңгейлі болуы мүмкін. Бұл жағдайда, иерархияның тӛменгі деңгейіндегі класстар тікелей не жанама аталық класстардың барлық қасиеттерін мұраға алады.
Сурет 1 - Әдіс және қасиеттердің ӛзара байланысы
Бірегей мұрагерліктен бӛлек кӛпмұрагерлік те бар. Бұл жағдайда класс бірден бірнеше класстардың мұрагері болып табылады, және оларың барық қасиеттерін мұраға алады. Кӛпмұрагерлік қатынасын қолдану барысында мынаған кӛңіл аудару керек: ұрпақ класс бірдей атаулы бірақ, мазмұны әртүрлі қасиеттерге ие болып қалуы мүмкін.
Мұрагерлікте бір тәсілдің орнын басқа бір тәсіл алмастыруы мүмкін. Мысалы, транспорт құралдары классы қозғалу қасиетіне ие(жалпыға бірдей). Бұл әдіс ұрпақ-класстарда нақтыланады: автомобиль – жүреді, самолет – ұшады, корабль – жүзеді. Тәсіл семантикасының осылайша ӛзгеруі полиморфизм делінеді. Полиморфизм – бұл сол бір атаулы тәсілдің контекстке тәуелді(дербес жағдайда, қайсы классқа тиістілігіне байланысты) әртүрлі әрекеттер орындауы.
Объекттер полиморфизмі
Объектігі бағытталған программалауды қолдану барысында объекттердің полиморфизмі қамтамасыз етіледі. Бұл термин нені білдіреді?
Объекттердің полиморфизмі мынаны білдіреді: әртүрлі объекттерге жіберілген бір және сол бір хабарлама программаның орындалу этапында нақты қайсы объект осы хабарламаның қабылдаушысы болуына байланысты әртүрлі әрекеттердің орындалуына (әртүрлі тәсілдердің шақырылуы)әкелуі мүмкін.
Басқаша айтқанда: қасиеті, қызметі, ішкі құрылымы бойынша әртүрлі объекттер мағынасы бойынша бірдей(програмисттің кӛзқарасы тұрғысынан) әрекеттерді табиғаты мен ішкі құрылымына байланысты әртүрлі орындауы мүмкін.
Егер хабарламаны жіберу тәсілдің процедура сияқты шақырылуына алмастырылған болса(Си, Паскаль тілдерінде), онда полиморфизм мынаны білдіреді: тәсіл шақыруы сақталған программа кодының сол және тек сол бір бӛлігі кодтың орындалу кезінде қайсы класстың экземпляры әрекетті орындаушы боп табылуына байланысты әртүрлі тәсілдердің шақырылуына әкеледі.
Мысал.
Қазірше нақты бір тілдің синтаксисін қолданып жатпаймыз. Айталық, Р – объект кӛрсеткіші болсын. Р кӛрсеткіші програмаманың орындалу кезінде түрлі класстарға нұсқауы мүмкін. Айталық, ол параметр ретінде қайсыбір ррр процедураға берілсін. Хабарлама жіберу тілдің құралдарымен былайша жазылатын болсын P.Show; ppp процедурасы "паскалдік" стилде былайша сипатталсын
procedure ppp(P); begin P.Show; end;
Достарыңызбен бөлісу: |