Differenza chiave: rilegatura statica e rilegatura dinamica
I 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 usando i metodi. I valori richiesti vengono inviati tramite chiamate di metodo con parametri. L'effettiva 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 rilegatura. Sono binding statico e binding dinamico. La differenza fondamentale tra l'associazione statica e l'associazione dinamica è quella, nell'associazione statica, l'associazione viene risolta in fase di compilazione mentre l'associazione dinamica viene risolta in fase di esecuzione, che è il momento effettivo dell'esecuzione. Questo articolo discute la differenza tra questi due meccanismi di legame.
Cos'è il binding statico?
Binding è il collegamento tra una chiamata al metodo e le definizioni del metodo.
Figura 01: Rilegatura statica e rilegatura dinamica
Fai riferimento al programma sottostante scritto in Java.
classe pubblica A{
metodo vuoto pubblico1(){
System.out.println("Metodo1");
}
metodo vuoto pubblico2(){
System.out.println("Metodo2");
}
public static void main(String args){
LA obj=new LA();
obj.method1();
obj.method2();
}
}
Secondo il programma sopra, viene creato un oggetto di tipo A. Quindi vengono chiamati il metodo1 e il metodo2. L'identificazione del metodo da chiamare per l'esecuzione è noto come associazione. L'istruzione obj.method1() chiamerà method1() e obj.method2() chiamerà method2(). Questo link è vincolante.
Nel binding statico, il binding viene risolto in fase di compilazione dal compilatore. È anche noto come rilegatura anticipata. Il binding avviene prima che un programma venga effettivamente eseguito. L'associazione statica si verifica nell'overloading del metodo. Fare riferimento al programma sottostante scritto in Java.
Calcolo del vuoto pubblico{
Public void sum(int x, int y){
System.out.println("La somma è ", x+y);
}
somma vuota pubblica(doppia x, doppia y){
System.out.println("La somma è ", x+y);
}
public static void main(String args){
Calcolo cal=nuovo Calcolo();
cal.sum(2, 3);
cal.sum(5.1, 6.4);
}
}
Secondo il programma sopra, quando si passano i due interi, verrà invocato il metodo con due interi. Quando si passano due valori doppi, verrà richiamato il metodo corrispondente a due valori doppi. Questo processo di associazione avviene 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 doppi. Tutte le informazioni richieste sono note prima del runtime, quindi aumenta l'efficienza del programma e la velocità di esecuzione.
Cos'è la rilegatura dinamica?
In Dynamic Binding il compilatore non risolve il binding in fase di compilazione. L'associazione si verifica in fase di esecuzione. È anche noto come rilegatura tardiva. L'associazione dinamica si verifica durante l'override del metodo. Fare riferimento al programma scritto in Java.
classe pubblica Shape(){
Passaggio vuoto pubblico(){
System.out.println("Disegna forma");
}
}
public class Circle() estende Shape{
Passaggio vuoto pubblico(){
System.out.println("Disegna cerchio");
}
}
classe pubblica Triangle() estende Shape{
Passaggio vuoto pubblico(){
System.out.println("Disegna triangolo");
}
}
Test di classe pubblica{
public static void main(String args){
Forma s;
s=nuova forma();
s.draw();
s=new Circle();
s.draw();
s=nuovo triangolo();
s.draw();
}
}
Secondo il programma sopra, la classe Shape ha un metodo draw(). Class Circle e la classe Triangle estendono la classe Shape. La classe Circle e la classe Triangle possono ereditare gli attributi ei metodi della classe Shape. Pertanto, la classe Shape è la superclasse 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 superclasse viene sovrascritto.
Nel metodo principale, vengono invocati diversi oggetti. Esiste una variabile di riferimento di tipo Shape, che è s. Quindi, s richiama 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. Innanzitutto, s punterà all'oggetto di tipo Shape. Pertanto, invocherà il metodo draw nella classe Shape. Quindi la s punterà l'oggetto di tipo Circle e invocherà il metodo draw della classe Circle. Infine, s si riferirà all'oggetto di tipo Triangle e invocherà 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 Dynamic Binding. Le informazioni vengono fornite in fase di esecuzione, quindi la velocità di esecuzione è più lenta rispetto al binding statico.
Qual è la somiglianza tra binding statico e binding dinamico?
Entrambi sono legati a un polimorfismo che permette a un oggetto di comportarsi in più modi
Qual è la differenza tra binding statico e binding dinamico?
Rilegatura statica vs rilegatura dinamica |
|
Il binding statico è il tipo di binding che raccoglie tutte le informazioni richieste per chiamare una funzione durante la compilazione. | L'associazione dinamica è il tipo di associazione che raccoglie tutte le informazioni necessarie 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à | |
Il binding statico utilizza le informazioni sul tipo per il binding. | Dynamic Binding usa gli oggetti per risolversi per legare. |
Oggetto reale | |
Il binding statico non utilizza un oggetto reale per il binding. | Legatura dinamica, usa l'oggetto reale per la rilegatura. |
Sinonimi | |
Il legame statico è anche noto come legame anticipato. | La rilegatura dinamica è anche conosciuta come rilegatura tardiva. |
Esecuzione | |
La velocità di esecuzione è elevata in rilegatura statica. | La velocità di esecuzione è bassa nella rilegatura dinamica. |
Esempio | |
Il binding statico viene utilizzato nell'overloading del metodo. | L'associazione dinamica viene utilizzata nell'override del metodo. |
Riepilogo – Rilegatura statica vs rilegatura dinamica
C'è un collegamento tra una chiamata al metodo e la definizione del metodo. È noto come vincolante. Esistono due tipi di associazioni denominate associazione statica e associazione dinamica. La differenza tra associazione statica e 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 momento effettivo dell'esecuzione. Poiché le informazioni richieste vengono fornite prima del runtime, il binding statico è veloce nell'esecuzione rispetto al binding dinamico.
Scarica il PDF di Static Binding vs Dynamic Binding
Puoi scaricare la versione PDF di questo articolo e usarla per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui: Differenza tra rilegatura statica e rilegatura dinamica