Ključna razlika – statičko uvezivanje naspram dinamičkog uvezivanja
Programski jezici kao što su Java i C podržavaju objektno orijentirano programiranje (OOP). Omogućuje izgradnju softvera pomoću objekata. Postoji mnogo objekata u softverskom sustavu ili programu. Ovi objekti imaju atribute i metode. Atributi opisuju karakteristike. Metode opisuju radnje koje objekt može izvesti. Podaci se kroz objekte prosljeđuju pomoću metoda. Tražene vrijednosti se šalju putem poziva metode s parametrima. Stvarna implementacija metode je u definiciji metode. Postoji veza između poziva metode i definicije metode. Poznato je kao vezanje. Postoje dvije vrste uveza. Oni su statički uvez i dinamički uvez. Ključna razlika između statičkog i dinamičkog povezivanja je ta što se kod statičkog povezivanja povezivanje rješava u vrijeme kompilacije, dok se dinamičko povezivanje rješava u vrijeme izvođenja, što je stvarno vrijeme izvršenja. Ovaj članak govori o razlici između ova dva mehanizma vezivanja.
Što je statičko uvezivanje?
Vezivanje je veza između poziva metode i definicija metode.
Slika 01: Statičko uvezivanje i dinamičko uvezivanje
Pogledajte donji program napisan u Javi.
javna klasa A{
javna void metoda1(){
System.out.println(“Metoda1”);
}
javna void metoda2(){
System.out.println(“Method2”);
}
public static void main(String args){
A obj=novi A();
obj.method1();
obj.method2();
}
}
Prema gornjem programu kreira se objekt tipa A. Zatim se pozivaju metoda1 i metoda2. Identificiranje metode koja bi trebala pozvati izvršenje poznato je kao vezanje. Naredba obj.method1() će pozvati method1(), a obj.method2() će pozvati method2(). Ova veza je obvezujuća.
U statičkom povezivanju, prevoditelj rješava povezivanje u vrijeme prevođenja. Također je poznato kao rano uvezivanje. Povezivanje se događa prije nego što se program stvarno pokrene. Statičko vezivanje se događa kod preopterećenja metode. Pogledajte donji program napisan u Javi.
javni izračun nevažećih{
javni void zbroj(int x, int y){
System.out.println(“Zbroj je “, x+y);
}
javni void zbroj (dvostruki x, dvostruki y){
System.out.println(“Zbroj je “, x+y);
}
public static void main(String args){
Izračun cal=novi izračun();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Prema gornjem programu, prilikom prosljeđivanja dva cijela broja, bit će pozvana metoda s dva cijela broja. Prilikom prosljeđivanja dvije dvostruke vrijednosti, poziva se metoda koja odgovara dvjema dvostrukim vrijednostima. Ovaj proces vezivanja događa se u vrijeme kompilacije. Prevodilac zna da treba pozvati metodu zbroja s dvije vrijednosti cijelog broja za cal.sum(2, 3). Za cal(5.1, 6.4), pozvat će metodu zbroja s dvije dvostruke vrijednosti. Sve potrebne informacije poznate su prije izvođenja, što povećava učinkovitost programa i brzinu izvršenja.
Što je dinamičko uvezivanje?
U dinamičkom povezivanju kompajler ne razrješava vezivanje tijekom kompajliranja. Vezanje se događa tijekom izvođenja. Također je poznato kao kasno uvezivanje. Dinamičko vezanje događa se u nadjačavanju metode. Pogledajte program napisan u Javi.
javna klasa Shape(){
javno izvlačenje praznine(){
System.out.println(“Nacrtaj oblik”);
}
}
javna klasa Circle() proširuje oblik{
javno izvlačenje praznine(){
System.out.println(“Nacrtaj krug”);
}
}
javna klasa Triangle() proširuje oblik{
javno izvlačenje praznine(){
System.out.println(“Nacrtaj trokut”);
}
}
javni razredni test{
public static void main(String args){
Oblik s;
s=novi oblik();
s.draw();
s=novi krug();
s.draw();
s=novi trokut();
s.draw();
}
}
Prema gornjem programu, klasa Shape ima metodu draw(). Klasa Krug i klasa Trokut proširuju klasu Oblik. Klase Circle i klase Trokut mogu naslijediti atribute i metode klase Shape. Stoga je klasa Shape superklasa ili nadređena klasa. Klasa Krug i Klasa Trokut su potklase ili izvedene klase. Ove klase također imaju metodu draw() s vlastitim implementacijama. Stoga je metoda draw() u super klasi nadjačana.
U glavnoj metodi pozivaju se različiti objekti. Postoji referentna varijabla tipa Shape, koja je s. Zatim, s poziva metodu prema specifičnoj klasi. U vrijeme prevođenja, prevodilac će uputiti samo metodu crtanja super klase. Kada stvarno izvršenje počne, to će dovesti do izvršenja različitih metoda izvlačenja. Prvo, s će pokazivati na objekt tipa Shape. Stoga će pozvati metodu crtanja u klasi Shape. Tada će s pokazivati na objekt tipa Circle i pozvati će metodu crtanja klase Circle. Konačno, s će se odnositi na objekt tipa Trokut i pozvati će metodu crtanja u klasi Trokut. Iako je referentna varijabla tipa Shape, vezanje ovisi o vrsti objekta. Ovaj koncept je poznat kao dinamičko uvezivanje. Informacije se daju tijekom izvođenja, tako da je brzina izvođenja sporija u usporedbi sa statičkim vezanjem.
Koja je sličnost između statičkog i dinamičkog uvezivanja?
Oboje je povezano s polimorfizmom koji omogućuje objektu da se ponaša na više načina
Koja je razlika između statičkog uvezivanja i dinamičkog uvezivanja?
Statičko uvezivanje u odnosu na dinamičko uvezivanje |
|
Statičko vezivanje je vrsta vezivanja koja prikuplja sve potrebne informacije za pozivanje funkcije tijekom vremena prevođenja. | Dinamičko vezivanje je vrsta vezivanja koja prikuplja sve potrebne informacije za pozivanje funkcije tijekom vremena izvođenja. |
Vrijeme uvezivanja | |
Statičko povezivanje događa se tijekom kompajliranja. | Dinamičko vezanje događa se tijekom izvođenja. |
Funkcionalnost | |
Statičko uvezivanje koristi informacije o vrsti za uvezivanje. | Dinamičko uvezivanje koristi objekte za rješavanje vezanja. |
Stvarni objekt | |
Statičko uvezivanje ne koristi stvarni objekt za uvezivanje. | Dinamičko uvezivanje, koristite stvarni objekt za uvezivanje. |
Sinonimi | |
Statičko uvezivanje također je poznato kao rano uvezivanje. | Dinamičko uvezivanje također je poznato kao kasno uvezivanje. |
Izvršenje | |
Brzina izvršenja je velika u statičkom povezivanju. | Brzina izvršenja je niska u dinamičkom povezivanju. |
Primjer | |
Statičko vezivanje koristi se u preopterećenju metoda. | Dinamičko vezanje koristi se u nadjačavanju metode. |
Sažetak – Statičko uvezivanje u odnosu na dinamičko uvezivanje
Postoji veza između poziva metode i definicije metode. Poznato je kao vezanje. Postoje dvije vrste uvezivanja koje se nazivaju statičko uvezivanje i dinamičko uvezivanje. Razlika između statičkog i dinamičkog povezivanja je u tome što se kod statičkog povezivanja povezivanje rješava u vrijeme kompajliranja, dok se dinamičko povezivanje rješava u vrijeme izvođenja, što je stvarno vrijeme izvođenja. Budući da se potrebne informacije daju prije vremena izvođenja, statičko vezanje se brzo izvodi u usporedbi s dinamičkim vezivanjem.
Preuzmite PDF statičkog uvezivanja naspram dinamičkog uvezivanja
Možete preuzeti PDF verziju ovog članka i koristiti ga za izvanmrežne svrhe prema napomeni o citatu. Ovdje preuzmite PDF verziju: Razlika između statičkog i dinamičkog uvezivanja