Διαφορά μεταξύ στατικής και δυναμικής δέσμευσης

Πίνακας περιεχομένων:

Διαφορά μεταξύ στατικής και δυναμικής δέσμευσης
Διαφορά μεταξύ στατικής και δυναμικής δέσμευσης

Βίντεο: Διαφορά μεταξύ στατικής και δυναμικής δέσμευσης

Βίντεο: Διαφορά μεταξύ στατικής και δυναμικής δέσμευσης
Βίντεο: Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ - ΘΕΩΡΙΑ 3 από 5 - ΔΥΝΑΜΙΚΗ ΔΕΣΜΕΥΣΗ (Αντικείμενα) 2024, Ιούλιος
Anonim

Βασική διαφορά – Στατική δέσμευση έναντι δυναμικής δέσμευσης

Γλώσσες προγραμματισμού όπως η Java και η C υποστηρίζουν Αντικειμενοστραφή Προγραμματισμό (OOP). Επιτρέπει την κατασκευή λογισμικού με χρήση αντικειμένων. Υπάρχουν πολλά αντικείμενα σε ένα σύστημα λογισμικού ή ένα πρόγραμμα. Αυτά τα αντικείμενα έχουν ιδιότητες και μεθόδους. Τα χαρακτηριστικά περιγράφουν τα χαρακτηριστικά. Οι μέθοδοι περιγράφουν τις ενέργειες που μπορούν να εκτελεστούν από το αντικείμενο. Τα δεδομένα περνούν μέσα από αντικείμενα χρησιμοποιώντας μεθόδους. Οι απαιτούμενες τιμές αποστέλλονται μέσω κλήσεων μεθόδου με παραμέτρους. Η πραγματική υλοποίηση της μεθόδου βρίσκεται στον ορισμό της μεθόδου. Υπάρχει μια σύνδεση μεταξύ μιας κλήσης μεθόδου και του ορισμού μεθόδου. Είναι γνωστό ως δεσμευτικό. Υπάρχουν δύο τύποι δεσμών. Είναι στατικό δέσιμο και δυναμικό δέσιμο. Η βασική διαφορά μεταξύ στατικής δέσμευσης και δυναμικής δέσμευσης είναι ότι, στη στατική δέσμευση, η σύνδεση επιλύεται κατά το χρόνο μεταγλώττισης ενώ η δυναμική σύνδεση επιλύεται κατά το χρόνο εκτέλεσης, που είναι ο πραγματικός χρόνος εκτέλεσης. Αυτό το άρθρο εξετάζει τη διαφορά μεταξύ αυτών των δύο δεσμευτικών μηχανισμών.

Τι είναι το Static Binding;

Η δέσμευση είναι ο σύνδεσμος μεταξύ μιας κλήσης μεθόδου και των ορισμών μεθόδου.

Διαφορά μεταξύ στατικής δέσμευσης και δυναμικής δέσμευσης
Διαφορά μεταξύ στατικής δέσμευσης και δυναμικής δέσμευσης

Εικόνα 01: Στατική δέσμευση και δυναμική δέσμευση

Ανατρέξτε στο παρακάτω πρόγραμμα γραμμένο σε Java.

δημόσια τάξη Α{

δημόσια μέθοδος κενού1(){

System.out.println("Method1");

}

δημόσια μέθοδος κενού2(){

System.out.println("Method2");

}

public static void main(String args){

A obj=νέο A();

obj.method1();

obj.method2();

}

}

Σύμφωνα με το παραπάνω πρόγραμμα δημιουργείται ένα αντικείμενο τύπου Α. Τότε καλούνται οι μέθοδοι1 και μέθοδος2. Ο προσδιορισμός της μεθόδου που πρέπει να καλέσει για εκτέλεση είναι γνωστός ως δεσμευτικό. Η δήλωση obj.method1() θα καλέσει τη μέθοδο1() και η obj.method2() θα καλέσει τη μέθοδο2(). Αυτός ο σύνδεσμος είναι δεσμευτικός.

Στη στατική δέσμευση, η σύνδεση επιλύεται τη στιγμή της μεταγλώττισης από τον μεταγλωττιστή. Είναι επίσης γνωστό ως πρώιμο δέσιμο. Η δέσμευση γίνεται πριν εκτελεστεί πραγματικά ένα πρόγραμμα. Η στατική δέσμευση εμφανίζεται στην υπερφόρτωση της μεθόδου. Ανατρέξτε στο παρακάτω πρόγραμμα γραμμένο σε Java.

Υπολογισμός δημόσιου κενού{

public void sum (int x, int y){

System.out.println("Sum is ", x+y);

}

public void sum (διπλό x, διπλό y){

System.out.println("Sum is ", x+y);

}

public static void main(String args){

Υπολογισμός cal=νέος Υπολογισμός();

cal.sum(2, 3);

cal.sum(5.1, 6.4);

}

}

Σύμφωνα με το παραπάνω πρόγραμμα, κατά τη διέλευση των δύο ακεραίων θα καλείται η μέθοδος με δύο ακέραιους αριθμούς. Κατά τη μετάδοση δύο διπλών τιμών, θα χρησιμοποιηθεί η μέθοδος που αντιστοιχεί σε δύο διπλές τιμές. Αυτή η διαδικασία δέσμευσης λαμβάνει χώρα τη στιγμή της μεταγλώττισης. Ο μεταγλωττιστής γνωρίζει ότι πρέπει να καλέσει τη μέθοδο sum με δύο ακέραιες τιμές για cal.sum(2, 3). Για cal(5.1, 6.4), θα καλέσει τη μέθοδο αθροίσματος με δύο διπλές τιμές. Όλες οι απαιτούμενες πληροφορίες είναι γνωστές πριν από το χρόνο εκτέλεσης, επομένως αυξάνει την απόδοση του προγράμματος και την ταχύτητα εκτέλεσης.

Τι είναι το Dynamic Binding;

Στο Dynamic Binding ο μεταγλωττιστής δεν επιλύει τη σύνδεση κατά τη στιγμή της μεταγλώττισης. Η δέσμευση πραγματοποιείται κατά το χρόνο εκτέλεσης. Είναι επίσης γνωστό ως όψιμο δέσιμο. Η δυναμική δέσμευση εμφανίζεται στην παράκαμψη μεθόδου. Ανατρέξτε στο πρόγραμμα γραμμένο σε Java.

δημόσια τάξη Shape(){

public void draw(){

System.out.println("Σχήμα σχεδίασης");

}

}

public class Circle() επεκτείνει το σχήμα{

public void draw(){

System.out.println("Σχεδίαση κύκλου");

}

}

public class Triangle() επεκτείνει το σχήμα{

public void draw(){

System.out.println("Σχεδίαση τριγώνου");

}

}

Δοκιμή δημόσιας τάξης{

public static void main(String args){

Shape s;

s=new Shape();

s.draw();

s=νέος Κύκλος();

s.draw();

s=νέο Τρίγωνο();

s.draw();

}

}

Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Shape έχει μια μέθοδο draw(). Η κλάση Κύκλος και η κλάση Τρίγωνο επεκτείνουν την κλάση σχήματος. Η κλάση Circle και η κλάση Triangle μπορούν να κληρονομήσουν τα χαρακτηριστικά και τις μεθόδους της κλάσης Shape. Επομένως, η κλάση Shape είναι η υπερκλάση ή η γονική κλάση. Το Class Circle και το Class Triangle είναι υποκατηγορίες ή παράγωγες κλάσεις. Αυτές οι κλάσεις έχουν επίσης τη μέθοδο draw() με τις δικές τους υλοποιήσεις. Επομένως, η μέθοδος draw() στην τάξη super παρακάμπτεται.

Στην κύρια μέθοδο, καλούνται διαφορετικά αντικείμενα. Υπάρχει μια μεταβλητή αναφοράς τύπου Shape, η οποία είναι s. Στη συνέχεια, το s καλεί τη μέθοδο σύμφωνα με τη συγκεκριμένη κλάση. Κατά το χρόνο μεταγλώττισης, ο μεταγλωττιστής θα παραπέμψει μόνο τη μέθοδο σχεδίασης super class. Όταν ξεκινήσει η πραγματική εκτέλεση, θα οδηγήσει στην εκτέλεση διαφορετικών μεθόδων κλήρωσης. Πρώτον, το s θα δείχνει το αντικείμενο του τύπου Shape. Επομένως, θα επικαλεστεί τη μέθοδο draw στην κλάση Shape. Τότε το s θα δείχνει το αντικείμενο του τύπου Circle και θα επικαλείται τη μέθοδο draw της κλάσης Circle. Τέλος, το s θα αναφέρεται στο αντικείμενο του τύπου Triangle και θα επικαλείται τη μέθοδο draw στην κλάση Triangle. Παρόλο που η μεταβλητή αναφοράς είναι τύπου Shape, η δέσμευση συμβαίνει να εξαρτάται από τον τύπο του αντικειμένου. Αυτή η έννοια είναι γνωστή ως Dynamic Binding. Οι πληροφορίες παρέχονται κατά το χρόνο εκτέλεσης, επομένως η ταχύτητα εκτέλεσης είναι πιο αργή σε σύγκριση με τη στατική δέσμευση.

Ποια είναι η ομοιότητα μεταξύ στατικής σύνδεσης και δυναμικής δέσμευσης;

Και τα δύο σχετίζονται με έναν πολυμορφισμό που επιτρέπει σε ένα αντικείμενο να συμπεριφέρεται με πολλούς τρόπους

Ποια είναι η διαφορά μεταξύ στατικής δέσμευσης και δυναμικής δέσμευσης;

Στατική δέσμευση έναντι δυναμικής δέσμευσης

Στατική δέσμευση είναι ο τύπος δέσμευσης που συλλέγει όλες τις απαιτούμενες πληροφορίες για την κλήση μιας συνάρτησης κατά τη διάρκεια του χρόνου μεταγλώττισης. Dynamic Binding είναι ο τύπος βιβλιοδεσίας που συλλέγει όλες τις απαιτούμενες πληροφορίες για την κλήση μιας συνάρτησης κατά τη διάρκεια του χρόνου εκτέλεσης.
Χρόνος Δεσίματος
Η στατική δέσμευση λαμβάνει χώρα κατά το χρόνο μεταγλώττισης. Η δυναμική δέσμευση λαμβάνει χώρα κατά το χρόνο εκτέλεσης.
Λειτουργικότητα
Static Binding χρησιμοποιεί πληροφορίες τύπου για δέσιμο. Δυναμική δέσμευση χρησιμοποιεί αντικείμενα για να επιλύσει τη σύνδεση.
Πραγματικό αντικείμενο
Το στατικό δέσιμο δεν χρησιμοποιεί πραγματικό αντικείμενο για δέσιμο. Δυναμική δέσμευση, χρησιμοποιήστε το πραγματικό αντικείμενο για δέσιμο.
Συνώνυμα
Το στατικό δέσιμο είναι επίσης γνωστό ως πρώιμο δέσιμο. Το δυναμικό δέσιμο είναι επίσης γνωστό ως όψιμο δέσιμο.
Εκτέλεση
Η ταχύτητα εκτέλεσης είναι γρήγορη στο στατικό δέσιμο. Η ταχύτητα εκτέλεσης είναι χαμηλή στη δυναμική δέσμευση.
Παράδειγμα
Η στατική δέσμευση χρησιμοποιείται στην υπερφόρτωση μεθόδων. Η δυναμική δέσμευση χρησιμοποιείται στην παράκαμψη μεθόδου.

Σύνοψη – Στατική δέσμευση έναντι δυναμικής δέσμευσης

Υπάρχει σύνδεση μεταξύ μιας κλήσης μεθόδου και του ορισμού μεθόδου. Είναι γνωστό ως δεσμευτικό. Υπάρχουν δύο τύποι δεσμεύσεων που ονομάζονται στατική δέσμευση και δυναμική δέσμευση. Η διαφορά μεταξύ στατικής σύνδεσης και δυναμικής δέσμευσης είναι ότι στη στατική δέσμευση, η σύνδεση επιλύεται κατά το χρόνο μεταγλώττισης ενώ η δυναμική σύνδεση επιλύεται κατά το χρόνο εκτέλεσης, που είναι ο πραγματικός χρόνος εκτέλεσης. Καθώς οι απαιτούμενες πληροφορίες παρέχονται πριν από το χρόνο εκτέλεσης, η στατική δέσμευση εκτελείται γρήγορα σε σύγκριση με τη δυναμική δέσμευση.

Λήψη του PDF του Static Binding vs Dynamic Binding

Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Κατεβάστε την έκδοση PDF εδώ: Διαφορά μεταξύ στατικής δέσμευσης και δυναμικής δέσμευσης

Συνιστάται: