Skip to main content

Τι είναι η υπερφόρτωση της λειτουργίας;

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

Ο πρώτος τρόπος με τον οποίο μια λειτουργία μπορεί να υπερφορτωθεί είναι η αλλαγή των παραμέτρων εισόδου του.Για παράδειγμα, μπορεί κανείς να εξετάσει μια συνάρτηση που ονομάζεται Add που λαμβάνει ως εισροή δύο ολόκληρους αριθμούς.Ο σκοπός αυτής της λειτουργίας είναι αρκετά προφανής.Έχει σκοπό να βρει το άθροισμα δύο ολόκληρων αριθμών.

Εάν κάποιος ήθελε να βρει το άθροισμα των δύο πλωτήρων ή δεκαδικών αριθμών, ωστόσο, αυτή η λειτουργία δεν θα ήταν εφαρμόσιμη.Έτσι, μια δεύτερη υπερφορτωμένη λειτουργία θα ήταν απαραίτητη, ορίζεται ως μια συνάρτηση που ονομάζεται Add που λαμβάνει ως εισροή δύο πλωτήρες.Οι λειτουργίες κάνουν ουσιαστικά το ίδιο πράγμα, αλλά η υπερφόρτωση της λειτουργίας είναι απαραίτητη επειδή οι εισροές τους είναι σημαντικά διαφορετικές.

Ο δεύτερος τρόπος με τον οποίο μια λειτουργία μπορεί να υπερφορτωθεί είναι να αλλάξει τόσο τις παραμέτρους εισόδου όσο και τον τύπο επιστροφής της.Χρησιμοποιώντας το προηγούμενο παράδειγμα, μπορεί κανείς να εξετάσει εάν και οι δύο υπερφορτωμένες λειτουργίες προσθέστε είχαν έναν τύπο επιστροφής κενών.Δηλαδή, δεν επέστρεψαν τίποτα.Αυτό θα εξακολουθούσε να είναι έγκυρη υπερφόρτωση, αλλά οι τύποι επιστροφής των δύο μεθόδων θα μπορούσαν επίσης να αλλάξουν.Σε μια άλλη έγκυρη περίπτωση υπερφόρτωσης, η συνάρτηση προσθήκης που παίρνει δύο ολόκληρους αριθμούς θα μπορούσε να επιστρέψει αυτό το σύνολο του αριθμού και η συνάρτηση προσθήκης που παίρνει δύο δεκαδικές αριθμούς θα μπορούσαν να επιστρέψουν αυτό το δεκαδικό αριθμό.

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

Η υπερφόρτωση της λειτουργίας είναι χρήσιμη για τη δημιουργία σχετικών λειτουργιών με ποικίλους τύπους εισόδου, και δίνει κώδικα πολλή ευελιξία.Μια τελική σκέψη για τις υπερφορτωμένες λειτουργίες είναι ότι είναι απαραίτητο το επαρκές σχολιασμό.Αν και μπορεί να είναι σαφές από διαφορετικές παραμέτρους εισόδου ποια έκδοση μιας υπερφορτωμένης λειτουργίας είναι σωστή για μια συγκεκριμένη κατάσταση, ίσως να μην είναι πάντα σαφές ακριβώς αυτό που η λειτουργία κάνει διαφορετικά από τους άλλους υπερφορτωμένους συνεργάτες της.