Dallimi kryesor – Lidhja statike kundrejt lidhjes dinamike
Gjuhët e programimit si Java dhe C mbështesin Programimin e Orientuar në Objekt (OOP). Ai lejon ndërtimin e softuerit duke përdorur objekte. Ka shumë objekte në një sistem softuerik ose një program. Këto objekte kanë atribute dhe metoda. Atributet përshkruajnë karakteristikat. Metodat përshkruajnë veprimet që mund të kryhen nga objekti. Të dhënat kalohen nëpër objekte duke përdorur metoda. Vlerat e kërkuara dërgohen përmes thirrjeve të metodave me parametra. Zbatimi aktual i metodës është në përkufizimin e metodës. Ekziston një lidhje midis thirrjes së metodës dhe përcaktimit të metodës. Njihet si detyrues. Ekzistojnë dy lloje të lidhjeve. Ato janë lidhje statike dhe dinamike. Dallimi kryesor midis lidhjes statike dhe lidhjes dinamike është se, në lidhjen statike, lidhja zgjidhet në kohën e përpilimit ndërsa lidhja dinamike zgjidhet në kohën e ekzekutimit, që është koha aktuale e ekzekutimit. Ky artikull diskuton ndryshimin midis këtyre dy mekanizmave lidhës.
Çfarë është Lidhja Statike?
Lidhja është lidhja midis thirrjes së metodës dhe përcaktimeve të metodës.
Figura 01: Lidhja statike dhe lidhja dinamike
Referojuni programit të mëposhtëm të shkruar në Java.
klasa publike A{
metoda e zbrazët publike1(){
System.out.println("Method1");
}
metoda e zbrazët publike2(){
System.out.println("Method2");
}
public static void main(String args){
A obj=e re A();
obj.method1();
obj.method2();
}
}
Sipas programit të mësipërm, krijohet një objekt i tipit A. Pastaj thirren metoda 1 dhe metoda 2. Identifikimi se cila metodë duhet të thërrasë për ekzekutim njihet si binding. Deklarata obj.method1() do të thërrasë metodën1() dhe obj.method2() do të thërrasë metodën2(). Kjo lidhje është e detyrueshme.
Në lidhjen statike, lidhja zgjidhet në kohën e përpilimit nga përpiluesi. Njihet gjithashtu si lidhja e hershme. Lidhja ndodh përpara se një program të ekzekutohet. Lidhja statike ndodh në mbingarkimin e metodës. Referojuni programit të mëposhtëm të shkruar në Java.
Llogaritja e zbrazëtisë publike{
shuma publike e zbrazët (int x, int y){
System.out.println("Suma është ", x+y);
}
shuma e zbrazët publike (dyfish x, dyfish y){
System.out.println("Suma është ", x+y);
}
public static void main(String args){
Llogaritja cal=Llogaritja e re();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Sipas programit të mësipërm, gjatë kalimit të dy numrave të plotë, do të thirret metoda me dy numra të plotë. Kur kaloni dy vlera të dyfishta, do të thirret metoda që korrespondon me dy vlera të dyfishta. Ky proces i lidhjes ndodh në kohën e përpilimit. Përpiluesi e di se duhet të thërrasë metodën sum me dy vlera të plota për cal.sum(2, 3). Për cal(5.1, 6.4), do të thërrasë metodën e shumës me dy vlera të dyfishta. I gjithë informacioni i kërkuar dihet përpara kohës së ekzekutimit, kështu që rrit efikasitetin e programit dhe shpejtësinë e ekzekutimit.
Çfarë është Lidhja Dinamike?
Në lidhjen dinamike, përpiluesi nuk e zgjidh lidhjen në kohën e përpilimit. Lidhja ndodh në kohën e ekzekutimit. Njihet gjithashtu si lidhja e vonë. Lidhja dinamike ndodh në mbivendosjen e metodës. Referojuni programit të shkruar në Java.
klasa publike Shape(){
public void draw(){
System.out.println("Vizato formën");
}
}
Klasa publike Rrethi() zgjeron formën{
public void draw(){
System.out.println("Vizato rrethin");
}
}
klasa publike Triangle() zgjeron formën{
public void draw(){
System.out.println("Vizato trekëndësh");
}
}
Testi i klasës publike{
public static void main(String args){
Shape s;
s=formë e re();
s.draw();
s=Rrethi i ri();
s.draw();
s=trekëndësh i ri();
s.draw();
}
}
Sipas programit të mësipërm, klasa Shape ka një metodë draw(). Klasa Rrethi dhe klasa Triangle zgjerojnë klasën Shape. Klasa Rrethi dhe klasa Triangle mund të trashëgojnë atributet dhe metodat e klasës Shape. Prandaj, klasa Shape është klasa super ose klasa prind. Rrethi i klasës dhe trekëndëshi i klasës janë nënklasa ose klasa të prejardhura. Këto klasa gjithashtu kanë metodën draw() me implementimet e tyre. Prandaj, metoda draw() në klasën super është anashkaluar.
Në metodën kryesore thirren objekte të ndryshme. Ekziston një variabël referimi i llojit Shape, i cili është s. Pastaj, s thërret metodën sipas klasës specifike. Në kohën e përpilimit, përpiluesi do të referojë vetëm metodën e tërheqjes së super klasës. Kur fillon ekzekutimi aktual, do të çojë në ekzekutimin e metodave të ndryshme të tërheqjes. Së pari, s do të tregojë objektin e tipit Shape. Prandaj, do të thërrasë metodën e tërheqjes në klasën Shape. Atëherë s-ja do të tregojë objektin e tipit Circle dhe do të thërrasë metodën e tërheqjes së klasës Rrethi. Së fundi, s do t'i referohet objektit të tipit Triangle dhe do të thërrasë metodën e tërheqjes në klasën Triangle. Edhe pse ndryshorja e referencës është e tipit Shape, lidhja ndodh të varet nga lloji i objektit. Ky koncept njihet si Lidhja Dinamike. Informacioni ofrohet në kohën e ekzekutimit, kështu që shpejtësia e ekzekutimit është më e ngad altë në krahasim me lidhjen statike.
Cila është ngjashmëria midis lidhjes statike dhe lidhjes dinamike?
Të dyja këto janë të lidhura me një polimorfizëm që lejon një objekt të sillet në mënyra të shumta
Cili është ndryshimi midis lidhjes statike dhe lidhjes dinamike?
Lidhja statike kundrejt lidhjes dinamike |
|
Lidhja statike është lloji i lidhjes që mbledh të gjithë informacionin e kërkuar për të thirrur një funksion gjatë kohës së përpilimit. | Dynamic Binding është lloji i lidhjes që mbledh të gjithë informacionin e kërkuar për të thirrur një funksion gjatë kohës së ekzekutimit. |
Koha e lidhjes | |
Lidhja statike ndodh në kohën e përpilimit. | Lidhja dinamike ndodh në kohën e ekzekutimit. |
Funksionalitet | |
Lidhja statike përdor informacionin e tipit për lidhjen. | Dynamic Binding përdor objekte për të zgjidhur për t'u lidhur. |
Objekti aktual | |
Lidhja statike nuk përdor një objekt aktual për lidhje. | Lidhje dinamike, përdorni objektin aktual për lidhje. |
Sinonime | |
Lidhja statike njihet gjithashtu si lidhja e hershme. | Lidhja dinamike njihet edhe si lidhja e vonshme. |
Ekzekutimi | |
Shpejtësia e ekzekutimit është e shpejtë në lidhjen statike. | Shpejtësia e ekzekutimit është e ulët në lidhjen dinamike. |
Shembull | |
Lidhja statike përdoret në mbingarkimin e metodës. | Lidhja dinamike përdoret në tejkalimin e metodës. |
Përmbledhje – Lidhja statike kundrejt lidhjes dinamike
Ekziston një lidhje midis thirrjes së metodës dhe përcaktimit të metodës. Njihet si detyrues. Ekzistojnë dy lloje lidhjesh të quajtura lidhje statike dhe lidhje dinamike. Dallimi midis lidhjes statike dhe lidhjes dinamike është se në lidhjen statike, lidhja zgjidhet në kohën e përpilimit ndërsa lidhja dinamike zgjidhet në kohën e ekzekutimit, që është koha aktuale e ekzekutimit. Meqenëse informacioni i kërkuar jepet përpara kohës së ekzekutimit, lidhja statike është e shpejtë në ekzekutim në krahasim me lidhjen dinamike.
Shkarkoni PDF-në e Lidhjes Static vs Lidhjes Dinamike
Mund ta shkarkoni versionin PDF të këtij artikulli dhe ta përdorni për qëllime jashtë linje sipas shënimit të citimit. Ju lutemi shkarkoni versionin PDF këtu: Dallimi midis Lidhjes Statike dhe Lidhjes Dinamike