Статикалық байланыстыру мен динамикалық байланыстыру арасындағы айырмашылық

Мазмұны:

Статикалық байланыстыру мен динамикалық байланыстыру арасындағы айырмашылық
Статикалық байланыстыру мен динамикалық байланыстыру арасындағы айырмашылық

Бейне: Статикалық байланыстыру мен динамикалық байланыстыру арасындағы айырмашылық

Бейне: Статикалық байланыстыру мен динамикалық байланыстыру арасындағы айырмашылық
Бейне: Кубики Чаплыгина, Кубики Зайцева | Обучение детей чтению | Обзор современных методик 2024, Шілде
Anonim

Негізгі айырмашылық – статикалық байланыстыру және динамикалық байланыстыру

Java және C сияқты бағдарламалау тілдері Объектіге бағытталған бағдарламалауды (OOP) қолдайды. Ол объектілерді пайдаланып бағдарламалық жасақтаманы құруға мүмкіндік береді. Бағдарламалық жүйеде немесе бағдарламада көптеген объектілер бар. Бұл нысандардың атрибуттары мен әдістері бар. Атрибуттар сипаттамаларды сипаттайды. Әдістер объект орындай алатын әрекеттерді сипаттайды. Мәліметтер әдістер арқылы объектілер арқылы беріледі. Қажетті мәндер параметрлері бар әдіс шақырулары арқылы жіберіледі. Нақты әдісті іске асыру әдіс анықтамасында. Әдіс шақыруы мен әдісті анықтау арасында байланыс бар. Ол байланыстыру ретінде белгілі. Байланыстырудың екі түрі бар. Олар статикалық байланыстыру және динамикалық байланыстыру. Статикалық байланыстыру мен динамикалық байланыстыру арасындағы негізгі айырмашылық мынада: статикалық байланыстыру кезінде байланыстыру компиляция уақытында шешіледі, ал динамикалық байланыстыру орындалу уақытында шешіледі, бұл нақты орындалу уақыты. Бұл мақалада осы екі байланыстыру механизмінің айырмашылығы талқыланады.

Статикалық байланыстыру дегеніміз не?

Байланыстыру - әдіс шақыруы мен әдіс анықтамалары арасындағы сілтеме.

Статикалық байланыстыру мен динамикалық байланыстыру арасындағы айырмашылық
Статикалық байланыстыру мен динамикалық байланыстыру арасындағы айырмашылық

01-сурет: статикалық байланыстыру және динамикалық байланыстыру

Төмендегі Java тілінде жазылған бағдарламаны қараңыз.

қоғамдық сынып A{

қоғамдық жарамсыз әдіс1(){

System.out.println («1-әдіс»);

}

қоғамдық жарамсыз әдіс2(){

System.out.println («2-әдіс»);

}

public static void main(String args){

A нысан=жаңа A();

obj.method1();

obj.method2();

}

}

Жоғарыдағы бағдарламаға сәйкес А типті объект жасалады. Содан кейін әдіс1 және әдіс2 шақырылады. Орындауға қандай әдіс шақыру керек екенін анықтау байланыстыру деп аталады. obj.method1() операторы method1() шақырады, ал obj.method2() method2() шақырады. Бұл сілтеме міндетті.

Статикалық байланыстыруда байланыстыру компиляция уақытында компилятор арқылы шешіледі. Ол ерте байланыстыру ретінде де белгілі. Байланыстыру бағдарлама шынымен іске қосылғанға дейін орын алады. Статикалық байланыстыру әдісті шамадан тыс жүктеуде орын алады. Java тілінде жазылған төмендегі бағдарламаны қараңыз.

қоғамдық жарамсыз Есеп{

жалпыға ортақ жарамсыз сома(int x, int y){

System.out.println(“Қосынды – “, x+y);

}

жалпыға ортақ жарамсыз сома(қос x, қос у){

System.out.println(“Қосынды – “, x+y);

}

public static void main(String args){

Calculation cal=new Calculation();

кал.сома(2, 3);

кал.сома(5.1, 6.4);

}

}

Жоғарыдағы бағдарламаға сәйкес екі бүтін санды бергенде екі бүтін санды әдіс шақырылады. Екі қос мәнді беру кезінде екі қосарланған мәнге сәйкес әдіс шақырылады. Бұл байланыстыру процесі компиляция кезінде орын алады. Компилятор cal.sum(2, 3) үшін екі бүтін мәндермен sum әдісін шақыру керектігін біледі. cal(5.1, 6.4) үшін ол қос мәнмен қосынды әдісін шақырады. Барлық қажетті ақпарат орындалу уақытына дейін белгілі, сондықтан ол бағдарламаның тиімділігі мен орындалу жылдамдығын арттырады.

Динамикалық байланыстыру дегеніміз не?

Динамикалық байланыстыруда компилятор компиляция уақытында байланыстыруды шешпейді. Байланыстыру орындалу уақытында орын алады. Ол кеш байлау ретінде де белгілі. Динамикалық байланыстыру әдісті қайта анықтауда орын алады. Java тілінде жазылған бағдарламаны қараңыз.

қоғамдық сынып Shape(){

жалпыға ортақ жарамсыз ұтыс(){

System.out.println («Пішін салу»);

}

}

жалпы сынып Circle() пішінді кеңейтеді{

жалпыға ортақ жарамсыз ұтыс(){

System.out.println («Шеңбер сызу»);

}

}

жалпы сынып Triangle() пішінді кеңейтеді{

жалпыға ортақ жарамсыз ұтыс(){

System.out.println («Үшбұрыш сызу»);

}

}

қоғамдық сынып тесті{

public static void main(String args){

Пішін s;

s=жаңа пішін();

s.draw();

s=new Circle();

s.draw();

s=жаңа үшбұрыш();

s.draw();

}

}

Жоғарыдағы бағдарламаға сәйкес Shape сыныбында draw() әдісі бар. Class Circle және класс үшбұрышы Shape класын кеңейтеді. Класс шеңбері және үшбұрыш класы Shape класының атрибуттары мен әдістерін иелене алады. Сондықтан, сынып пішіні супер класс немесе ата-аналық сынып болып табылады. Класс шеңбері және класс үшбұрышы ішкі сыныптар немесе туынды сыныптар болып табылады. Бұл сыныптарда өздерінің іске асырулары бар draw() әдісі де бар. Сондықтан супер класстағы draw() әдісі қайта анықталған.

Негізгі әдісте әртүрлі нысандар шақырылады. Shape түрінің анықтамалық айнымалысы бар, ол s. Содан кейін s арнайы сыныпқа сәйкес әдісті шақырады. Компиляция уақытында компилятор тек супер классты тарту әдісіне сілтеме жасайды. Нақты орындау басталғанда, ол әртүрлі тарту әдістерін орындауға әкеледі. Біріншіден, s Shape түріндегі нысанды меңзейді. Сондықтан ол Shape сыныбында сызу әдісін шақырады. Содан кейін s Circle түріндегі нысанды көрсетеді және ол Circle класының draw әдісін шақырады. Соңында, s Triangle түріндегі нысанға сілтеме жасайды және ол Triangle сыныбында сызу әдісін шақырады. Сілтеме айнымалысы Shape түрінде болса да, байланыстыру нысан түріне байланысты болады. Бұл тұжырымдама динамикалық байланыстыру ретінде белгілі. Ақпарат орындалу уақытында беріледі, сондықтан орындау жылдамдығы статикалық байланыстырумен салыстырғанда баяуырақ.

Статикалық байланыстыру мен динамикалық байланыстырудың қандай ұқсастығы бар?

Бұл екеуі де объектінің бірнеше жолмен әрекет етуіне мүмкіндік беретін полиморфизмге қатысты

Статикалық байланыстыру мен динамикалық байланыстырудың айырмашылығы неде?

Статикалық байланыстыру және динамикалық байланыстыру

Статикалық байланыстыру – компиляция уақытында функцияны шақыру үшін барлық қажетті ақпаратты жинайтын байланыстыру түрі. Динамикалық байланыстыру – жұмыс уақытында функцияны шақыру үшін барлық қажетті ақпаратты жинайтын байланыстыру түрі.
Байланыс уақыты
Статикалық байланыстыру компиляция уақытында орын алады. Динамикалық байланыстыру орындалу уақытында орын алады.
Функционалдық
Статикалық байланыстыру байланыстыру үшін түр ақпаратын пайдаланады. Динамикалық байланыстыру байланыстыруды шешу үшін нысандарды пайдаланады.
Нақты нысан
Статикалық байланыстыру байланыстыру үшін нақты нысанды пайдаланбайды. Динамикалық байланыстыру, байланыстыру үшін нақты нысанды пайдаланыңыз.
Синонимдер
Статикалық байланыстыру ерте байланыстыру ретінде де белгілі. Динамикалық байланыстыру кеш байлау ретінде де белгілі.
Орындау
Орындау жылдамдығы статикалық байланыстыруда жылдам. Динамикалық байланыстыруда орындау жылдамдығы төмен.
Мысалы
Статикалық байланыстыру әдісті шамадан тыс жүктеуде қолданылады. Динамикалық байланыстыру әдісті қайта анықтауда пайдаланылады.

Жиынтық – статикалық байланыстыру және динамикалық байланыстыру

Әдіс шақыруы мен әдіс анықтамасы арасында байланыс бар. Ол байланыстыру ретінде белгілі. Статикалық байланыстыру және динамикалық байланыстыру деп аталатын байланыстырудың екі түрі бар. Статикалық байланыстыру мен динамикалық байланыстырудың айырмашылығы мынада: статикалық байланыстыруда байланыстыру компиляция уақытында шешіледі, ал динамикалық байланыстыру орындалу уақытында шешіледі, бұл нақты орындалу уақыты. Қажетті ақпарат орындау уақытына дейін берілгендіктен, динамикалық байланыстырумен салыстырғанда статикалық байланыстыру жылдам орындалады.

Статикалық байланыстыру және динамикалық байланыстырудың PDF нұсқасын жүктеп алу

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

Ұсынылған: