Põhierinevus – staatiline sidumine vs dünaamiline sidumine
Programmeerimiskeeled, nagu Java ja C, toetavad objektorienteeritud programmeerimist (OOP). See võimaldab luua tarkvara objektide abil. Tarkvarasüsteemis või programmis on palju objekte. Nendel objektidel on atribuudid ja meetodid. Atribuudid kirjeldavad omadusi. Meetodid kirjeldavad toiminguid, mida objekt saab teha. Andmed juhitakse läbi objektide meetodite abil. Nõutavad väärtused saadetakse parameetritega meetodikutsete kaudu. Tegelik meetodi rakendamine on meetodi määratluses. Meetodikutse ja meetodi määratluse vahel on seos. Seda tuntakse siduvana. Sidemeid on kahte tüüpi. Need on staatilised ja dünaamilised siduvad. Peamine erinevus staatilise ja dünaamilise sidumise vahel on see, et staatilise sidumise korral lahendatakse sidumine kompileerimise ajal, dünaamiline sidumine aga käitusajal, mis on tegelik täitmise aeg. Selles artiklis käsitletakse nende kahe sidumismehhanismi erinevust.
Mis on staatiline sidumine?
Sidumine on link meetodi kutse ja meetodi definitsioonide vahel.
Joonis 01: Staatiline sidumine ja dünaamiline sidumine
Vaadake allolevat Java keeles kirjutatud programmi.
avalik klass A{
public void method1(){
System.out.println(“Meetod1”);
}
public void method2(){
System.out.println(“Meetod2”);
}
public static void main(String args){
A obj=uus A();
obj.method1();
obj.method2();
}
}
Vastav alt ül altoodud programmile luuakse A tüüpi objekt. Seejärel kutsutakse meetod1 ja meetod2. Seda, milline meetod peaks käivitama, nimetatakse siduvaks. Lause obj.method1() kutsub meetodit1() ja obj.method2() meetod2(). See link on siduv.
Staatilises sidumises lahendab sidumise kompilaator. Seda tuntakse ka varaköitmisena. Sidumine toimub enne programmi tegelikku käitamist. Staatiline sidumine toimub meetodi ülekoormuse korral. Vaadake allolevat Java keeles kirjutatud programmi.
avalik tühiarvutus{
public void summa(int x, int y){
System.out.println(“Summa on “, x+y);
}
avalik tühisumma(double x, double y){
System.out.println(“Summa on “, x+y);
}
public static void main(String args){
Arvutamine cal=uus arvutus();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Vastav alt ül altoodud programmile käivitatakse kahe täisarvu edastamisel kahe täisarvuga meetod. Kahe topeltväärtuse edastamisel käivitatakse kahele topeltväärtusele vastav meetod. See sidumisprotsess toimub koostamise ajal. Kompilaator teab, et ta peaks cal.sum(2, 3) jaoks kutsuma kahe täisarvu väärtusega summameetodit. Cal(5.1, 6.4) korral kutsub see välja kahe topeltväärtusega summameetodi. Kogu vajalik teave on teada enne käitusaega, nii et see suurendab programmi tõhusust ja täitmise kiirust.
Mis on dünaamiline sidumine?
Dünaamilises sidumises ei lahenda kompilaator sidumist kompileerimise ajal. Sidumine toimub tööajal. Seda tuntakse ka kui hilist köitmist. Dünaamiline sidumine toimub meetodi alistamisel. Vaadake Java keeles kirjutatud programmi.
avalik klass Shape(){
avalik kehtetu loosimine(){
System.out.println("Joonista kuju");
}
}
avalik klass Circle() laiendab kuju{
avalik kehtetu loosimine(){
System.out.println(“Joonista ring”);
}
}
avalik klass Kolmnurk() laiendab kuju{
avalik kehtetu loosimine(){
System.out.println(“Joonista kolmnurk”);
}
}
avaliku klassi test{
public static void main(String args){
Shape s;
s=uus kujund();
s.draw();
s=uus ring();
s.draw();
s=uus kolmnurk();
s.draw();
}
}
Vastav alt ül altoodud programmile on klassil Shape meetod draw(). Klass Circle ja klass Kolmnurk laiendavad Shape klassi. Klass Circle ja klass Triangle võivad pärida klassi Shape atribuute ja meetodeid. Seetõttu on klass Shape superklass või vanemklass. Klassi ring ja klassi kolmnurk on alamklassid või tuletatud klassid. Nendel klassidel on ka meetod draw() oma rakendustega. Seetõttu on superklassi meetod draw() alistatud.
Põhimeetodi puhul kutsutakse esile erinevaid objekte. Seal on Shape tüüpi viitemuutuja, milleks on s. Seejärel kutsub s välja meetodi vastav alt konkreetsele klassile. Kompileerimise ajal viitab kompilaator ainult superklassi loosimise meetodile. Kui tegelik täitmine algab, viib see erinevate joonistusmeetodite täitmiseni. Esiteks osutab s Shape tüüpi objektile. Seetõttu kutsub see Shape klassis välja joonistamismeetodi. Siis osutab s Circle tüüpi objektile ja see kutsub esile Circle klassi joonistusmeetodi. Lõpuks viitab s Triangle tüüpi objektile ja see kutsub esile joonistusmeetodi klassis Triangle. Kuigi viitemuutuja tüüp on Shape, sõltub sidumine objekti tüübist. Seda kontseptsiooni tuntakse kui dünaamilist sidumist. Teave esitatakse käitamisajal, seega on täitmise kiirus võrreldes staatilise sidumisega aeglasem.
Milline on staatilise ja dünaamilise sidumise sarnasus?
Mõlemad on seotud polümorfismiga, mis võimaldab objektil mitmel viisil käituda
Mis vahe on staatilisel ja dünaamilisel sidumisel?
Staatiline sidumine vs dünaamiline sidumine |
|
Staatiline sidumine on sidumise tüüp, mis kogub kogu vajaliku teabe funktsiooni kutsumiseks kompileerimise ajal. | Dünaamiline sidumine on sidumise tüüp, mis kogub kogu vajaliku teabe funktsiooni käivitamise ajal. |
Köitmise aeg | |
Staatiline sidumine toimub kompileerimise ajal. | Dünaamiline sidumine toimub käitamise ajal. |
Funktsionaalsus | |
Staatiline sidumine kasutab köitmiseks tüübiteavet. | Dünaamiline sidumine kasutab sidumise lahendamiseks objekte. |
Tegelik objekt | |
Staatiline köitmine ei kasuta köitmiseks tegelikku objekti. | Dünaamiline köitmine, kasutage köitmiseks tegelikku objekti. |
Sünonüümid | |
Staatilist köitmist tuntakse ka varaköitmisena. | Dünaamilist köitmist tuntakse ka kui hilist köitmist. |
Täitmine | |
Staatilise köitmise puhul on täitmiskiirus kiire. | Dünaamilise sidumise puhul on täitmiskiirus väike. |
Näide | |
Meetodi ülekoormamisel kasutatakse staatilist sidumist. | Meetodi alistamisel kasutatakse dünaamilist sidumist. |
Kokkuvõte – staatiline sidumine vs dünaamiline sidumine
Meetodikutse ja meetodi määratluse vahel on seos. Seda tuntakse siduvana. On kahte tüüpi köite, mida nimetatakse staatiliseks ja dünaamiliseks sidumiseks. Staatilise sidumise ja dünaamilise sidumise erinevus seisneb selles, et staatilise sidumise korral lahendatakse sidumine kompileerimise ajal, dünaamiline sidumine aga käitusajal, mis on tegelik täitmise aeg. Kuna nõutav teave esitatakse enne käitamisaega, on staatiline sidumine dünaamilise sidumisega võrreldes kiire.
Laadige alla PDF staatilise sidumise ja dünaamilise sidumise kohta
Saate alla laadida selle artikli PDF-versiooni ja kasutada seda võrguühenduseta kasutamiseks vastav alt tsitaadi märkusele. Laadige PDF-versioon alla siit: Staatilise ja dünaamilise sidumise erinevus