Негізгі айырмашылық – ерте және кеш байлау
Ерте байланыстыру және кеш байланыстыру - полиморфизмге қатысты екі ұғым. Ерте байланыстыру компиляция уақытында орын алады, ал кешіктіру орындалу уақытында орын алады. Ерте және кеш байланыстырудың негізгі айырмашылығы мынада: Ерте байланыстыру әдіс шақыруын шешу үшін сынып ақпаратын пайдаланады, ал Кеш байлау әдісті шақыруды шешу үшін нысанды пайдаланады.
Java сияқты бағдарламалау тілдері Объектіге бағытталған бағдарламалауды (OOP) қолдайды. Бұл объектілерді пайдаланып бағдарламаны немесе бағдарламалық жасақтаманы құруға мүмкіндік беретін парадигма. Бағдарламалық құралда бірнеше нысандар бар. Бұл объектілер бір-бірімен байланысады және әдістерді қолдану арқылы хабарламаларды береді. Әрбір объектінің сипаттамалары мен мінез-құлқы болады. Сипаттамалар қасиеттер немесе атрибуттар арқылы сипатталады. Әдістер арқылы мінез-құлық сипатталады. Студент нысанының аты, жасы сияқты сипаттамалары болуы мүмкін және олар қасиеттер арқылы көрсетіледі. Оқушы нысанында оқу және оқу сияқты мінез-құлық болуы мүмкін және олар әдістер арқылы көрсетіледі. OOP негізгі тіректерінің бірі - полиморфизм. Ол нысанға бірнеше жолмен әрекет етуге мүмкіндік береді. Ерте байланыстыру және кеш байланыстыру - бұл полиморфизмдегі екі ұғым. Шамадан тыс жүктеу әдістері ерте байланыстыру арқылы байланыстырылады. Қайта анықталған әдістер кеш байланыстыру арқылы біріктірілген.
Ерте байланыстыру дегеніміз не?
Ерте байланыстыруда сынып ақпараты әдісті шақыруды шешу үшін пайдаланылады. Ерте байланыстыру компиляция уақытында орын алады. Ол сондай-ақ статикалық байланыстыру ретінде белгілі. Бұл процесте байланыстыру бағдарлама нақты іске қосылғанға дейін орын алады. Шамадан тыс жүктеу әдістері ерте байланыстыру арқылы байланыстырылады. Төмендегі бағдарламаны қараңыз.
01-сурет: Есептеу класы
02-сурет: Ерте байланыстыруға арналған негізгі бағдарлама
Жоғарыдағы бағдарламаға сәйкес Есептеу сыныбы екі бүтін мәнді қабылдайтын қосу әдісін және екі қосарланған мәнді қабылдайтын басқа қосу әдісін қамтиды. Негізгі программада Calculation типті объект құрылады. Қосу әдісіне екі бүтін санды бергенде, ол екі бүтін санды қабылдайтын қосу әдісін шақырады. Қосу әдісіне екі қос мәнді бергенде, ол екі қосарланған мәнге сәйкес әдісті шақырады. Бұл байланыстыру процесі компиляция уақытында орын алады. Барлық қажетті ақпарат орындалу уақытына дейін белгілі, сондықтан ол бағдарламаның тиімділігі мен орындалу жылдамдығын арттырады.
Кешіктіру дегеніміз не?
Кешіктіруде нысан әдісті шақыруды шешу үшін пайдаланылады. Кеш байланыстыру орындалу уақытында орын алады. Ол сондай-ақ динамикалық байланыстыру ретінде белгілі. Бұл процесте байланыстыру бағдарламаны орындау кезінде орын алады. Қайта анықталған әдістер кеш байланыстыру арқылы біріктіріледі. Төмендегі бағдарламаны қараңыз.
03-сурет: пішін класы
04-сурет: шеңбер сыныбы
05-сурет: үшбұрыш класы
06-сурет: Кешіктіруге арналған негізгі бағдарлама
Жоғарыдағы бағдарламаға сәйкес Shape сыныбында ұтыс әдісі бар. Class Circle және Triangle класы Shape класын кеңейтеді. Демек, бұл екі класс Shape класының атрибуттары мен әдістерін иелене алады. Shape Class - негізгі класс. Circle және Triangle кластары туынды кластар болып табылады. Circle класы мен Triangle сыныбының өз іске асырулары бар сызу әдісі де бар. Осылайша, Shape сыныбында сызу әдісі туынды сыныптардың сызу әдістерімен қайта анықталады.
Негізгі бағдарламада Shape типті s анықтамалық айнымалысы жасалады. Компиляция уақытында компилятор тек негізгі сыныпты тарту әдісіне сілтеме жасайды. Орындау уақытында әртүрлі тарту әдістері орындалады. Біріншіден, s Shape түріндегі нысанды көрсетеді. Сонымен, Shape класының draw әдісі шақырылады. Содан кейін s Circle типті объектіні көрсетеді және ол Circle класының draw әдісін шақырады. Соңында, s Triangle түріндегі нысанды көрсетеді және ол Triangle сыныбында сызу әдісін шақырады. Әдістер объектілерге байланысты шақырылады. Сондықтан нысан кешіктіруде әдісті шақыруды шешу үшін пайдаланылады. Байланыстыруға қажетті ақпарат орындалу уақытында беріледі, сондықтан орындау жылдамдығы ерте байланыстырумен салыстырғанда баяуырақ.
Ерте байланыстыру мен кеш байланыстырудың қандай ұқсастығы бар?
Ерте байланыстыру да, кеш байлау да OOP тірегі болып табылатын полиморфизмге қатысты
Ерте байланыстыру мен кешіктірудің айырмашылығы неде?
Ерте байланыстыру және кешіктіру |
|
Компиляция уақытында орын алатын әдісті шақыруды шешу үшін сынып ақпаратын пайдалану процесі Ерте байланыстыру деп аталады. | Орындалу уақытында орын алатын әдісті шақыруды шешу үшін нысанды пайдалану процесі Кеш байлау деп аталады. |
Байланыс уақыты | |
Ерте байланыстыру компиляция уақытында орындалады. | Кеш байлау орындалу уақытында орын алады. |
Функционалдық | |
Ерте байланыстыру әдісті шақыруды шешу үшін сынып ақпаратын пайдаланады. | Кеш байлау әдісті шақыруды шешу үшін нысанды пайдаланады. |
Синонимдер | |
Ерте байланыстыру статикалық байланыстыру ретінде де белгілі.. | Кешіктіру динамикалық байланыстыру ретінде де белгілі. |
Болған оқиға | |
Артық жүктеу әдістері ерте байланыстыру арқылы байланыстырылады. | Қайта анықталған әдістер кеш байлау арқылы біріктіріледі. |
Орындау жылдамдығы | |
Ерте байланыстыру кезінде орындау жылдамдығы жылдамырақ. | Кейін байлау кезінде орындау жылдамдығы төмен. |
Қорытынды – ерте және кеш байлау
OOP әдетте бағдарламалық жасақтаманы әзірлеу үшін пайдаланылады. OOP негізгі тіректерінің бірі полиморфизм болып табылады. Ерте байлау және кеш байлау осыған байланысты. Ерте байланыстыру компиляция уақытында орын алады, ал кешіктіру орындалу уақытында орын алады. Әдістің шамадан тыс жүктелуінде байланыстыру ерте байланыстыру арқылы жүзеге асады. Әдісті қайта анықтауда байланыстыру кеш байланыстыру арқылы жүзеге асады. Ерте және кеш байланыстырудың айырмашылығы мынада: Ерте байланыстыру әдіс шақыруын шешу үшін сынып ақпаратын пайдаланады, ал Кеш байлау әдісті шақыруды шешу үшін нысанды пайдаланады.