Негизги айырмасы – Статикалык Байланыш жана Динамикалык Байланыш
Java жана C сыяктуу программалоо тилдери Объектке багытталган программалоону (OOP) колдойт. Бул объекттерди колдонуу менен программалык камсыздоону курууга мүмкүндүк берет. Программалык камсыздоо системасында же программада көптөгөн объекттер бар. Бул объекттердин атрибуттары жана ыкмалары бар. Атрибуттар мүнөздөмөлөрдү сүрөттөйт. Методдор объект тарабынан аткарыла турган аракеттерди сүрөттөйт. Маалыматтар методдор аркылуу объекттер аркылуу өткөрүлөт. Керектүү маанилер параметрлери бар ыкма чалуулары аркылуу жөнөтүлөт. Чыныгы ыкманы ишке ашыруу методду аныктоодо. Методду чакыруу менен методду аныктоонун ортосунда байланыш бар. Бул байлоо катары белгилүү. Байланыштардын эки түрү бар. Алар статикалык жана динамикалык байланыш болуп саналат. Статикалык туташтыруу менен динамикалык байланыштын негизги айырмасы, статикалык байланышта, компиляция убагында чечилет, ал эми динамикалык байланыштыруу аткаруу убагында чечилет, бул иш жүзүндө аткарылуучу убакыт. Бул макалада бул эки байланыш механизминин ортосундагы айырма талкууланат.
Статикалык байланыш деген эмне?
Байланыш - бул ыкма чакыруусу менен ыкма аныктамаларынын ортосундагы байланыш.
01-сүрөт: Статикалык байланыш жана динамикалык байлоо
Төмөнкү Java тилинде жазылган программаны караңыз.
коомдук класс A{
жалпыга ачык жараксыз ыкма1(){
System.out.println("Method1");
}
коомдук жокко чыгаруу ыкмасы2(){
System.out.println("Method2");
}
жалпыга ачык статикалык жараксыз негизги(String args){
A obj=new 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);
}
жалпыга ачык статикалык жараксыз негизги(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("Үч бурчтук тартуу");
}
}
коомдук класс тести{
жалпыга ачык статикалык жараксыз негизги(Сап аргтар){
Форма s;
s=new Shape();
s.draw();
s=new Circle();
s.draw();
s=new Triangle();
s.draw();
}
}
Жогорудагы программага ылайык, Shape классында draw() ыкмасы бар. Circle классы жана үч бурчтук классы Shape классын кеңейтет. Class Circle жана класс Triangle Shape классынын атрибуттарын жана ыкмаларын мурастай алат. Демек, класс формасы супер класс же ата-эне класс болуп саналат. Класс чөйрөсү жана Класс үч бурчтугу - суб класстар же туунду класстар. Бул класстарда өзүнүн ишке ашыруулары менен draw() ыкмасы да бар. Ошондуктан, супер класстагы draw() ыкмасы жокко чыгарылды.
Негизги ыкмада ар кандай объекттер чакырылат. Shape түрүндөгү шилтеме өзгөрмө бар, ал s. Андан кийин, s белгилүү бир класска ылайык ыкманы чакырат. Компиляция убагында компилятор супер класстын тартуу ыкмасына гана кайрылат. Иш жүзүндө аткаруу башталганда, ал ар кандай тартуу ыкмаларын аткарууга алып келет. Биринчиден, s Shape түрүндөгү объектти көрсөтүп турат. Ошондуктан, ал Shape классында тартуу ыкмасын чакырат. Андан кийин s Circle түрүндөгү объектти көрсөтүп турат жана ал Circle классынын тартуу ыкмасын чакырат. Акырында, s Triangle түрүндөгү объектке шилтеме кылып, Triangle классындагы тартуу ыкмасын чакырат. Шилтеме өзгөрмө түрү Shape болсо да, байланыш объектинин түрүнө жараша болот. Бул түшүнүк динамикалык байланыш катары белгилүү. Маалымат аткаруу убагында берилет, андыктан аткаруу ылдамдыгы статикалык байланышка салыштырмалуу жайыраак.
Статикалык байланыш менен динамикалык байланыштын кандай окшоштугу бар?
Булардын экөө тең объектке бир нече жол менен иштөөгө мүмкүндүк берген полиморфизмге байланыштуу
Статикалык байланыш менен динамикалык байланыштын ортосунда кандай айырма бар?
Статикалык байлоо жана динамикалык байлоо |
|
Статикалык байланыштыруу – компиляция учурунда функцияны чакыруу үчүн бардык керектүү маалыматты чогултуучу туташтыруунун түрү. | Динамикалык байланыштыруу – иштөө учурунда функцияны чакыруу үчүн бардык талап кылынган маалыматты чогултуучу туташтыруунун түрү. |
Байланыш убактысы | |
Статикалык байланыш компиляция учурунда пайда болот. | Динамикалык туташтыруу иштөө учурунда пайда болот. |
Функционалдык | |
Статикалык Байланыш байлоо үчүн тип маалыматын колдонот. | Динамикалык байланыштыруу объекттерди байланыштыруу үчүн чечүүгө колдонот. |
Чыныгы объект | |
Статикалык туташтырууда түптөө үчүн чыныгы объект колдонулбайт. | Динамикалык байлоо, туташтыруу үчүн чыныгы объектти колдонуңуз. |
Синонимдер | |
Статикалык байланыш эрте туташтыруу катары да белгилүү. | Динамикалык туташтыруу кеч байланыш катары да белгилүү. |
Аткаруу | |
Аткаруу ылдамдыгы статикалык байланышта тез. | Аткаруу ылдамдыгы динамикалык байланышта төмөн. |
Мисалы | |
Статикалык туташтыруу методду ашыкча жүктөөдө колдонулат. | Динамикалык байланыштыруу методду жокко чыгарууда колдонулат. |
Корытынды – Статикалык Байланыш жана Динамикалык Байланыш
Методду чакыруу менен методду аныктоонун ортосунда байланыш бар. Бул байлоо катары белгилүү. Байланыштардын статикалык жана динамикалык деп аталган эки түрү бар. Статикалык туташтыруу менен динамикалык байланыштыруу ортосундагы айырма, статикалык байланышта, компиляция убагында чечилет, ал эми динамикалык байланыштыруу аткаруу убактысында чечилет, бул иш жүзүндө аткарылуучу убакыт. Талап кылынган маалымат иштөө убактысына чейин берилгендиктен, статикалык байланыш динамикалык туташтырууга салыштырмалуу тез аткарылат.
Статикалык Байланыш жана Динамикалык Байланыш PDFти жүктөп алыңыз
Сиз бул макаланын PDF версиясын жүктөп алып, аны оффлайн максаттары үчүн колдонсоңуз болот. Сураныч, PDF версиясын бул жерден жүктөп алыңыз: Static Binding жана Dynamic Bindingортосундагы айырма