Βίντεο: Νέα τραγωδία σε πίστα σκι: Νεκρός νεαρός αθλητής του Χάντμπολ (Τατιάνα Live, 25/1/18) 2024
Είναι φυσικό να ταξινομείτε αντικείμενα σε κατηγορίες και να οργανώνετε κατηγορίες σε υποκατηγορίες. Αν ψάχνετε για ένα μέρος για να ζήσετε, θα βρείτε τον εαυτό σας κατηγοριοποίηση μιας κατοικίας ως σπίτι, διαμέρισμα, αρχοντικό, συγκυριαρχία, αρχοντικό, και ούτω καθεξής. Τα σπίτια μπορούν, με τη σειρά τους, να οργανωθούν περαιτέρω από στυλ όπως το ράντσο, το χωριστό, το αποικιακό και το αλάτι. Η UML σάς δίνει τη δυνατότητα να καταγράψετε αυτές τις κατηγορίες ταξινομήσεων - γνωστές και ως γενίκευση και εξειδίκευση - και να τις χρησιμοποιήσετε ως μοντελιστές και προγραμματιστές.
Μερικοί προγραμματιστές με αντικείμενο το αντικείμενο θα πάνε σε μεγάλο βαθμό για να εξοικονομήσουν λίγη δουλειά. Όταν μπορούν να μοντελοποιήσουν κάτι και να το επαναχρησιμοποιήσουν, ενδιαφέρονται. Εάν μπορούν να γράψουν μια μέθοδο (τον κώδικα προγράμματος για μια λειτουργία) για μια τάξη μόνο μία φορά και να την χρησιμοποιήσουν πολλές φορές, τότε τις υπογράψουν για υψηλότερη παραγωγικότητα. Αν θέλετε να εξοικονομήσετε χρόνο, καθορίζοντας τις ιδιότητες και τις λειτουργίες μία φορά και στη συνέχεια επαναχρησιμοποιώντας πολλές φορές, διαβάστε το παρακάτω.
Καθώς ορίζετε τάξεις, μπορεί να παρατηρήσετε ότι ορισμένες κλάσεις έχουν τα ίδια χαρακτηριστικά ή τις ίδιες λειτουργίες. Όταν συμβαίνει αυτό, τοποθετείτε αυτά τα κοινά χαρακτηριστικά (χαρακτηριστικά, λειτουργίες κ.ο.κ.) σε μια πιο γενική κατηγορία που ονομάζεται υπερκλάση . Οι κλάσεις που μοιράζονται τις κοινές λειτουργίες είναι γνωστές ως υποκατηγορίες της υπερκλάσης. Για παράδειγμα, το μήκος του εγγεγραμμένου υλικού σε βιντεοκασέτα, ηχητική ζώνη, δίσκο CD ή κινηματογραφική ταινία είναι χαρακτηριστικό και των τεσσάρων ειδών των εγγεγραμμένων μέσων. Αυτές οι κλάσεις μπορούν επίσης να μοιράζονται και άλλα χαρακτηριστικά, όπως οι φυσικές τους διαστάσεις και η ημερομηνία που χρησιμοποιήθηκε για την πραγματοποίηση μιας εγγραφής. Σε αυτήν την περίπτωση, η υπερκλάση θα ήταν RecordedMedia, οι υποκατηγορίες θα ήταν Videotape, Audiotape, CompactDisc και MovieFilm, ενώ μερικά κοινά χαρακτηριστικά θα μπορούσαν να περιλαμβάνουν καταγεγραμμένοLength και totalLength.
Αυτή η διαδικασία εύρεσης παρόμοιων χαρακτηριστικών ή λειτουργιών μεταξύ των κλάσεων είναι γνωστή ως γενίκευση. Για παράδειγμα, γενικεύετε το recordLength σε μια πιο γενική κατηγορία που ονομάζεται RecordedMedia. Η διαδικασία για την εμφάνιση μιας γενίκευσης στο UML είναι απλή:
1. Προσδιορίστε τις υποκατηγορίες.
Εντοπίστε τάξεις που έχουν τα ίδια χαρακτηριστικά ή / και λειτουργίες. Αυτές οι κλάσεις είναι οι υποκατηγορίες σας.
2. Δημιουργήστε μια υπερκλάση.
Παρέχετε μια υπερκλάση για να διατηρείτε τα κοινά χαρακτηριστικά ή / και τις λειτουργίες των υποκατηγοριών. Δώστε στο superclass ένα όνομα που κατηγοριοποιεί όλες τις υποκατηγορίες. Η τοποθέτηση της υπερκλάσης πάνω από τις υποκατηγορίες στο διάγραμμα διευκολύνει την ανάγνωση αλλά δεν είναι απαραίτητη.)
3. Προσθέστε κοινά χαρακτηριστικά στην υπερκλάση.
Αφαιρέστε τις κοινές ιδιότητες και τις λειτουργίες από τις υποκατηγορίες και τοποθετήστε τις (μία φορά) στην υπερκλάση.
4. Σχεδιάστε μια σχέση γενίκευσης.
Σχεδιάζετε μια γραμμή γενίκευσης από κάθε υποκατηγορία στην υπερκλάση. Στο UML η γραμμή γενίκευσης αντιπροσωπεύεται ως μια συμπαγής γραμμή με ένα κοίλο βέλος στο άκρο της υπερκλάσης. Στο UML, μια γραμμή με το κοίλο βέλος που συνδέει μια υποκατηγορία με μια υπερκλάση είναι γνωστή ως σχέση γενίκευσης.
Αφού δημιουργήσετε μια υπερκλάση με τις κοινές λειτουργίες όπως τα χαρακτηριστικά και τις λειτουργίες, οι υποκατηγορίες κληρονομούν εκείνες τις λειτουργίες από την υπερκλάση. Με αυτό τον τρόπο πρέπει να γράψετε μόνο τα κοινά χαρακτηριστικά μιας φορά στην υπερκλάση αντί για πολλές φορές σε κάθε μία από τις υποκατηγορίες.
Μπορείτε να πείτε εάν έχετε μια γενίκευση εξετάζοντας τη γλώσσα που χρησιμοποιείτε εσείς (ή άλλοι) για να περιγράψετε τη σχέση μεταξύ των τάξεων. Παρατηρήστε ότι στην περιγραφή των εγγεγραμμένων μέσων και των διαφόρων τύπων της, όπως είναι η βιντεοταινία σε αυτή την ενότητα, εμφανίστηκε η φράση "τέσσερα είδη εγγράφων". Εάν βρίσκεστε χρησιμοποιώντας φράσεις όπως "είδος" ή "τύπος", τότε οι πιθανότητες είναι να έχετε γενίκευση στα χέρια σας.
Πείτε ότι ένας από τους πελάτες σας ενδιαφέρεται να παρακολουθείτε τα αρχεία σε ένα αρχείο. Αυτός ο πελάτης έχει συγκεντρώσει διαφορετικά είδη εγγεγραμμένων μέσων, όπως βιντεοκασέτες και ακουστικά. Ως μοντελιστές, πρέπει να καταγράψετε τις διαφορές μεταξύ αυτών των μέσων ενημέρωσης καθώς και τις ομοιότητές τους. Το διάγραμμα στο σχήμα 1 δείχνει τις αρχές αρκετών γενικοποιήσεων, διατεταγμένες σε μια ιεραρχία κληρονομιάς .
Εικόνα 1: Απλή ιεραρχία κληρονομιάς.
Οι προγραμματιστές χρησιμοποιούν τον όρο γενίκευση ή κληρονομικότητα για να αναφερθούν στην ίδια ιδέα της επαναχρησιμοποίησης των κοινών χαρακτηριστικών και των λειτουργιών που εμφανίζετε σε μια υποκατηγορία και επαναχρησιμοποίηση σε υποκατηγορίες. Η γενίκευση αναφέρεται στην έννοια της γενίκευσης από τις ειδικότητες (οι υποκατηγορίες) στο γενικό (η υπερκλάση). Η κληρονομιά αναφέρεται στην επίδραση της γενίκευσης στις υποκατηγορίες.
Όταν βλέπετε μια σχέση γενίκευσης μεταξύ των κλάσεων, η σημασία της είναι πολύ διαφορετική από αυτή μιας σχέσης μεταξύ των κλάσεων. Μια ένωση είναι τελικά μια σχέση μεταξύ πολλών αντικειμένων - μερικές περιπτώσεις μιας τάξης έχουν σχέση (σύνδεση) με στιγμές της άλλης τάξης. Σε μια σχέση γενίκευσης μεταξύ τάξεων , η σχέση είναι πραγματικά για τις τάξεις. Το καλύτερο που μπορείτε να πείτε είναι ότι ένα αντικείμενο που δημιουργείται από μια υποκατηγορία περιέχει όλα τα χαρακτηριστικά της υποκατηγορίας και της υπερκλάσης.
Έχετε μόνο ένα αντικείμενο από μια κλάση σε σχέση γενίκευσης. Παρόλο που εμφανίζετε δύο κατηγορίες, την υποκατηγορία και την υπερκλάση, έχετε μόνο ένα αντικείμενο που δημιουργείται. Μπορείτε να σκεφτείτε ότι ένα αντικείμενο της κλάσης Videotape αποτελεί επίσης αντικείμενο της κατηγορίας RecordedMedia λόγω κληρονομικότητας. Το σχήμα 2 δείχνει ένα αντικείμενο που δημιουργήθηκε από την κλάση Videotape με όλα τα χαρακτηριστικά του.(Η παρουσία μιας κλάσης αναπαρίσταται ως σύμβολο αντικειμένου.) Δεν έχετε δύο διαφορετικά αντικείμενα (ένα για RecordedMedia και ένα για Videotape), ένα μόνο αντικείμενο. Όταν δημιουργήθηκε το αντικείμενο vtu83-1023, ορίστηκαν όλες οι τιμές των χαρακτηριστικών του. Η εγγραφή στην ταινία είναι 57 λεπτά. Το συνολικό μήκος της φυσικής ταινίας είναι 60 λεπτά. Η ταινία είναι μια βιντεοκασέτα Umatic με ύψος 10 ίντσες, πλάτος 7 ίντσες και βάθος 1,5 ίντσες. Η εγγραφή είναι αναλογική και ένα αρχείο καταγραφής της ταινίας είναι προσαρτημένο στην ταινία για να αναφερθεί ο αρχειοφύλακας.
Εικόνα 2: Ένα στιγμιότυπο που εμφανίζει όλα τα κληρονομικά χαρακτηριστικά.
Έχετε μόνο ένα στιγμιότυπο που ορίζεται από μια υποκατηγορία και την υπερκλάση της. Η υποκατηγορία και η κλάση superclass μπορεί να έχουν μια λειτουργία κατασκευαστή (για να δημιουργηθεί το στιγμιότυπο) και μια λειτουργία destructor (για να καταστρέψει το στιγμιότυπο). Όταν το λογισμικό σας τρέχει και δημιουργείτε μια παρουσία μιας υποκατηγορίας, εκτελείται πρώτα ο κατασκευαστής της υπερκλάσης, ακολουθούμενος από τον κατασκευαστή της υποκατηγορίας. Όταν έρχεται χρόνος για την εξάλειψη του στιγμιότυπου που δημιουργήσατε, ο καταστροφέας της υποκλάσης καλείται πρώτα, ακολουθούμενος από τον καταστροφέα της υπερκλάσης. Αν τα πράγματα είναι πιο περίπλοκα επειδή έχετε υποκατηγορίες υποκλάσεων, θυμηθείτε απλώς: Οι κατασκευαστές καλούνται από την κορυφή της ιεραρχίας κληρονομιάς προς τα κάτω. οι καταστροφείς καλούνται από τη χαμηλότερη υποκατηγορία μέχρι την υψηλότερη υπερκλάση.