Հիմնական տարբերություն – Ստատիկ կապն ընդդեմ դինամիկ կապման
Ծրագրավորման լեզուները, ինչպիսիք են Java-ն և C-ն, աջակցում են Օբյեկտ ուղղված ծրագրավորմանը (OOP): Այն թույլ է տալիս ստեղծել ծրագրակազմ՝ օգտագործելով օբյեկտներ: Ծրագրային համակարգում կամ ծրագրում կան բազմաթիվ օբյեկտներ: Այս օբյեկտներն ունեն ատրիբուտներ և մեթոդներ: Հատկանիշները նկարագրում են բնութագրերը: Մեթոդները նկարագրում են այն գործողությունները, որոնք կարող են իրականացնել օբյեկտը: Տվյալները փոխանցվում են օբյեկտների միջոցով՝ օգտագործելով մեթոդներ: Պահանջվող արժեքներն ուղարկվում են պարամետրերով մեթոդի կանչերի միջոցով: Փաստացի մեթոդի իրականացումը մեթոդի սահմանման մեջ է: Կա կապ մեթոդի կանչի և մեթոդի սահմանման միջև:Այն հայտնի է որպես պարտադիր: Գոյություն ունեն երկու տեսակի կապեր. Դրանք ստատիկ կապող և դինամիկ կապող են: Ստատիկ կապի և դինամիկ կապի հիմնական տարբերությունն այն է, որ ստատիկ կապման մեջ կապը լուծվում է կոմպիլյացիայի ժամանակ, մինչդեռ դինամիկ կապը լուծվում է գործարկման ժամանակ, որը կատարման իրական ժամանակն է: Այս հոդվածը քննարկում է այս երկու պարտադիր մեխանիզմների տարբերությունը:
Ի՞նչ է Static Binding?
Կապումը մեթոդի կանչի և մեթոդի սահմանումների միջև կապն է:
Նկար 01. Ստատիկ կապ և դինամիկ կապ
Վերադարձեք Java-ով գրված ստորև ներկայացված ծրագրին:
հանրային դաս A{
public void մեթոդ1(){
System.out.println(«Մեթոդ1»);
}
public void մեթոդ2(){
System.out.println(«Method2»);
}
public static void main (String args){
A obj=նոր A();
obj.method1();
obj.method2();
}
}
Ըստ վերը նշված ծրագրի՝ ստեղծվում է A տիպի օբյեկտ։ Այնուհետև կոչվում են մեթոդ 1 և մեթոդ 2: Որոշել, թե որ մեթոդը պետք է կատարման կանչի, հայտնի է որպես պարտադիր: Obj.method1() հայտարարությունը կկանչի մեթոդ1() և obj.method2()-ը կկանչի մեթոդ2(): Այս հղումը պարտադիր է։
Ստատիկ կապում, կապումը լուծվում է կոմպիլյացիայի ժամանակ, կոմպիլյատորի կողմից: Այն նաև հայտնի է որպես վաղ կապում: Կապը տեղի է ունենում նախքան ծրագիրը իրականում գործարկվելը: Ստատիկ կապը տեղի է ունենում մեթոդի գերբեռնման ժամանակ: Տե՛ս ստորև ներկայացված Java-ով գրված ծրագիրը:
public void հաշվարկ{
public void sum (int x, int y){
System.out.println(«Գումարը «, x+y է);
}
public void sum (կրկնակի x, կրկնակի y){
System.out.println(«Գումարը «, x+y է);
}
public static void main (String args){
Calculation cal=new Calculation();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Ըստ վերոնշյալ ծրագրի՝ երկու ամբողջ թվերը փոխանցելիս կկանչվի երկու ամբողջ թվով մեթոդը։ Երկու կրկնակի արժեքներ փոխանցելիս կկանչվի երկու կրկնակի արժեքներին համապատասխանող մեթոդը: Այս պարտադիր գործընթացը տեղի է ունենում կազմման պահին: Կազմողը գիտի, որ պետք է կանչի sum մեթոդ երկու ամբողջ թվով cal.sum(2, 3) համար։ Cal(5.1, 6.4) համար այն կկանչի գումարի մեթոդը երկու կրկնակի արժեքներով: Բոլոր պահանջվող տեղեկությունները հայտնի են մինչև գործարկման ժամանակը, ուստի այն մեծացնում է ծրագրի արդյունավետությունը և կատարման արագությունը:
Ի՞նչ է Dynamic Binding?
Dynamic Binding-ում կոմպիլյատորը չի լուծում կապը կոմպիլյացիայի ժամանակ: Կապը տեղի է ունենում գործարկման ժամանակ: Այն նաև հայտնի է որպես ուշ կապում: Դինամիկ կապը տեղի է ունենում մեթոդի գերակայության դեպքում: Տե՛ս Java-ով գրված ծրագիրը։
public class Shape(){
public void draw(){
System.out.println («Նկարել ձևը»);
}
}
public class Circle() ընդլայնում է Shape{
public void draw(){
System.out.println(«Նկարել շրջան»);
}
}
public class Triangle() ընդլայնում է ձևը{
public void draw(){
System.out.println(«Նկարել եռանկյունի»);
}
}
հանրային դասի թեստ{
public static void main (String args){
Shape s;
s=new Shape();
s.draw();
s=նոր շրջան();
s.draw();
s=նոր եռանկյուն();
s.draw();
}
}
Ըստ վերը նշված ծրագրի Shape դասը ունի մեթոդ draw(): Class Circle և դասի Triangle ընդլայնում են Shape դասը: Դասի Circle և Triangle դասը կարող են ժառանգել Shape դասի ատրիբուտներն ու մեթոդները: Հետևաբար, դասի Shape-ը գերդաս կամ ծնող դաս է: Class Circle-ը և Class Triangle-ը ենթադասեր են կամ ստացված դասեր: Այս դասերն ունեն նաև draw() մեթոդ՝ իրենց սեփական իրականացումներով։ Հետևաբար, սուպեր դասում draw() մեթոդը վերացվել է:
Հիմնական մեթոդում կանչվում են տարբեր օբյեկտներ: Կա Shape տեսակի հղման փոփոխական, որը s է: Այնուհետև s-ն կանչում է մեթոդը՝ ըստ կոնկրետ դասի: Կազմման ժամանակ կոմպիլյատորը կանդրադառնա միայն սուպեր դասի նկարման մեթոդին:Երբ փաստացի կատարումը սկսվի, դա կհանգեցնի նկարչության տարբեր մեթոդների կատարմանը: Նախ, s-ը ցույց կտա Shape տեսակի օբյեկտը: Հետևաբար, այն կկանչի նկարչական մեթոդը Shape դասում: Այնուհետև s-ը ցույց կտա Circle տիպի օբյեկտը և կկանչի Circle դասի նկարչական մեթոդը: Վերջապես, s-ը նկատի կունենա Triangle տիպի օբյեկտը և կկանչի Triangle դասում նկարելու մեթոդը: Թեև հղման փոփոխականը Shape տիպի է, պարտադիր է, որ կախված է օբյեկտի տեսակից: Այս հայեցակարգը հայտնի է որպես Dynamic Binding: Տեղեկատվությունը տրամադրվում է գործարկման ժամանակ, ուստի կատարման արագությունն ավելի դանդաղ է՝ համեմատած ստատիկ կապի հետ։
Ո՞րն է նմանությունը ստատիկ կապի և դինամիկ կապի միջև:
Երկուսն էլ կապված են պոլիմորֆիզմի հետ, որը թույլ է տալիս օբյեկտին վարվել բազմաթիվ ձևերով:
Ո՞րն է տարբերությունը ստատիկ կապի և դինամիկ կապի միջև:
Static Binding vs Dynamic Binding |
|
Static Binding-ը կապի այն տեսակն է, որը հավաքում է բոլոր անհրաժեշտ տեղեկությունները կոմպիլյացիայի ժամանակ ֆունկցիա կանչելու համար: | Dynamic Binding-ը կապման այն տեսակն է, որը հավաքում է բոլոր անհրաժեշտ տեղեկությունները գործարկման ընթացքում ֆունկցիա կանչելու համար: |
Ամրացման ժամանակը | |
Ստատիկ կապը տեղի է ունենում կոմպիլյացիայի ժամանակ: | Դինամիկ կապը տեղի է ունենում գործարկման ժամանակ: |
Ֆունկցիոնալություն | |
Static Binding օգտագործում է տիպի տեղեկատվություն կապելու համար: | Dynamic Binding-ը օգտագործում է առարկաներ՝ կապելու համար: |
Փաստացի օբյեկտ | |
Ստատիկ կապը չի օգտագործում իրական օբյեկտ կապելու համար: | Դինամիկ կապ, օգտագործեք իրական օբյեկտը կապելու համար: |
Հոմանիշներ | |
Ստատիկ կապը հայտնի է նաև որպես վաղ կապում: | Դինամիկ կապը հայտնի է նաև որպես ուշ կապում: |
Կատարում | |
Կատարման արագությունը արագ է ստատիկ կապում: | Կատարման արագությունը ցածր է դինամիկ կապում: |
Օրինակ | |
Ստատիկ կապն օգտագործվում է մեթոդի գերբեռնման ժամանակ: | Դինամիկ կապն օգտագործվում է մեթոդի գերակայման ժամանակ: |
Ամփոփում – Ստատիկ կապն ընդդեմ դինամիկ կապի
Կա կապ մեթոդի կանչի և մեթոդի սահմանման միջև:Այն հայտնի է որպես պարտադիր: Գոյություն ունեն կապերի երկու տեսակ, որոնք կոչվում են ստատիկ կապ և դինամիկ կապ: Ստատիկ կապի և դինամիկ կապի միջև տարբերությունն այն է, որ ստատիկ կապման դեպքում կապը լուծվում է կոմպիլյացիայի ժամանակ, մինչդեռ դինամիկ կապը լուծվում է գործարկման ժամանակ, որը կատարման իրական ժամանակն է: Քանի որ պահանջվող տեղեկատվությունը տրամադրվում է գործարկման ժամանակից առաջ, ստատիկ կապը արագ է կատարվում՝ համեմատած դինամիկ կապի հետ:
Ներբեռնեք Static Binding vs Dynamic Binding-ի PDF-ը
Դուք կարող եք ներբեռնել այս հոդվածի PDF տարբերակը և օգտագործել այն անցանց նպատակներով՝ ըստ մեջբերումների: Խնդրում ենք ներբեռնել PDF տարբերակը այստեղ. Տարբերությունը ստատիկ կապի և դինամիկ կապի միջև