Differenza chiave: binding statico vs binding dinamico
Linguaggi di programmazione come Java e C # supportano la programmazione orientata agli oggetti (OOP). Consente di creare software utilizzando oggetti. Ci sono molti oggetti in un sistema software o in un programma. Questi oggetti hanno attributi e metodi. Gli attributi descrivono le caratteristiche. I metodi descrivono le azioni che possono essere eseguite dall'oggetto. I dati vengono passati attraverso gli oggetti utilizzando metodi. I valori richiesti vengono inviati tramite chiamate di metodo con parametri. L'attuale implementazione del metodo è nella definizione del metodo. Esiste un collegamento tra una chiamata al metodo e la definizione del metodo. È noto come vincolante. Esistono due tipi di binding. Sono vincolanti statici e vincolanti dinamici. La differenza fondamentale tra binding statico e binding dinamico è che, nell'associazione statica, l'associazione viene risolta in fase di compilazione mentre l'associazione dinamica viene risolta in fase di esecuzione,che è il tempo effettivo di esecuzione. Questo articolo discute la differenza tra questi due meccanismi di associazione.
CONTENUTI
1. Panoramica e differenze principali
2. Cos'è il binding statico
3. Cos'è il binding dinamico
4. Somiglianze tra binding statico e binding dinamico
5. Confronto affiancato - binding statico vs binding dinamico in forma tabulare
6. Riepilogo
Cos'è il binding statico?
Il binding è il collegamento tra una chiamata al metodo e le definizioni del metodo.
Figura 01: associazione statica e associazione dinamica
Fare riferimento al seguente programma scritto in Java.
public class A {
public void method1 () {
System.out.println ("Metodo1");
}
public void method2 () {
System.out.println ("Metodo2");
}
public static void main (String args) {
A obj = new A ();
obj.method1 ();
obj.method2 ();
}
}
Secondo il programma precedente, viene creato un oggetto di tipo A. Quindi vengono chiamati metodo1 e metodo2. L'identificazione del metodo da chiamare per l'esecuzione è nota come associazione. L'istruzione obj.method1 () chiamerà method1 () e obj.method2 () chiamerà method2 (). Questo collegamento è vincolante.
Nell'associazione statica, l'associazione viene risolta in fase di compilazione dal compilatore. È anche noto come associazione anticipata. Il binding avviene prima che un programma venga effettivamente eseguito. Il binding statico si verifica nel sovraccarico del metodo. Fare riferimento al seguente programma scritto in Java.
public void Calculation {
public void sum (int x, int y) {
System.out.println ("La somma è", x + y);
}
public void sum (double x, double y) {
System.out.println ("La somma è", x + y);
}
public static void main (String args) {
Calculation cal = new Calculation ();
cal.sum (2,3);
cal.sum (5.1, 6.4);
}
}
Secondo il programma sopra, quando si passano i due interi, verrà richiamato il metodo con due interi. Quando si passano due valori double, verrà richiamato il metodo corrispondente a due valori double. Questo processo di associazione si verifica al momento della compilazione. Il compilatore sa che dovrebbe chiamare il metodo sum con due valori interi per cal.sum (2,3). Per cal (5.1,6.4), chiamerà il metodo sum con due valori double. Tutte le informazioni richieste sono note prima del runtime, quindi aumenta l'efficienza del programma e la velocità di esecuzione.
Cos'è il binding dinamico?
In Dynamic Binding il compilatore non risolve l'associazione in fase di compilazione. Il binding si verifica in fase di esecuzione. È anche noto come rilegatura tardiva. Il binding dinamico si verifica durante l'override del metodo. Fare riferimento al programma scritto in Java.
public class Shape () {
public void draw () {
System.out.println ("Disegna forma");
}
}
public class Circle () estende Shape {
public void draw () {
System.out.println ("Disegna cerchio");
}
}
public class Triangle () extends Shape {
public void draw () {
System.out.println ("Disegna triangolo");
}
}
public class Test {
public static void main (String args) {
Forma s;
s = nuova forma ();
s.draw ();
s = nuovo cerchio ();
s.draw ();
s = nuovo triangolo ();
s.draw ();
}
}
Secondo il programma precedente, la classe Shape ha un metodo draw (). Class Circle e class Triangle estendono la classe Shape. Class Circle e class Triangle possono ereditare gli attributi ei metodi della classe Shape. Pertanto, la classe Shape è la super classe o la classe genitore. Class Circle e Class Triangle sono sottoclassi o classi derivate. Queste classi hanno anche il metodo draw () con le proprie implementazioni. Pertanto, il metodo draw () nella super classe viene sovrascritto.
Nel metodo principale vengono richiamati diversi oggetti. C'è una variabile di riferimento di tipo Shape, che è s. Quindi, s invoca il metodo in base alla classe specifica. In fase di compilazione, il compilatore farà riferimento solo al metodo di disegno della super classe. Quando inizia l'esecuzione effettiva, porterà all'esecuzione di diversi metodi di disegno. Per prima cosa, s punterà all'oggetto di tipo Shape. Pertanto, richiamerà il metodo draw nella classe Shape. Quindi la s punterà l'oggetto di tipo Circle e richiamerà il metodo draw della classe Circle. Infine, s si riferirà all'oggetto di tipo Triangle e richiamerà il metodo draw nella classe Triangle. Anche se la variabile di riferimento è di tipo Shape, l'associazione dipende dal tipo di oggetto. Questo concetto è noto come associazione dinamica. Le informazioni vengono fornite in fase di esecuzione,quindi la velocità di esecuzione è più lenta rispetto all'associazione statica.
Qual è la somiglianza tra binding statico e binding dinamico?
Entrambi sono legati a un polimorfismo che consente a un oggetto di comportarsi in più modi
Qual è la differenza tra binding statico e binding dinamico?
Articolo diff. Al centro prima della tabella
Legame statico vs legame dinamico |
|
Il binding statico è il tipo di associazione che raccoglie tutte le informazioni richieste per chiamare una funzione durante la fase di compilazione. | L'associazione dinamica è il tipo di associazione che raccoglie tutte le informazioni richieste per chiamare una funzione durante il runtime. |
Tempo di rilegatura | |
Il binding statico si verifica in fase di compilazione. | L'associazione dinamica si verifica in fase di esecuzione. |
Funzionalità | |
L'associazione statica utilizza le informazioni sul tipo per l'associazione. | Il binding dinamico utilizza gli oggetti per risolvere il problema. |
Oggetto reale | |
L'associazione statica non utilizza un oggetto reale per l'associazione. | Associazione dinamica, utilizzare l'oggetto effettivo per l'associazione. |
Sinonimi | |
L'associazione statica è anche nota come associazione anticipata. | L'associazione dinamica è anche nota come associazione tardiva. |
Esecuzione | |
La velocità di esecuzione è elevata nell'associazione statica. | La velocità di esecuzione è bassa nel binding dinamico. |
Esempio | |
L'associazione statica viene utilizzata nell'overload del metodo. | L'associazione dinamica viene utilizzata nella sostituzione del metodo. |
Riepilogo: associazione statica vs associazione dinamica
Esiste un collegamento tra una chiamata al metodo e la definizione del metodo. È noto come vincolante. Esistono due tipi di associazioni chiamate associazione statica e associazione dinamica. La differenza tra l'associazione statica e l'associazione dinamica è che nell'associazione statica, l'associazione viene risolta in fase di compilazione mentre l'associazione dinamica viene risolta in fase di esecuzione, che è il tempo effettivo di esecuzione. Poiché le informazioni richieste vengono fornite prima del runtime, l'associazione statica è veloce nell'esecuzione rispetto all'associazione dinamica.
Scarica il PDF di Rilegatura statica vs Rilegatura dinamica
È possibile scaricare la versione PDF di questo articolo e utilizzarla per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui: Differenza tra rilegatura statica e rilegatura dinamica