Skip to main content

Τι είναι η σύνθεση πάνω από την κληρονομιά;

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