Statik bogʻlash va dinamik bogʻlash oʻrtasidagi farq

Mundarija:

Statik bogʻlash va dinamik bogʻlash oʻrtasidagi farq
Statik bogʻlash va dinamik bogʻlash oʻrtasidagi farq

Video: Statik bogʻlash va dinamik bogʻlash oʻrtasidagi farq

Video: Statik bogʻlash va dinamik bogʻlash oʻrtasidagi farq
Video: ТРУБА УЛАШДА НИМАЛАРГА ЭТИБОР БЕРИШ КЕРАК (SVARKA QILISH SIRLARI) 2024, Iyul
Anonim

Asosiy farq – statik bogʻlash va dinamik bogʻlash

Java va C kabi dasturlash tillari obyektga yoʻn altirilgan dasturlashni (OOP) qoʻllab-quvvatlaydi. Ob'ektlar yordamida dasturiy ta'minotni yaratishga imkon beradi. Dasturiy ta'minot tizimi yoki dasturda ko'plab ob'ektlar mavjud. Ushbu ob'ektlar atributlari va usullariga ega. Atributlar xususiyatlarni tavsiflaydi. Usullar ob'ekt tomonidan bajarilishi mumkin bo'lgan harakatlarni tavsiflaydi. Ma'lumotlar ob'ektlar orqali usullar yordamida uzatiladi. Kerakli qiymatlar parametrlar bilan usul chaqiruvlari orqali yuboriladi. Haqiqiy usulni amalga oshirish usul ta'rifida. Usul chaqiruvi va metod ta'rifi o'rtasida bog'liqlik mavjud. U bog'lash sifatida tanilgan. Bog'lanishning ikki turi mavjud. Ular statik bog'lanish va dinamik bog'lanishdir. Statik bog'lanish va dinamik bog'lanish o'rtasidagi asosiy farq shundaki, statik bog'lanishda bog'lanish kompilyatsiya vaqtida hal qilinadi, dinamik bog'lanish esa bajarilish vaqtida, ya'ni haqiqiy bajarilish vaqti. Ushbu maqolada ushbu ikkita bog'lash mexanizmi o'rtasidagi farq muhokama qilinadi.

Statik ulanish nima?

Binding - bu usul chaqiruvi va metod ta'riflari o'rtasidagi bog'lanish.

Statik bog'lash va dinamik bog'lash o'rtasidagi farq
Statik bog'lash va dinamik bog'lash o'rtasidagi farq

01-rasm: Statik bogʻlash va dinamik bogʻlash

Quyidagi Java-da yozilgan dasturga qarang.

ommaviy sinf A{

ommaviy bekor qilish usuli1(){

System.out.println («1-usul»);

}

ommaviy bekor qilish usuli2(){

System.out.println("Usul 2");

}

ommaviy statik bekor asosiy(String args){

A obj=yangi A();

obj.method1();

obj.method2();

}

}

Yuqoridagi dasturga muvofiq A tipidagi ob'ekt yaratiladi. Keyin usul 1 va usul 2 chaqiriladi. Qaysi usul ijro uchun chaqirilishi kerakligini aniqlash majburiy deb nomlanadi. obj.method1() iborasi method1() ni chaqiradi va obj.method2() metod2() ni chaqiradi. Bu havola majburiy.

Statik bog'lanishda bog'lanish kompilyatsiya vaqtida kompilyator tomonidan hal qilinadi. U erta bog'lanish sifatida ham tanilgan. Bog'lanish dasturni ishga tushirishdan oldin sodir bo'ladi. Statik bog'lanish usulni ortiqcha yuklashda sodir bo'ladi. Java tilida yozilgan quyidagi dasturga qarang.

ommaviy bekor Hisoblash{

ommaviy bekor summasi(int x, int y){

System.out.println(“Sum – “, x+y);

}

ommaviy bekor summasi(ikki marta x, ikki barobar y){

System.out.println(“Sum – “, x+y);

}

ommaviy statik bekor asosiy(String args){

Calculation cal=new Calculation();

kal.sum(2, 3);

kal.sum(5.1, 6.4);

}

}

Yuqoridagi dasturga ko'ra, ikkita butun sonni o'tkazishda ikkita butun sonli usul chaqiriladi. Ikki juft qiymatni o'tkazishda ikkita qo'sh qiymatga mos keladigan usul chaqiriladi. Ushbu bog'lash jarayoni kompilyatsiya paytida sodir bo'ladi. Kompilyator cal.sum(2, 3) uchun ikkita butun qiymat bilan sum usulini chaqirishi kerakligini biladi. cal (5.1, 6.4) uchun u ikkita qo'sh qiymatli yig'indi usulini chaqiradi. Barcha kerakli ma'lumotlar ish vaqtidan oldin ma'lum, shuning uchun u dastur samaradorligini va bajarilish tezligini oshiradi.

Dinamik ulanish nima?

Dynamic Binding-da kompilyator kompilyatsiya vaqtida bog'lanishni hal qilmaydi. Bog'lanish ish vaqtida sodir bo'ladi. U kech bog'lanish sifatida ham tanilgan. Dinamik bog'lanish usulni bekor qilishda sodir bo'ladi. Java tilida yozilgan dasturga qarang.

ommaviy sinf Shakl(){

ommaviy bekor chizish(){

System.out.println("Shaklni chizish");

}

}

ommaviy sinf Circle() shaklni kengaytiradi{

ommaviy bekor chizish(){

System.out.println("Doira chizish");

}

}

ommaviy sinf Triangle() shaklni kengaytiradi{

ommaviy bekor chizish(){

System.out.println(“Uchburchak chizish”);

}

}

ommaviy sinf testi{

ommaviy statik bekor asosiy(String args){

Shakl;

s=new Shape();

s.draw();

s=new Circle();

s.draw();

s=yangi uchburchak();

s.draw();

}

}

Yuqoridagi dasturga muvofiq Shape sinfida draw() usuli mavjud. Class Circle va Class Triangle Shakl sinfini kengaytiradi. Class Circle va Class Triangle Shape sinfining atributlari va usullarini meros qilib olishi mumkin. Shunday qilib, Shape sinfi super sinf yoki ota-ona sinfidir. Sinf doirasi va sinf uchburchagi quyi sinflar yoki hosila sinflardir. Ushbu sinflarda o'z ilovalari bilan draw() usuli ham mavjud. Shuning uchun super sinfdagi draw() usuli bekor qilingan.

Asosiy usulda turli obyektlar chaqiriladi. Shakl tipidagi mos yozuvlar o'zgaruvchisi mavjud, u s. Keyin, s muayyan sinfga muvofiq usulni chaqiradi. Kompilyatsiya vaqtida kompilyator faqat super klass chizish usuliga murojaat qiladi. Haqiqiy bajarish boshlanganda, bu turli xil chizish usullarini bajarishga olib keladi. Birinchidan, s Shape tipidagi ob'ektga ishora qiladi. Shuning uchun u Shape sinfida chizish usulini chaqiradi. Keyin s Circle tipidagi ob'ektga ishora qiladi va u Circle sinfining chizish usulini chaqiradi. Nihoyat, s Triangle tipidagi ob'ektga ishora qiladi va u Triangle sinfida chizish usulini chaqiradi. Malumot o'zgaruvchisi Shape tipida bo'lsa ham, ulanish ob'ekt turiga bog'liq bo'ladi. Ushbu kontseptsiya Dynamic Binding deb nomlanadi. Ma'lumot ish vaqtida taqdim etiladi, shuning uchun statik bog'lanishga nisbatan bajarish tezligi sekinroq.

Statik bogʻlash va dinamik bogʻlash oʻrtasidagi oʻxshashlik nimada?

Bularning ikkalasi ham ob'ektga bir necha usulda harakat qilish imkonini beruvchi polimorfizm bilan bog'liq

Statik bogʻlash va dinamik bogʻlash oʻrtasidagi farq nima?

Statik ulash va dinamik bog'lash

Statik bogʻlash kompilyatsiya vaqtida funksiyani chaqirish uchun barcha kerakli maʼlumotlarni toʻplaydigan bogʻlash turidir. Dinamik bogʻlash - bu funksiyani ishga tushirish vaqtida chaqirish uchun barcha kerakli maʼlumotlarni yigʻuvchi bogʻlash turi.
Bogʻlanish vaqti
Statik bogʻlanish kompilyatsiya vaqtida sodir boʻladi. Dinamik bogʻlanish ish vaqtida sodir boʻladi.
Funksionallik
Statik bogʻlash bogʻlash uchun tur maʼlumotlaridan foydalanadi. Dynamic Binding ob'ektlarni bog'lashni hal qilish uchun ishlatadi.
Haqiqiy ob'ekt
Statik bogʻlashda bogʻlash uchun haqiqiy obyekt ishlatilmaydi. Dinamik bogʻlash, bogʻlash uchun haqiqiy obyektdan foydalaning.
Sinonimlar
Statik bogʻlanish erta bogʻlanish sifatida ham tanilgan. Dinamik bogʻlanish kechikish sifatida ham tanilgan.
Bajarish
Ijro tezligi statik ulanishda tezdir. Dinamik ulanishda bajarilish tezligi past.
Misol
Usulni ortiqcha yuklashda statik bogʻlash qoʻllaniladi. Usulni bekor qilishda dinamik bogʻlash qoʻllaniladi.

Xulosa – Statik bogʻlash va dinamik bogʻlash

Usul chaqiruvi va usul taʼrifi oʻrtasida bogʻliqlik mavjud. U bog'lash sifatida tanilgan. Statik bog'lanish va dinamik bog'lanish deb ataladigan ikki xil bog'lanish mavjud. Statik bog'lanish va dinamik bog'lanish o'rtasidagi farq shundaki, statik bog'lanishda bog'lanish kompilyatsiya vaqtida hal qilinadi, dinamik bog'lanish esa bajarilish vaqtida, ya'ni haqiqiy bajarilish vaqti. Kerakli maʼlumotlar ishga tushirish vaqtidan oldin taqdim etilgani uchun statik bogʻlanish dinamik bogʻlanishga nisbatan tez bajariladi.

Dynamic Binding va Static Binding PDF-ni yuklab oling

Siz ushbu maqolaning PDF-versiyasini yuklab olishingiz va iqtibos keltirgan holda oflayn maqsadlarda foydalanishingiz mumkin. Iltimos, PDF versiyasini bu yerdan yuklab oling: Statik bog'lash va dinamik bog'lash o'rtasidagi farq

Tavsiya: