Πολυμορφισμός υποτύπων: Διαφορά μεταξύ των αναθεωρήσεων
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μ αφαιρέθηκε η Κατηγορία:Αντικειμενοστραφής προγραμματισμός; προστέθηκε η Κατηγορία:Αντικειμενοστρεφής προγραμματισμός (με το HotCat) |
Χωρίς σύνοψη επεξεργασίας |
||
Γραμμή 1:
Στην [[θεωρία γλωσσών προγραμματισμού]], '''πολυμορφισμός υποτύπων''' είναι μια μορφή [[πολυμορφισμός τύπων|πολυμορφισμού τύπων]] στην οποία ένας '''υποτύπος''' είναι ένας [[τύπος δεδομένων]] που σχετίζεται σε έναν άλλο τύπο δεδομένων (τον '''υπερτύπο''') με ενός είδους [[αντικαταστασιμότητα|αντικαταστασιμότητας]], πράγμα που σημαίνει ότι οι δομές του προγράμματος, συνήθως [[υπορουτίνα|υπορουτίνες]] ή συναρτήσεις που γράφτηκαν για να λειτουργούν πάνω σε στοιχεία του υπερτύπου μπορούν επίσης να λειτουργήσουν με τα στοιχεία του υποτύπου. Αν S είναι ένας υποτύπος του Τ, η [[δυαδική σχέση|σχέση]] υποτύπου γράφεται συχνά S <: Τ, που σημαίνει ότι οποιοσδήποτε όρος του τύπου S μπορεί "να χρησιμοποιηθεί με ασφάλεια σε ένα πλαίσιο όπου" αναμένεται ένας όρος του τύπου Τ. Οι ακριβής σημασιολογία του πολυμορφισμού υποτύπων εξαρτάται σε μεγάλο βαθμό από το τι ακριβώς σημαίνει "μπορεί να χρησιμοποιηθεί με ασφάλεια σε ένα πλαίσιο όπου" σε μία δεδομένη [[γλώσσα προγραμματισμού]]. Το [[σύστημα τύπων]] μιας γλώσσας προγραμματισμού καθορίζει ουσιαστικά τη δική του σχέση υποκατηγοριών, η οποία μπορεί κάλλιστα να είναι [[ταυτοτική συνάρτηση|τετριμμένη]].
Επειδή η σχέση υποτύπου επιτρέπει ένας όρος να έχει (ανήκει σε) περισσότερους από έναν τύπο, οι υποτύποι είναι μια μορφή του [[πολυμορφισμού τύπων]], για αυτό ονομάζεται (ορθότερα) πολυμορφισμός υποτύπων. Στον [[
Οι [[συναρτησιακές γλώσσες προγραμματισμού]] συχνά επιτρέπουν τη λειτουργία υποτύπων σε [[Εγγραφή (γλώσσες προγραμματισμού)|εγγραφές]]. Κατά συνέπεια, ο [[λ-λογισμός με απλούς τύπους|λ-λογισμός με απλό σύστημα τύπων]] επεκτεταμένος με τύπους εγγραφών είναι ίσως το πιο απλό θεωρητικό πλαίσιο στο οποίο μπορεί να οριστεί και να μελετηθεί κάποια χρήσιμη έννοια υποτύπου. Επειδή ο προκύπτων λογισμός επιτρέπει όρους που έχουν περισσότερους από έναν τύπο, δεν είναι πλέον μία "απλή" [[θεωρία τύπων]]. Δεδομένου ότι οι συναρτησιακές γλώσσες προγραμματισμού εξ' ορισμού υποστηρίζουν [[ανώνυμες συναρτήσεις]], που μπορούν επίσης να αποθηκεύονται σε εγγραφές, οι εγγραφές εφοδιασμένες με τη λειτουργία υποτύπου παρέχουν ορισμένα από τα χαρακτηριστικά του
Η έννοια των υποτύπων σχετίζεται με τις γλωσσικές έννοιες της [[υπερνυμία|υπερνυμίας]] και [[ολονυμία|ολονυμίας]]. Συνδέεται επίσης με την έννοια της [[φραγμένη ποσοτικοποίηση|φραγμένης ποσοτικοποίησης]] στη μαθηματική λογική. Οι υποτύποι δεν πρέπει να συγχέονται με την έννοια της [[κληρονομικότητα (επιστήμη υπολογιστών)|κληρονομικότητας]] (κλάσεων ή αντικειμένων) των αντικειμενοστρεφών γλώσσών. Η σχέση υποτύπου είναι μια σχέση μεταξύ τύπων (διαπροσωπειών σε
== Προέλευση ==
Η έννοια των υποτύπων στις γλώσσες προγραμματισμού χρονολογείται από τη δεκαετία του 1960. Εισήχθη στη [[Simula]] και τους απογόνους της. Οι πρώτες τυπικές αναλύσεις των υποτύπων δόθηκαν από τον [[John C. Reynolds]] το 1980, ο οποίος χρησιμοποίησε [[θεωρία κατηγοριών]] για την τυποποίηση της [[έμμεση μετατροπή|έμμεσης μετατροπής]], και τον [[Luca Cardelli]] (1985).<ref>Pierce, σημειώσεις κεφ. 15</ref>
Η έννοια των υποτύπων έχει αποκτήσει μεγαλύτερη αναγνωρισιμότητα (και συνωνυμία με τον πολυμορφισμό σε μερικούς κύκλους) με την ευρύτατη υιοθέτηση του
== Παραδείγματα ==
Γραμμή 82:
* [[Παραμετρικός πολυμορφισμός]]
* [[Πολυμορφισμός (επιστήμη υπολογιστών)]]
*
==Σημειώσεις==
Γραμμή 104:
[[Κατηγορία:Τύποι δεδομένων]]
[[Κατηγορία:Πολυμορφισμός (υπολογιστές)]]
[[Κατηγορία:
{{ενσωμάτωση κειμένου|en|Subtype Polymorphism }}
|