Ključna razlika – statična vezava v primerjavi z dinamično vezavo
Programski jeziki, kot sta Java in C, podpirajo objektno usmerjeno programiranje (OOP). Omogoča gradnjo programske opreme z uporabo predmetov. V programskem sistemu ali programu je veliko objektov. Ti objekti imajo atribute in metode. Atributi opisujejo lastnosti. Metode opisujejo dejanja, ki jih lahko izvaja predmet. Podatki se prenašajo skozi objekte z uporabo metod. Zahtevane vrednosti se pošljejo prek klicev metode s parametri. Dejanska izvedba metode je v definiciji metode. Obstaja povezava med klicem metode in definicijo metode. Znano je kot vezanje. Obstajata dve vrsti vezav. So statična vezava in dinamična vezava. Ključna razlika med statično in dinamično vezavo je v tem, da je pri statičnem povezovanju vezava razrešena v času prevajanja, medtem ko je dinamična vezava razrešena v času izvajanja, ki je dejanski čas izvajanja. Ta članek obravnava razliko med tema dvema mehanizmoma vezave.
Kaj je statična vezava?
Povezovanje je povezava med klicem metode in definicijami metode.
Slika 01: Statična in dinamična vezava
Glejte spodnji program, napisan v Javi.
javni razred A{
javna neveljavna metoda1(){
System.out.println(“Method1”);
}
javna neveljavna metoda2(){
System.out.println(“Method2”);
}
javni statični void main(String args){
A obj=nov A();
obj.method1();
obj.method2();
}
}
Po zgornjem programu se ustvari objekt tipa A. Nato se pokličeta metoda1 in metoda2. Ugotavljanje, katera metoda naj kliče k izvedbi, je znano kot povezovanje. Stavek obj.method1() bo poklical metodo1() in obj.method2() bo poklical metodo2(). Ta povezava je zavezujoča.
Pri statičnem povezovanju prevajalnik razreši povezovanje v času prevajanja. Znana je tudi kot zgodnja vezava. Vezava se zgodi, preden se program dejansko zažene. Statična vezava se pojavi pri preobremenitvi metode. Oglejte si spodnji program, napisan v Javi.
javni izračun ničelnosti{
javna prazna vsota(int x, int y){
System.out.println(“Vsota je “, x+y);
}
javna neveljavna vsota (dvojni x, dvojni y){
System.out.println(“Vsota je “, x+y);
}
javni statični void main(String args){
Izračun cal=nov izračun();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
V skladu z zgornjim programom bo pri posredovanju dveh celih števil priklicana metoda z dvema celima številoma. Pri posredovanju dveh dvojnih vrednosti bo priklicana metoda, ki ustreza dvema dvojnima vrednostima. Ta postopek vezave poteka v času prevajanja. Prevajalnik ve, da bi moral poklicati metodo vsote z dvema celima vrednostma za cal.sum(2, 3). Za cal(5.1, 6.4) bo poklical metodo vsote z dvema dvojnima vrednostima. Vse zahtevane informacije so znane pred izvajanjem, kar poveča učinkovitost programa in hitrost izvajanja.
Kaj je dinamična vezava?
Pri dinamičnem povezovanju prevajalnik ne razreši vezave med prevajanjem. Vezava se pojavi med izvajanjem. Znana je tudi kot pozna vezava. Dinamična vezava se pojavi pri preglasitvi metode. Glejte program, napisan v Javi.
javni razred Shape(){
javno žrebanje praznine(){
System.out.println(“Risanje oblike”);
}
}
javni razred Circle() razširja obliko{
javno žrebanje praznine(){
System.out.println(“Risanje kroga”);
}
}
javni razred Triangle() razširja obliko{
javno žrebanje praznine(){
System.out.println(“Risanje trikotnika”);
}
}
javni preizkus razreda{
javni statični void main(String args){
Oblika s;
s=nova oblika();
s.draw();
s=nov krog();
s.draw();
s=nov trikotnik();
s.draw();
}
}
Glede na zgornji program ima razred Shape metodo draw(). Razred Circle in razred Triangle razširjata razred Shape. Razred Circle in razred Triangle lahko podedujeta atribute in metode razreda Shape. Zato je razred Shape nadrazred ali nadrejeni razred. Razredni krog in razredni trikotnik sta podrazreda ali izpeljana razreda. Ti razredi imajo tudi metodo draw() s svojimi implementacijami. Zato je metoda draw() v nadrazredu preglasena.
V glavni metodi so priklicani različni objekti. Obstaja referenčna spremenljivka tipa Shape, ki je s. Nato s prikliče metodo glede na določen razred. V času prevajanja se bo prevajalnik skliceval samo na metodo risanja nadrazreda. Ko se začne dejanska izvedba, bo vodila do izvedbe različnih metod žrebanja. Prvič, s bo kazal na objekt tipa Shape. Zato bo priklical metodo risanja v razredu Shape. Nato bo s kazal na objekt tipa Circle in bo priklical metodo risanja razreda Circle. Nazadnje se bo s skliceval na objekt tipa Trikotnik in bo priklical metodo risanja v razredu Trikotnik. Čeprav je referenčna spremenljivka tipa Shape, je vezava odvisna od vrste predmeta. Ta koncept je znan kot dinamična vezava. Informacije so na voljo v času izvajanja, zato je hitrost izvajanja počasnejša v primerjavi s statično vezavo.
Kakšna je podobnost med statično in dinamično vezavo?
Oboje je povezano s polimorfizmom, ki omogoča predmetu, da se obnaša na več načinov
Kakšna je razlika med statično in dinamično vezavo?
Statična vezava proti dinamični |
|
Statična vezava je vrsta vezave, ki zbira vse potrebne informacije za klic funkcije med prevajanjem. | Dinamično povezovanje je vrsta povezovanja, ki zbira vse potrebne informacije za klic funkcije med izvajanjem. |
Čas vezave | |
Statična vezava se pojavi med prevajanjem. | Dinamična vezava se pojavi med izvajanjem. |
Funkcionalnost | |
Statična vezava uporablja podatke o vrsti za vezavo. | Dinamična vezava uporablja objekte za razrešitev v vezavo. |
Dejanski predmet | |
Statična vezava ne uporablja dejanskega predmeta za vezavo. | Dinamična vezava, uporabite dejanski predmet za vezavo. |
Sinonimi | |
Statična vezava je znana tudi kot zgodnja vezava. | Dinamična vezava je znana tudi kot pozna vezava. |
Izvedba | |
Hitrost izvajanja je velika pri statični vezavi. | Hitrost izvajanja je nizka pri dinamični vezavi. |
Primer | |
Statična vezava se uporablja pri preobremenitvi metode. | Dinamična vezava se uporablja pri preglasitvi metode. |
Povzetek – statična vezava proti dinamični
Obstaja povezava med klicem metode in definicijo metode. Znano je kot vezanje. Obstajata dve vrsti vezav, imenovani statična in dinamična vezava. Razlika med statično in dinamično vezavo je v tem, da je pri statičnem povezovanju vezava razrešena v času prevajanja, medtem ko je dinamična vezava razrešena v času izvajanja, ki je dejanski čas izvajanja. Ker so zahtevane informacije zagotovljene pred časom izvajanja, je statična vezava hitra pri izvedbi v primerjavi z dinamično vezavo.
Prenesite PDF statične in dinamične vezave
Različico PDF tega članka lahko prenesete in jo uporabite za namene brez povezave v skladu z opombo o citiranju. Tukaj prenesite različico PDF: Razlika med statično in dinamično vezavo