Տարբերություն ստատիկ կապի և դինամիկ կապի միջև

Բովանդակություն:

Տարբերություն ստատիկ կապի և դինամիկ կապի միջև
Տարբերություն ստատիկ կապի և դինամիկ կապի միջև

Video: Տարբերություն ստատիկ կապի և դինամիկ կապի միջև

Video: Տարբերություն ստատիկ կապի և դինամիկ կապի միջև
Video: №18 Աստղաբանություն: Կենդանակերպի նշանների դիալեկտիկական զարգացումը: 2024, Հուլիսի
Anonim

Հիմնական տարբերություն – Ստատիկ կապն ընդդեմ դինամիկ կապման

Ծրագրավորման լեզուները, ինչպիսիք են 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 տարբերակը այստեղ. Տարբերությունը ստատիկ կապի և դինամիկ կապի միջև

Խորհուրդ ենք տալիս: