Diferència clau: vinculació estàtica i vinculació dinàmica
Els llenguatges de programació com Java i C admeten la programació orientada a objectes (OOP). Permet construir programari mitjançant objectes. Hi ha molts objectes en un sistema de programari o un programa. Aquests objectes tenen atributs i mètodes. Els atributs descriuen les característiques. Els mètodes descriuen les accions que pot realitzar l'objecte. Les dades es passen a través dels objectes mitjançant mètodes. Els valors requerits s'envien mitjançant trucades de mètodes amb paràmetres. La implementació del mètode real es troba a la definició del mètode. Hi ha un enllaç entre una crida de mètode i la definició de mètode. Es coneix com a vinculació. Hi ha dos tipus d'enquadernacions. Són enquadernació estàtica i enquadernació dinàmica. La diferència clau entre l'enllaç estàtic i l'enllaç dinàmic és que, en l'enllaç estàtic, l'enllaç es resol en el moment de la compilació mentre que l'enllaç dinàmic es resol en el moment d'execució, que és el moment real d'execució. En aquest article es parla de la diferència entre aquests dos mecanismes d'enllaç.
Què és la vinculació estàtica?
La vinculació és l'enllaç entre una trucada de mètode i les definicions de mètodes.
Figura 01: Enquadernació estàtica i enquadernació dinàmica
Consulteu el programa següent escrit en Java.
classe pública A{
mètode de nul públic1(){
System.out.println(“Mètode1”);
}
mètode public void2(){
System.out.println(“Mètode2”);
}
public static void main(String args){
A obj=nou A();
obj.method1();
obj.method2();
}
}
Segons el programa anterior, es crea un objecte de tipus A. Aleshores s'anomenen mètode1 i mètode2. La identificació de quin mètode ha de demanar l'execució es coneix com a vinculació. La instrucció obj.method1() trucarà a method1() i obj.method2() trucarà a method2(). Aquest enllaç és vinculant.
En la vinculació estàtica, l'enllaç es resol en temps de compilació pel compilador. També es coneix com a unió precoç. L'enllaç es produeix abans que un programa s'executi realment. La vinculació estàtica es produeix en la sobrecàrrega del mètode. Consulteu el programa següent escrit en Java.
Càlcul de public nud{
public void suma(int x, int y){
System.out.println(“La suma és “, x+y);
}
suma nul pública (doble x, doble y){
System.out.println(“La suma és “, x+y);
}
public static void main(String args){
Càlcul cal=càlcul nou();
cal.sum(2, 3);
cal.sum(5,1, 6,4);
}
}
Segons el programa anterior, en passar els dos nombres enters, s'invocarà el mètode amb dos enters. En passar dos valors dobles, s'invocarà el mètode corresponent a dos valors dobles. Aquest procés d'enllaç es produeix en el moment de la compilació. El compilador sap que hauria de cridar al mètode suma amb dos valors enters per a cal.sum(2, 3). Per a cal(5.1, 6.4), cridarà al mètode suma amb dos valors dobles. Tota la informació necessària es coneix abans del temps d'execució, de manera que augmenta l'eficiència del programa i la velocitat d'execució.
Què és l'enllaç dinàmic?
A Dynamic Binding, el compilador no resol l'enllaç en temps de compilació. L'enllaç es produeix en temps d'execució. També es coneix com a enquadernació tardana. L'enllaç dinàmic es produeix en la substitució del mètode. Consulteu el programa escrit en Java.
classe pública Forma(){
sorteig públic de nul(){
System.out.println(“Dibuixa la forma”);
}
}
classe pública Circle() amplia la forma{
sorteig públic de nul(){
System.out.println(“Dibuixa un cercle”);
}
}
classe pública Triangle() amplia la forma{
sorteig públic de nul(){
System.out.println(“Dibuixa un triangle”);
}
}
Prova de classe pública{
public static void main(String args){
Forma s;
s=forma nova();
s.draw();
s=cercle nou();
s.draw();
s=triangle nou();
s.draw();
}
}
Segons el programa anterior, la classe Shape té un mètode draw(). Class Circle i classe Triangle amplia la classe Shape. Class Circle i Class Triangle poden heretar els atributs i mètodes de la classe Shape. Per tant, la classe Shape és la superclasse o classe pare. Class Circle i Class Triangle són subclasses o classes derivades. Aquestes classes també tenen el mètode draw() amb les seves pròpies implementacions. Per tant, el mètode draw() a la superclasse està anul·lat.
Al mètode principal, s'invoquen diferents objectes. Hi ha una variable de referència de tipus Shape, que és s. Aleshores, s invoca el mètode segons la classe específica. En el moment de la compilació, el compilador només farà referència al mètode de dibuix de superclasse. Quan comenci l'execució real, donarà lloc a l'execució de diferents mètodes de dibuix. Primer, s apuntarà a l'objecte de tipus Forma. Per tant, invocarà el mètode de dibuix a la classe Shape. Aleshores, la s apuntarà a l'objecte del tipus Circle i invocarà el mètode de dibuix de la classe Circle. Finalment, s es referirà a l'objecte de tipus Triangle i invocarà el mètode de dibuix a la classe Triangle. Tot i que la variable de referència és del tipus Shape, l'enllaç depèn del tipus d'objecte. Aquest concepte es coneix com a vinculació dinàmica. La informació es proporciona en temps d'execució, de manera que la velocitat d'execució és més lenta en comparació amb la vinculació estàtica.
Quina semblança hi ha entre l'enquadernació estàtica i la vinculació dinàmica?
Tots dos estan relacionats amb un polimorfisme que permet que un objecte es comporti de diverses maneres
Quina diferència hi ha entre l'enquadernació estàtica i l'enquadernació dinàmica?
Enquadernació estàtica vs. Enquadernació dinàmica |
|
La vinculació estàtica és el tipus d'enllaç que recull tota la informació necessària per cridar una funció durant el temps de compilació. | L'enllaç dinàmic és el tipus d'enllaç que recull tota la informació necessària per cridar una funció durant el temps d'execució. |
Temps d'enquadernació | |
La vinculació estàtica es produeix en temps de compilació. | L'enllaç dinàmic es produeix en temps d'execució. |
Funcionalitat | |
La vinculació estàtica utilitza informació de tipus per a l'enllaç. | Dynamic Binding utilitza objectes per resoldre l'enllaç. |
Objecte real | |
La vinculació estàtica no utilitza un objecte real per a l'enllaç. | Enquadernació dinàmica, utilitzeu l'objecte real per enquadernar. |
Sinònims | |
La vinculació estàtica també es coneix com a vinculació primerenca. | L'enquadernació dinàmica també es coneix com a enquadernació tardana. |
Execució | |
La velocitat d'execució és ràpida en l'enllaç estàtic. | La velocitat d'execució és baixa en l'enllaç dinàmic. |
Exemple | |
La vinculació estàtica s'utilitza en la sobrecàrrega de mètodes. | L'enllaç dinàmic s'utilitza en la substitució del mètode. |
Resum: Enquadernació estàtica vs Enquadernació dinàmica
Hi ha un enllaç entre una trucada de mètode i la definició de mètode. Es coneix com a vinculació. Hi ha dos tipus d'enllaços anomenats unió estàtica i unió dinàmica. La diferència entre l'enllaç estàtic i l'enllaç dinàmic és que en l'enllaç estàtic, l'enllaç es resol en el moment de la compilació mentre que l'enllaç dinàmic es resol en el moment d'execució, que és el moment real d'execució. Com que la informació necessària es proporciona abans del temps d'execució, la vinculació estàtica s'executa ràpidament en comparació amb la vinculació dinàmica.
Baixa el PDF d'Enquadernació estàtica vs Enquadernació dinàmica
Podeu descarregar la versió PDF d'aquest article i utilitzar-la per a finalitats fora de línia segons la nota de citació. Baixeu la versió PDF aquí: Diferència entre l'enquadernació estàtica i l'enquadernació dinàmica