Διαφορά μεταξύ κληρονομιάς και εμπορευματοκιβωτίου

Anonim

Κληρονομικότητα vs. Περιεχόμενο

Η κληρονομιά και η κονσερβοποίηση είναι δύο σημαντικές έννοιες που βρέθηκαν στο OOP (Αντικειμενοστρεφής Προγραμματισμός Παράδειγμα: C ++). Με απλά λόγια, και η Containership και η Κληρονομικότητα ασχολούνται με την παροχή πρόσθετων ιδιοτήτων ή συμπεριφοράς σε μια τάξη. Η κληρονομιά είναι η ικανότητα μιας τάξης να κληρονομήσει ιδιότητες και συμπεριφορά από μια μητρική τάξη, επεκτείνοντάς την. Από την άλλη πλευρά, το Containership είναι η ικανότητα μιας κλάσης να περιέχει αντικείμενα διαφορετικών κλάσεων ως δεδομένα μέλους.

Τι είναι η κληρονομιά;

Όπως προαναφέρθηκε, η κληρονομικότητα είναι η ικανότητα μιας τάξης να κληρονομήσει ιδιότητες και συμπεριφορά από μια μητρική τάξη, επεκτείνοντάς την. Η κληρονομιά παρέχει ουσιαστικά επαναχρησιμοποίηση κώδικα επιτρέποντας την επέκταση ιδιοτήτων και συμπεριφοράς μιας υπάρχουσας κλάσης από μια νέα κατηγορία. Αν η τάξη Α επεκτείνει το Β, τότε η τάξη Β ονομάζεται κλάση γονέων (ή κλάσης super) και η κλάση Α ονομάζεται κλάση παιδιού (ή παράγωγη κλάση / κλάση). Σε αυτό το σενάριο, η κλάση Α θα κληρονομήσει όλα τα δημόσια και προστατευμένα χαρακτηριστικά και τις μεθόδους της σούπερ κλάσης (Β). Η υποκατηγορία μπορεί προαιρετικά να παρακάμψει (παρέχει νέα ή εκτεταμένη λειτουργικότητα σε μεθόδους) τη συμπεριφορά που κληρονομείται από την γονική κλάση. Η κληρονομιά αντιπροσωπεύει μια σχέση "is-a" στο OOP. Αυτό ουσιαστικά σημαίνει ότι το Α είναι επίσης Β. Με άλλα λόγια, το Β μπορεί να είναι η τάξη με μια γενική περιγραφή μιας συγκεκριμένης οντότητας πραγματικού κόσμου, αλλά ο Α ορίζει μια συγκεκριμένη εξειδίκευση. Σε ένα πραγματικό πρόβλημα προγραμματισμού στον κόσμο, η κατηγορία Person θα μπορούσε να επεκταθεί για να δημιουργήσει την κλάση Employee. Αυτό ονομάζεται εξειδίκευση. Αλλά θα μπορούσατε επίσης να δημιουργήσετε πρώτα την κλάση Employee και στη συνέχεια να την γενικεύσετε σε μια κατηγορία Άτομο επίσης (δηλ. Γενίκευση). Σε αυτό το παράδειγμα, ο εργαζόμενος θα έχει όλες τις ιδιότητες και συμπεριφορά του προσώπου (δηλαδή, ο εργαζόμενος είναι επίσης ένα πρόσωπο) και μπορεί να περιέχει κάποια πρόσθετη λειτουργικότητα (έτσι, το πρόσωπο δεν είναι υπάλληλος) επίσης.

Τι είναι η κοντέινερ;

Container είναι η ικανότητα μιας κλάσης να περιέχει αντικείμενα διαφορετικών κλάσεων ως δεδομένα μέλους. Για παράδειγμα, η κατηγορία Α θα μπορούσε να περιέχει ένα αντικείμενο της κατηγορίας Β ως μέλος. Εδώ, όλες οι δημόσιες μέθοδοι (ή λειτουργίες) που ορίζονται στο Β μπορούν να εκτελεστούν μέσα στην κλάση Α. Η κλάση Α γίνεται ο περιέκτης, ενώ η κατηγορία Β γίνεται η περιορισμένη κατηγορία. Η κονσέρβα αναφέρεται επίσης ως Σύνθεση. Σε αυτό το παράδειγμα, μπορεί να ειπωθεί ότι η κατηγορία Α αποτελείται από την κλάση Β. Στο OOP, η Containership αντιπροσωπεύει μια σχέση "έχει-a". Είναι σημαντικό να σημειωθεί ότι, παρόλο που το κοντέινερ έχει πρόσβαση για να εκτελέσει όλες τις δημόσιες μεθόδους της περιεχόμενης κλάσης, δεν είναι σε θέση να αλλάξει ή να παράσχει πρόσθετες λειτουργίες. Όταν πρόκειται για πρόβλημα προγραμματισμού σε πραγματικό κόσμο, ένα αντικείμενο κλασικού κειμένου μπορεί να περιέχεται στη φόρμα κλάσης και έτσι μπορεί να ειπωθεί ότι μια φόρμα περιέχει ένα TextBox (ή εναλλακτικά, μια φόρμα αποτελείται από ένα TextBox).

Διαφορά μεταξύ κληρονομίας και κοντέινερ

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