Avainero – staattinen sidonta vs. dynaaminen sidonta
Ohjelmointikielet, kuten Java ja C, tukevat olioohjelmointia (OOP). Se mahdollistaa ohjelmistojen rakentamisen esineiden avulla. Ohjelmistojärjestelmässä tai ohjelmassa on monia objekteja. Näillä objekteilla on attribuutteja ja menetelmiä. Ominaisuudet kuvaavat ominaisuuksia. Menetelmät kuvaavat toimintoja, jotka kohde voi suorittaa. Data välitetään objektien läpi menetelmillä. Vaaditut arvot lähetetään menetelmäkutsujen kautta parametrien kanssa. Varsinainen menetelmän toteutus on menetelmän määrittelyssä. Metodikutsun ja menetelmän määrittelyn välillä on linkki. Se tunnetaan sitovana. Sidokkeita on kahdenlaisia. Ne ovat staattista sidontaa ja dynaamista sidontaa. Keskeinen ero staattisen ja dynaamisen sitomisen välillä on se, että staattisessa sidonnassa sidonta ratkaistaan käännöshetkellä, kun taas dynaaminen sidonta ratkaistaan ajon aikana, joka on todellinen suoritusaika. Tässä artikkelissa käsitellään näiden kahden sitomismekanismin eroa.
Mikä on staattinen sidonta?
Sidonta on linkki menetelmäkutsun ja menetelmämääritelmien välillä.
Kuva 01: Staattinen sidonta ja dynaaminen sidonta
Katso alla olevaa Java-kielellä kirjoitettua ohjelmaa.
julkinen luokka A{
julkinen void method1(){
System.out.println("Metho1");
}
julkinen void method2(){
System.out.println("Menetelmä2");
}
julkinen staattinen void main(String args){
A obj=uusi A();
obj.method1();
obj.method2();
}
}
Yllä olevan ohjelman mukaisesti luodaan A-tyypin objekti. Sitten kutsutaan metodia1 ja metodia2. Sen tunnistamista, minkä menetelmän tulisi vaatia suoritus, kutsutaan sitomiseksi. Lauseke obj.method1() kutsuu metodia1() ja obj.method2() kutsuu metodia2(). Tämä linkki on sitova.
Staattisessa sidonnassa kääntäjä ratkaisee sitomisen käännöshetkellä. Se tunnetaan myös varhaissidontana. Sidonta tapahtuu ennen kuin ohjelma todella suoritetaan. Staattista sitoutumista esiintyy menetelmän ylikuormituksessa. Katso alla oleva Java-kielellä kirjoitettu ohjelma.
julkinen mitätön laskelma{
julkinen void summa(int x, int y){
System.out.println("Summa on ", x+y);
}
julkinen void summa(double x, double y){
System.out.println("Summa on ", x+y);
}
julkinen staattinen void main(String args){
Laskenta cal=uusi Laskenta();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Yllä olevan ohjelman mukaan kahta kokonaislukua välitettäessä vedotaan menetelmä, jossa on kaksi kokonaislukua. Kun välitetään kaksi kaksoisarvoa, käytetään kahta kaksoisarvoa vastaavaa menetelmää. Tämä sidontaprosessi tapahtuu käännöshetkellä. Kääntäjä tietää, että sen pitäisi kutsua summamenetelmää kahdella kokonaislukuarvolla cal.sum(2, 3) -arvolle. Cal(5.1, 6.4) tapauksessa se kutsuu summamenetelmää kahdella kaksoisarvolla. Kaikki tarvittavat tiedot ovat tiedossa ennen ajonaikaa, joten se lisää ohjelman tehokkuutta ja suoritusnopeutta.
Mikä on dynaaminen sidonta?
Dynaamisessa sidonnassa kääntäjä ei ratkaise sidontaa käännöshetkellä. Sitoutuminen tapahtuu ajon aikana. Se tunnetaan myös nimellä myöhäinen sidonta. Dynaaminen sidonta tapahtuu menetelmän ohituksessa. Katso Java-kielellä kirjoitettu ohjelma.
julkinen luokka Muoto(){
julkinen mitätöinyt arvonta(){
System.out.println("Piirrä muoto");
}
}
julkinen luokka Circle() laajentaa muotoa{
julkinen mitätöinyt arvonta(){
System.out.println("Piirrä ympyrä");
}
}
julkinen luokka Kolmio() laajentaa muotoa{
julkinen mitätöinyt arvonta(){
System.out.println("Piirrä kolmio");
}
}
julkisen luokan koe{
julkinen staattinen void main(String args){
Muoto s;
s=uusi muoto();
s.draw();
s=uusi piiri();
s.draw();
s=uusi kolmio();
s.draw();
}
}
Yllä olevan ohjelman mukaan luokassa Shape on metodi draw(). Luokka Ympyrä ja luokkakolmio laajentavat muotoluokkaa. Luokka Ympyrä ja luokka Triangle voivat periä luokan Shape attribuutit ja menetelmät. Siksi luokka Shape on superluokka tai yläluokka. Class Circle ja Class Triangle ovat alaluokkia tai johdettuja luokkia. Näillä luokilla on myös draw()-metodi omilla toteutuksillaan. Siksi veto()-metodi superluokassa ohitetaan.
Päämenetelmässä kutsutaan erilaisia objekteja. On Shape-tyyppinen viitemuuttuja, joka on s. Sitten s kutsuu menetelmän tietyn luokan mukaan. Käännöshetkellä kääntäjä viittaa vain superluokan piirtomenetelmään. Kun varsinainen suoritus alkaa, se johtaa erilaisten vetomenetelmien suorittamiseen. Ensin s osoittaa Shape-tyypin objektiin. Siksi se käyttää piirtomenetelmää Shape-luokassa. Sitten s osoittaa Circle-tyypin objektia ja se kutsuu Circle-luokan piirtomenetelmän. Lopuksi s viittaa Triangle-tyypin objektiin, ja se käynnistää piirtomenetelmän Triangle-luokassa. Vaikka viitemuuttuja on tyyppiä Shape, sidonta sattuu riippumaan objektin tyypistä. Tämä konsepti tunnetaan nimellä Dynamic Binding. Tiedot toimitetaan ajon aikana, joten suoritusnopeus on hitaampi verrattuna staattiseen sidontaan.
Mikä on samank altaisuus staattisen sidonnan ja dynaamisen sidonnan välillä?
Molemmat liittyvät polymorfismiin, joka sallii objektin käyttäytyä monin tavoin
Mitä eroa on staattisen sidonnan ja dynaamisen sidonnan välillä?
Staattinen sidonta vs. dynaaminen sidonta |
|
Staattinen sidonta on sidontatyyppi, joka kerää kaikki tarvittavat tiedot funktion kutsumiseksi käännösajan aikana. | Dynaaminen sidonta on sidontatyyppi, joka kerää kaikki tarvittavat tiedot funktion kutsumiseksi ajon aikana. |
Sidonta-aika | |
Staattinen sidonta tapahtuu käännöshetkellä. | Dynaaminen sidonta tapahtuu ajon aikana. |
Toiminnot | |
Staattinen sidonta käyttää sidonnassa tyyppitietoja. | Dynaaminen sidonta käyttää objekteja sidoksen ratkaisemiseen. |
Varsinainen kohde | |
Staattinen sidonta ei käytä sidomiseen varsinaista objektia. | Dynaaminen sidonta, käytä sidonnassa varsinaista kohdetta. |
Synonyymit | |
Staattinen sidonta tunnetaan myös aikaisin sidontana. | Dynaaminen sidonta tunnetaan myös nimellä myöhäinen sidonta. |
Suoritus | |
Staattisessa sidonnassa suoritusnopeus on nopea. | Suoritusnopeus on alhainen dynaamisessa sidonnassa. |
Esimerkki | |
Staattista sidontaa käytetään menetelmän ylikuormituksessa. | Dynaamista sidontaa käytetään menetelmän ohituksessa. |
Yhteenveto – staattinen sidonta vs. dynaaminen sidonta
Metodikutsun ja menetelmän määrittelyn välillä on linkki. Se tunnetaan sitovana. On olemassa kahdenlaisia sidoksia, joita kutsutaan staattisiksi sidoksiksi ja dynaamiksi sidoksiksi. Ero staattisen sitomisen ja dynaamisen sitomisen välillä on se, että staattisessa sidonnassa sidonta ratkaistaan käännöshetkellä, kun taas dynaaminen sidonta ratkaistaan ajon aikana, joka on todellinen suoritusaika. Koska vaaditut tiedot annetaan ennen ajoaikaa, staattinen sidonta on nopeaa dynaamiseen sidokseen verrattuna.
Lataa PDF Static Binding vs Dynamic Binding
Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainaushuomautuksen mukaisesti. Lataa PDF-versio tästä: Ero staattisen ja dynaamisen sidonnan välillä