Μοντελοποίηση σε UML. Γενικά διαγράμματα

Παιδικά προϊόντα 27.05.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Το διάγραμμα κλάσεων είναι κεντρικό στη σχεδίαση ενός αντικειμενοστρεφούς συστήματος. Η σημείωση κλάσης χρησιμοποιείται σε διαφορετικά στάδια σχεδιασμού και κατασκευάζεται με διαφορετικούς βαθμούς λεπτομέρειας. Η γλώσσα UML χρησιμοποιείται όχι μόνο για το σχεδιασμό, αλλά και για την τεκμηρίωση και τη σκιαγράφηση ενός έργου. Εγώ (σε αντίθεση με το Gradi Bucha) δεν είμαι υποστηρικτής της ανάπτυξης ενός έργου με χρήση όλων των τύπων διαγραμμάτων UML, καθώς και λεπτομερούς σχεδιασμού. Χρησιμοποιώ το UML πιο συχνά για σκίτσο και επίσης για σχεδιασμό χρησιμοποιώντας τη διαδικασία ICONIX. Το άρθρο περιγράφει μέρος του συμβολισμού κλάσης UML, η χρήση του οποίου είναι επαρκής στις περισσότερες περιπτώσεις. Δεν θα υπάρχουν πληροφορίες σχετικά με την πολλαπλότητα των συσχετίσεων και των χαρακτηριστικών, τα χαρακτηριστικά της αναπαράστασης παράλληλων πράξεων, τα πρότυπα (παραμετροποιημένες κλάσεις) και τους περιορισμούς. Αν χρειαστεί, όλες αυτές οι πληροφορίες βρίσκονται σε άλλα βιβλία. Θα περιοριστούμε στο βασικό μέρος της σημειογραφίας και θα δώσουμε μεγαλύτερη προσοχή στη χρήση διαγραμμάτων τάξης.

1 Στοιχεία διαγράμματος τάξης

Ένα διάγραμμα κλάσεων χρησιμοποιεί ειδικά σύμβολα για να απεικονίσει τους τύπους δεδομένων προγράμματος και τις σχέσεις μεταξύ τους, αν και σε ορισμένες περιπτώσεις μπορεί να χρησιμοποιηθούν και άλλα στοιχεία - πακέτα και ακόμη και στιγμιότυπα κλάσεων (αντικείμενα).

1.1 Σύμβολο τάξης

Ένα σύμβολο κλάσης σε ένα διάγραμμα μπορεί να φαίνεται διαφορετικό ανάλογα με την ευαισθησία του διαγράμματος:

Λεπτομερή ζητήματα θα συζητηθούν στις επόμενες ενότητες, αλλά τώρα πρέπει να προσέξουμε ότι το σύμβολο της κλάσης περιέχει ένα όνομα (Player), ένα σύνολο πράξεων (move, get_gealth) και ιδιότητες (pos, κατάσταση). Για στοιχεία κλάσης, ο τύπος, η πολλαπλότητα, η ορατότητα κ.λπ. μπορούν να οριστούν:

Μορφή προδιαγραφής χαρακτηριστικών:
Όνομα ορατότητας: τύπος [multiplicity] = default_value

Μορφή προδιαγραφών λειτουργίας:
όνομα ορατότητας (όρισμα: τύπος) = return_value_type

Ανάλογα με τη ρύθμιση ορατότητας, το στοιχείο μπορεί να είναι:

  • ιδιωτικό (ιδιωτικό, διαθέσιμο μόνο εντός της τάξης) - καθορίζεται από το σύμβολο μείον (-), μπορεί να εμφανίζεται ως τετράγωνο.
  • προστατευμένο (προστατευμένο, διαθέσιμο εντός της κλάσης, καθώς και εντός κλάσεων καταγωγής) - καθορίζεται από το σύμβολο κατακερματισμού (#), μπορεί να εμφανίζεται ως διαμάντι.
  • ανοιχτό (δημόσιο, διαθέσιμο σε όλους) - καθορίζεται από το σύμβολο συν (+), μπορεί να εμφανιστεί ως κύκλος.

Η εικονική συνάρτηση και το όνομα της αφηρημένης κλάσης είναι πλάγια, ενώ η στατική συνάρτηση είναι υπογραμμισμένη.

1.2 Ταξικές σχέσεις

Το διάγραμμα τάξης επιτρέπει διάφορα είδησχέσεις, θεωρήστε τις ως μέρος του διαγράμματος ενός μοντέλου κάποιου παιχνιδιού:

Το παιχνίδι έχει διαφορετικούς τύπους στοιχείων (τοίχους, σεντούκια, χαρακτήρες). Όλα αυτά τα στοιχεία είναι κληρονόμοι της αφηρημένης κλάσης AbstractItem , και ορισμένα από αυτά μπορούν να μετακινηθούν (τέτοια στοιχεία πρέπει να κληρονομηθούν από το MovingItem). Η κληρονομικότητα (η σχέση "είναι") απεικονίζεται χρησιμοποιώντας μια συμπαγή γραμμή με ένα κλειστό βέλος που δείχνει προς την υπερκλάση - στο διάγραμμα, η κλάση MovingItem κληρονομείται από το AbstractItem, η κλάση Player κληρονομείται από το MovingItem κ.λπ. Η διακεκομμένη γραμμή με ένα κλειστό βέλος καθορίζει μια σχέση υλοποίησης (κλειστή κληρονομιά).

Ένας άλλος τύπος σχέσης μεταξύ των κλάσεων είναι η συμπερίληψη στον αντικειμενοστραφή προγραμματισμό, υπάρχουν δύο τύποι αυτής της σχέσης - σύνθεση και συνάθροιση. Επιτρέψτε μου να σας υπενθυμίσω ότι η σύνθεση είναι ένας τύπος συμπερίληψης όταν τα αντικείμενα είναι άρρηκτα συνδεδεμένα μεταξύ τους (η διάρκεια ζωής τους είναι η ίδια στην περίπτωση της συνάθροισης, η διάρκεια ζωής είναι διαφορετική (για παράδειγμα, όταν ένα αντικείμενο μιας ένθετης κλάσης μπορεί να είναι) αντικαθίσταται από άλλο αντικείμενο κατά την εκτέλεση του προγράμματος).

Η σχέση σύνθεσης υποδεικνύεται από ένα γεμάτο διαμάντι, το οποίο σχεδιάζεται από την πλευρά της κλάσης που περικλείει - για παράδειγμα, η κλάση MovingItem περιλαμβάνει την κλάση Position, επειδή ένα κινούμενο αντικείμενο έχει πάντα μια θέση. Η σχέση συνάθροισης αντιπροσωπεύεται από ένα ανοιχτό διαμάντι - ο παίκτης (Παίκτης) συγκεντρώνει την κατάσταση (IPlayerState).

Εάν είστε εξοικειωμένοι με τα πρότυπα του κράτους, της στρατηγικής ή της αντιπροσωπείας, μπορείτε να παραλείψετε αυτήν την ενότητα.
Το παραπάνω διάγραμμα χρησιμοποιεί το μοτίβο σχεδίασης κατάστασης, το οποίο είναι μια παραλλαγή του μοτίβου εκχώρησης και είναι κοντά στο μοτίβο στρατηγικής. Η ουσία της ανάθεσης είναι ότι για να απλοποιηθεί η λογική μιας τάξης, μέρος της εργασίας της μπορεί να μεταφερθεί (να ανατεθεί) σε μια βοηθητική τάξη. Με τη σειρά του, το μοτίβο κατάστασης μπορεί να προστεθεί, για παράδειγμα, στο στάδιο της αναδιαμόρφωσης εάν σε πολλές συναρτήσεις μιας κλάσης υπάρχει τυχαίος έλεγχος της κατάστασης ενός αντικειμένου για την εκτέλεση συγκεκριμένων ενεργειών. Στην περίπτωσή μας, ο χαρακτήρας μπορεί να αλληλεπιδράσει με τον σκαντζόχοιρο, ας υποθέσουμε ότι αν ο χαρακτήρας κινηθεί ενώ κάθεται και έρθει σε επαφή με τον σκαντζόχοιρο, η υγεία του θα πρέπει να μειωθεί και αν σταθεί, η βαθμολογία του (πόντους) θα αυξηθεί. Εκτός από τον σκαντζόχοιρο, θα μπορούσαν να υπάρχουν τροφές, αντίπαλοι, φυσίγγια κ.λπ. Για να επιδειχθεί αυτό το μοτίβο, δημιουργήθηκε μια αφηρημένη κλάση IPlayerState και δύο απόγονοι StayState και SeatState. Στην κατηγορία Player, όταν πατηθεί το κουμπί Ctrl, η κατάσταση θα μπορούσε να αλλάξει σε SeatState και όταν απελευθερωθεί, θα μπορούσε να αλλάξει σε StayState. Έτσι, κατά την εκτέλεση του state->process_hedgehog(this), ο παίκτης μας θα έρθει με κάποιο τρόπο σε επαφή με τον hedgehog με κάποιο τρόπο που ορίζεται από το αντικείμενο κατάστασης.

Το μοτίβο σχεδίασης Delegation (και όλες οι παραλλαγές του) είναι ένα καλό παράδειγμα για την επίδειξη της συγκέντρωσης. Στην περίπτωσή μας, η κατάσταση του παίκτη μπορεί να αλλάξει αλλάζοντας το αντικείμενο με δείκτη, δηλ. Η διάρκεια ζωής των αντικειμένων ποικίλλει.

Πλέον γενική άποψησχέσεις μεταξύ κλάσεων - ένας συσχετισμός, που υποδεικνύεται με μια συμπαγή γραμμή (μερικές φορές με ένα βέλος). Γενικά, η σύνθεση, η συγκέντρωση και η γενίκευση (κληρονομικότητα) είναι ειδικές περιπτώσεις συσχέτισης. Το διάγραμμα συσχέτισης μας δείχνει ότι η κλάση IPlayerState τροποποιεί τα στατιστικά (υγεία και σημεία) του αντικειμένου Player. Ένας συσχετισμός μπορεί να έχει ένα όνομα σύνδεσης που εξηγεί την ουσία της σχέσης. Το όνομα της αντίστοιχης μεταβλητής χρησιμοποιείται συχνά ως όνομα της σύνθεσης και των σχέσεων συνάθροισης. Επιπλέον, ο συσχετισμός μπορεί να έχει μια πολλαπλότητα που ορίζεται στα άκρα της γραμμής:

  • 1 - μία σύνδεση (το διάγραμμά μας δείχνει ότι ένας παίκτης περιλαμβάνει ένα παράδειγμα της κλάσης IPlayerState).
  • * οποιοσδήποτε αριθμός συνδέσεων (αν υπήρχε μια κατηγορία αγωνιστικού χώρου στο διάγραμμα, τότε χρησιμοποιώντας έναν αστερίσκο θα ήταν δυνατό να φανεί ότι θα μπορούσε να περιέχει έναν αυθαίρετο αριθμό στοιχείων παιχνιδιού).
  • [από..προς] – μπορεί να καθοριστεί ως εύρος. Άρα το εύρος είναι ισοδύναμο με έναν αστερίσκο, αλλά αν θέλουμε να δείξουμε ότι πρέπει να υπάρχουν περισσότερα από ένα αντικείμενα, μπορούμε να γράψουμε

Ο τελευταίος τύπος σχέσης που θα εξετάσουμε, η εξάρτηση, απεικονίζεται με μια διακεκομμένη (διακεκομμένη) γραμμή. Αν υπάρχει βέλος, τότε κατευθύνεται από την εξαρτημένη στην ανεξάρτητη κλάση, αν δεν υπάρχει βέλος, τότε οι κλάσεις εξαρτώνται η μία από την άλλη. Με τον όρο εξάρτηση εννοούμε την εξάρτηση από τη διεπαφή, δηλ. εάν αλλάξει η διεπαφή της ανεξάρτητης κλάσης, τότε θα πρέπει να κάνετε αλλαγές στην εξαρτημένη κλάση. Στο διάγραμμά μας, το SeatState και το StayState εξαρτώνται από την κατηγορία Player, επειδή στραφείτε στις μεθόδους του για να αλλάξετε τα χαρακτηριστικά του παίκτη. Για την αναπαράσταση μιας σχέσης φιλίας μεταξύ των τάξεων, χρησιμοποιείται μια σχέση εξάρτησης με την ένδειξη φίλος.

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

2 Χρησιμοποιώντας ένα διάγραμμα τάξης

Καλύψαμε τις βασικές σημειώσεις που χρησιμοποιούνται στα διαγράμματα τάξης - θα πρέπει να είναι επαρκείς στη συντριπτική πλειονότητα των περιπτώσεων. Τουλάχιστον, με αυτό το υλικό μπορείτε εύκολα να κατανοήσετε τα διαγράμματα σχεδίασης και να κατανοήσετε το σκίτσο οποιουδήποτε έργου. Ωστόσο, πώς να κατασκευάσετε σωστά τέτοια διαγράμματα; Με ποια σειρά και με ποιο επίπεδο λεπτομέρειας; - η απάντηση εξαρτάται από τους σκοπούς κατασκευής του διαγράμματος, επομένως το υλικό που παρουσιάζεται θα χωριστεί σε υποενότητες σύμφωνα με τους σκοπούς της μοντελοποίησης.

Αξίζει να σημειωθεί ότι οι συμβουλές του Gradi Bucha για τη χρήση της UML δίνονται στο βιβλίο «User's Guide», αλλά στην «Αντικειμενοστρεφή Ανάλυση» μπορείτε να βρείτε καλά παραδείγματακαι κριτήρια ποιότητας του έργου. Ο Leonenkov αποφεύγει εντελώς αυτό το θέμα, αφήνοντας μόνο αναφορές στη βιβλιογραφία. Βρήκα συγκεκριμένες συστάσεις από τον Larman και τον Rosenberg, μέρος του υλικού βασίζεται στην προσωπική μου εμπειρία. Ο Fowler βλέπει το UML ως εργαλείο σκιαγράφησης, επομένως έχει τη δική του (πολύ διαφορετική από τον Booch και τον Rosenberg) άποψη για το διάγραμμα κλάσης.

2.1 Διάγραμμα τάξης ως λεξικό συστήματος, εννοιολογικό μοντέλο

Το λεξικό συστήματος διαμορφώνεται παράλληλα με την ανάπτυξη του διαγράμματος περίπτωσης χρήσης, δηλ. τεχνικές προδιαγραφές. Φαίνεται κάπως έτσι - κάνετε ερωτήσεις στον πελάτη όπως "τι άλλο μπορεί να κάνει ο χρήστης;", "τι θα συμβεί (το σύστημα θα πρέπει να δώσει) εάν ο χρήστης κάνει κλικ στο<эту>κουμπί;» και γράψτε τις απαντήσεις σε αυτές με τη μορφή περιγραφής προηγούμενων. Ωστόσο, ο πελάτης, όταν δίνει απαντήσεις, μπορεί να αποκαλεί τα ίδια πράγματα με διαφορετικά ονόματα - από προσωπική εμπειρία: όταν λέει "κελί", "τομή", "κόμβος" και "κελί" ο πελάτης μπορεί να εννοεί το ίδιο πράγμα. Στο σύστημά σας, όλες αυτές οι έννοιες πρέπει να αντιπροσωπεύονται από μία αφαίρεση (κλάση/συνάρτηση/…). Για να γίνει αυτό, κατά την επικοινωνία με τον πελάτη, αξίζει να καταγράψετε την ορολογία με τη μορφή ενός λεξικού συστήματος - ένα διάγραμμα τάξης το κάνει πολύ καλά.

Για να δημιουργήσετε ένα λεξικό συστήματος, το Gradi Booch προτείνει να το κάνετε με την ακόλουθη σειρά:

  1. αναλύοντας προηγούμενα, προσδιορίστε ποια στοιχεία χρησιμοποιούν οι χρήστες και οι προγραμματιστές για να περιγράψουν ένα πρόβλημα ή τη λύση του.
  2. προσδιορίστε για κάθε αφαίρεση το αντίστοιχο σύνολο ευθυνών (ευθυνών). Παρακολούθηση της σωστής κατανομής των ευθυνών (συμπεριλαμβανομένης της συμμόρφωσης).
  3. Ανάπτυξη διαδικασιών και λειτουργιών για τις τάξεις για την εκτέλεση των ευθυνών τους.

Ως παράδειγμα, εξετάστε το λεξικό συστήματος για το παιχνίδι "Mineweeper". Το παρακάτω διάγραμμα δείχνει την έκδοση που προέκυψε από τη συζήτηση του προβλήματος από τον μαθητή μου. Μπορεί να φανεί ότι το διάγραμμα απεικονίζει οντότητες και τα χαρακτηριστικά τους που είναι κατανοητά από τον πελάτη αυτό το διάγραμμα αξίζει να το έχετε μπροστά στα μάτια σας όταν συντάσσετε προηγούμενα, ώστε να μην αποκαλείτε το "Κύτταρο" "Πεδίο", παραπλανώντας τους πάντες. Όταν δημιουργείτε ένα λεξικό συστήματος, θα πρέπει να αποφεύγετε να σχεδιάζετε συναρτήσεις κλάσης στο διάγραμμα, γιατί Μια τέτοια λεπτομερής κατανομή των ευθυνών γίνεται καλύτερα μετά την κατασκευή διαγραμμάτων αλληλεπίδρασης.

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

Ο Larman προτείνει τη δημιουργία ενός εννοιολογικού μοντέλου του συστήματος - αυτό είναι περίπου αυτό που περιγράψαμε ως λεξικό του συστήματος, αλλά εκτός από τους όρους της θεματικής περιοχής, καταγράφει ορισμένες σχέσεις που είναι κατανοητές στον πελάτη. Για παράδειγμα, ο πελάτης κατανοεί (και καταγράφει στις τεχνικές προδιαγραφές) ότι<покупку>συντάσσει<продавец>- επομένως, μεταξύ του πωλητή και της αγοράς υπάρχει σχέση συσχέτισης «μορφών». Συνιστώ τη δημιουργία ενός εννοιολογικού μοντέλου βελτιώνοντας το λεξιλόγιο του συστήματος, αν και ο Larman συνιστά την προσθήκη συσχετίσεων πρώτα και μετά χαρακτηριστικών.

2.2 Διάγραμμα κλάσης επιπέδου σχεδίασης

Σε κάθε αντικειμενοστραφή διαδικασία σχεδίασης, ένα διάγραμμα κλάσης είναι το αποτέλεσμα επειδή... είναι το μοντέλο που βρίσκεται πιο κοντά στην υλοποίηση (κώδικας). Υπάρχουν εργαλεία που μπορούν να μετατρέψουν ένα διάγραμμα κλάσης σε κώδικα, μια διαδικασία που ονομάζεται δημιουργία κώδικα που υποστηρίζεται από πολλά IDE και εργαλεία σχεδίασης. Για παράδειγμα, η δημιουργία κώδικα εκτελείται από το Visual Paradigm (διατίθεται ως πρόσθετα για πολλά IDE), νέο εκδόσεις της Microsoft Visual Studio, εργαλεία μοντελοποίησης UML όπως StarUML, ArgoUML κ.λπ. Για να δημιουργήσετε καλό κώδικα από ένα διάγραμμα, πρέπει να είναι αρκετά λεπτομερής. Αυτό είναι το διάγραμμα για το οποίο μιλάμε σε αυτή την ενότητα.

Πριν ο Larman αρχίσει να κατασκευάζει ένα διάγραμμα κλάσης σε επίπεδο σχεδιασμού, πρέπει να κατασκευαστούν διαγράμματα αλληλεπίδρασης και ένα εννοιολογικό μοντέλο του συστήματος. Σε αυτή την περίπτωση, η σειρά κατασκευής του διαγράμματος έχει ως εξής:

  1. μετακίνηση τάξεων από διάγραμμα ακολουθίας.
  2. Προσθέστε εννοιολογικά χαρακτηριστικά του μοντέλου.
  3. προσθέστε ονόματα μεθόδων για την ανάλυση διαγραμμάτων αλληλεπίδρασης (για παράδειγμα, );
  4. Προσθήκη χαρακτηριστικών και τύπων μεθόδων.
  5. προσθήκη συσχετισμών (με βάση χαρακτηριστικά - σχέσεις σύνθεσης και συνάθροισης).
  6. προσθήκη βελών (κατεύθυνση συσχετισμών)
  7. προσθέστε συσχετίσεις που ορίζουν άλλους τύπους σχέσεων (κυρίως κληρονομικότητα).

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

Για παράδειγμα, κατά την ανάλυση της εργασίας για το παιχνίδι "Mineweeper", εντοπίσαμε τάξεις και, αλλά θα είναι αυτές οι τάξεις στο τελικό έργο ή θα παραμείνουν μόνο στη φαντασία; — μια απόφαση μπορεί να ληφθεί μόνο με την ανάλυση διαγραμμάτων αλληλεπίδρασης. Άλλωστε, ο παρακάτω κώδικας είναι επίσης δυνατός:

Κλάση Enum CellType ( EmptyOpened, EmptyClose, EmptyCloseFlagged, MineOpened, MineClose, MineCloseFlagged); κλάση PlayingGround ( // ... CellType **m_ground; )

Επιτρέψτε μου να εξηγήσω (για όσους δεν γράφουν σε C++) - εδώ δημιουργείται μια απαρίθμηση που καθορίζει τον τύπο κελιού. Ένα κελί μπορεί να λάβει μία από αυτές τις έξι τιμές (κενό ανοιχτό, κενό κλειστό, κενό κλειστό με πλαίσιο ελέγχου κ.λπ.). Σε αυτήν την περίπτωση, το ίδιο το κελί δεν θα μπορεί να αντιδράσει στα κλικ του ποντικιού και να είναι υπεύθυνο για την εμφάνισή του (για παράδειγμα, ένα κενό ανοιχτό θα πρέπει να εμφανίζει τον αριθμό των ορυχείων γύρω του) - όλες αυτές οι ευθύνες προφανώς θα βαρύνουν την κλάση PlayingGround .

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

2.3 Διάγραμμα τάξης για σκιαγράφηση, τεκμηρίωση

Η σκιαγράφηση νοείται ως μοντελοποίηση κάποιου (επί του παρόντος ενδιαφέροντος) μέρους του συστήματος. Για παράδειγμα, το σκίτσο μπορεί να γίνει σε έναν πίνακα μαρκαδόρων όταν ένας νέος υπάλληλος ενταχθεί στην εταιρεία σας και θα τον βοηθήσετε να "συμμετάσχει" υπάρχον έργο. Προφανώς, εάν δώσετε σε ένα άτομο ένα διάγραμμα τάξης επιπέδου σχεδιασμού, θα του πάρει πολύ χρόνο για να το καταλάβει. Η ουσία της σκιαγράφησης είναι η επιλεκτικότητα - βάζετε στο διάγραμμα μόνο εκείνα τα στοιχεία που είναι σημαντικά για την εξήγηση ενός συγκεκριμένου μηχανισμού.

Ένας υποστηρικτής της χρήσης UML για σκιαγράφηση είναι ο Fowler, ο οποίος πιστεύει ότι μια ολιστική διαδικασία σχεδίασης που χρησιμοποιεί UML είναι πολύ περίπλοκη. Το σκίτσο χρησιμοποιείται πολύ συχνά (όχι μόνο όταν επεξηγείται ένα έργο σε πίνακα μαρκαδόρων):

  • Σε οποιοδήποτε βιβλίο αφιερωμένο στα μοτίβα σχεδίασης, θα βρείτε πολλά διαγράμματα UML κατασκευασμένα σε αυτό το στυλ.
  • Κατά τη μοντελοποίηση ενός προηγούμενου, επιλέγονται κλάσεις μέσω των οποίων υλοποιείται αυτό το προηγούμενο. Η μοντελοποίηση περίπτωσης χρήσης γίνεται κατά την ανακατασκευή.
  • Δεν έχει νόημα να εισαγάγετε ένα διάγραμμα κλάσης σε επίπεδο σχεδίασης στην τεκμηρίωση για προγραμματιστές - είναι πολύ πιο χρήσιμο να περιγράψετε τα πιο σημαντικά (κλειδιά) σημεία του συστήματος. Για να γίνει αυτό, κατασκευάζονται διαγράμματα κλάσεων σκίτσου και διαγράμματα αλληλεπίδρασης. Υπάρχουν επίσης ειδικά εργαλεία για τη δημιουργία τεκμηρίωσης σε ολοκληρωμένο κώδικα - όπως το JavaDoc ή, συγκεκριμένα, δημιουργούν ένα διάγραμμα κλάσης, αλλά για να είναι κατανοητή η τεκμηρίωση, πρέπει να προστεθούν ειδικοί τύποι σχολίων στον πηγαίο κώδικα του προγράμματος .

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

2.4 Διάγραμμα κλάσης για μοντελοποίηση βάσης δεδομένων

Μια ειδική περίπτωση ενός διαγράμματος κλάσης είναι το διάγραμμα σχέσης οντοτήτων (διάγραμμα E-R), που χρησιμοποιείται για τη μοντελοποίηση λογικό κύκλωμαβάσεις δεδομένων. Διαφορετικός κλασικό E-Rδιαγράμματα, ένα διάγραμμα κλάσης σάς επιτρέπει να μοντελοποιήσετε τη συμπεριφορά (ενεργοποιητές και αποθηκευμένες διαδικασίες).

Συνήθως η κατάσταση μοιάζει με αυτό - έχετε αναπτύξει ένα σύστημα του οποίου η κατάσταση πρέπει να αποθηκευτεί μεταξύ των εκτελέσεων, για παράδειγμα:

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

Τα δεδομένα που αποθηκεύονται μεταξύ των εκτελέσεων πρέπει με κάποιο τρόπο να φορτωθούν κατόπιν αιτήματος του χρήστη, δηλ. Πρέπει να καθοριστούν οι παράμετροι των αντίστοιχων κλάσεων. Για παράδειγμα, η εφαρμογή πρέπει να λάβει μια λίστα κομματιών (διαδρομών) από τη βάση δεδομένων και να την εμφανίσει ως λίστα στο μενού του προγράμματος. Όταν επιλέγετε ένα στοιχείο λίστας, υποβάλετε ερώτημα στις παραμέτρους του κομματιού στη βάση δεδομένων, δημιουργήστε ένα αντικείμενο κομματιού και εμφανίστε το στον χάρτη. Σε κάθε περίπτωση, τα δεδομένα από τη βάση δεδομένων χρησιμοποιούνται κατά την προετοιμασία αντικειμένων προγράμματος - αυτό είναι σημαντικό να το κατανοήσετε.

Για να μοντελοποιήσετε ένα σχήμα βάσης δεδομένων χρησιμοποιώντας ένα διάγραμμα κλάσης χρειάζεστε:

  1. Προσδιορίστε τις κλάσεις των οποίων τα δεδομένα θα πρέπει να αποθηκεύονται μεταξύ των εκκινήσεων εφαρμογών (ή των κλήσεων χρήστη) και σχεδιάστε αυτές τις κλάσεις σε ξεχωριστό διάγραμμα.
  2. Προσδιορίστε λεπτομερώς τα χαρακτηριστικά των κλάσεων, των συσχετισμών και των πολλαπλοτήτων. Στα μοντέλα E-R, η καρδινάτητα έχει μεγάλη σημασία - για παράδειγμα, εάν υπάρχει καρδινάλιος πολλά-προς-πολλά, θα πρέπει να δημιουργήσετε έναν βοηθητικό πίνακα. Χρησιμοποιήστε συγκεκριμένα στερεότυπα τάξης και σημάνσεις χαρακτηριστικών (για παράδειγμα, για να καθορίσετε πρωτεύοντα και δευτερεύοντα κλειδιά).
  3. επίλυση των προβλημάτων χρήσης του διαγράμματος που προκύπτει ως μοντέλο φυσικής βάσης δεδομένων - κυκλικές συσχετίσεις, n-αριακές συσχετίσεις κ.λπ. Εάν είναι απαραίτητο, δημιουργήστε ενδιάμεσες αφαιρέσεις.
  4. να αποκαλύψει λειτουργίες που είναι σημαντικές για την πρόσβαση στα δεδομένα και τη διατήρηση της ακεραιότητας·

Συμπέρασμα και βιβλιογραφία

Στο άρθρο, προσπάθησα να περιγράψω τα πιο ουσιαστικά στοιχεία ενός διαγράμματος τάξης, καθώς και πτυχές της εφαρμογής τους. Είναι σαφές ότι το διάγραμμα κατασκευάζεται στο αρχικό στάδιο του σχεδιασμού (εννοιολογικό μοντέλο) και είναι το αποτέλεσμά του. Σε όλα τα στάδια του σχεδιασμού, το διάγραμμα κλάσης που δημιουργήθηκε στην αρχή βελτιώνεται, δηλ. Σκέφτομαι μια επαναληπτική διαδικασία (όπως RUP ή ICONIX). Επιπλέον, παρουσιάζεται ο τρόπος χρήσης διαγραμμάτων κλάσεων για άλλους σκοπούς - σκιαγράφηση, τεκμηρίωση, μοντελοποίηση του λογικού διαγράμματος μιας βάσης δεδομένων. Μπορείτε να βρείτε πολλά παραδείγματα χρήσης διαγραμμάτων τάξης σε άλλες σελίδες αυτού του ιστολογίου.

  • διάγραμμα ;
  • πολλά διαγράμματα που δείχνουν τα βήματα ανακατασκευής για τη συμμόρφωση του έργου.
  • διαγράμματα τάξης για .
  • Butch Graddy Object-Oriented Analysis and Design with Example Applications, 3rd ed. / Butch Graddy, Maksimchuk Robert A., Angle Michael W., Young Bobby J., Conallen Jim, Houston Kelly A.: Μετάφραση από τα αγγλικά. - M.: LLC «I.D. Williams», 2010. - 720 σελ.
  • Leonenkov, A.V. UML 2 tutorial / A.V. Ο Λεονένκοφ. – Αγία Πετρούπολη: BHV – Petersburg, 2007. – 576 σελ.
  • Larman, K. Application of UML and design patterns: Textbook. Pos / Κ. Λάρμαν. - M.: Williams Publishing House, 2001. - 496 σελ.
  • Rosenberg D., Scott K. Application of object modeling using UML and case analysis.: Per. από τα αγγλικά Μ.: DMK Press, 2002
  • Budd T. Αντικειμενοστραφής προγραμματισμός σε δράση: Μετάφραση από τα αγγλικά. - Αγία Πετρούπολη: «Πέτρος», 1997. - 464 σελ. 2002
  • Butch G., Rambo D., Jacobson A. UML language. Οδηγός χρήστη: Per. από τα αγγλικά - M.: DMK, 2000. - 432 p.
  • Fowler, Μ. UML. Fundamentals / M. Fowler, K. Scott; μονοπάτι από τα αγγλικά – Αγία Πετρούπολη: Symbol – Plus, 2002. – 192 σελ.
  • — URL: https://site/archives/1914
  • — URL: https://site/archives/2769
  • Μοντελοποίηση δεδομένων UML - URL: http://www.agiledata.org/essays/umlDataModelingProfile.html
  • — URL: https://site/archives/887
  • — URL: https://site/archives/2400
  • — URL: https://site/archives/1372

Σκοπός της εργασίας. Εξοικείωση με τη μεθοδολογία και τα εργαλεία για μοντελοποίηση τάξης με βάση τη γλώσσα UML.

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

Μια σύντομη περιγραφή της μεθοδολογίας μοντελοποίησης κλάσεων στη γλώσσα UML

Σκεφτείτε τα πράγματα στον κόσμο γύρω σας. Τα περισσότερα από αυτά έχουν πιθανώς ιδιότητες (ιδιότητες) και δρουν με συγκεκριμένο τρόπο. Θα θεωρήσουμε αυτές τις ενέργειες ως ένα σύνολο λειτουργιών.

Μπορείτε επίσης να δείτε ότι όλα τα πράγματα χωρίζονται φυσικά σε κατηγορίες (αυτοκίνητα, έπιπλα, πλυντήρια ρούχων κ.λπ.). Αναφερόμαστε σε αυτές τις κατηγορίες ως κλάσεις. Τάξη -είναι μια κατηγορία ή ομάδα πραγμάτων που έχουν παρόμοια χαρακτηριστικά και κοινές ιδιότητες. Για παράδειγμα, οποιοδήποτε αντικείμενο στην κατηγορία πλυντηρίων ρούχων έχει χαρακτηριστικά όπως κατασκευαστής, αριθμός προϊόντος και χωρητικότητα. Οι ιδιότητες των ειδών αυτής της κατηγορίας περιλαμβάνουν τις λειτουργίες «φόρτωση ρούχων», «φόρτωση απορρυπαντικού πλυντηρίου», «ενεργοποίηση» και «ξεφόρτωση ρούχων».

Στο Σχ. Το Σχήμα 16 είναι ένα παράδειγμα σημειογραφίας UML που δείχνει τα χαρακτηριστικά και τις ιδιότητες ενός πλυντηρίου. Η τάξη αντιπροσωπεύεται από ένα ορθογώνιο χωρισμένο σε τρεις περιοχές. Η επάνω περιοχή περιέχει το όνομα, η μεσαία περιοχή περιέχει χαρακτηριστικά και η κάτω περιοχή περιέχει λειτουργίες. Ένα διάγραμμα κλάσεων αποτελείται από έναν αριθμό από αυτά τα πλαίσια που συνδέονται με γραμμές που δείχνουν πώς σχετίζονται οι κλάσεις μεταξύ τους.

Ρύζι. 16. Απεικόνιση τάξης σε UML

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

Τα διαγράμματα τάξης βοηθούν επίσης στην ανάλυση. Επιτρέπουν στον αναλυτή να επικοινωνεί με τον πελάτη στην ορολογία του και διεγείρουν τη διαδικασία εντοπισμού σημαντικών λεπτομερειών στο πρόβλημα που πρέπει να λυθεί.

Διάγραμμα αντικειμένου

Αντικείμενοείναι ένα παράδειγμα μιας κλάσης - μιας ειδικής οντότητας που έχει καθορισμένες τιμές χαρακτηριστικών και λειτουργιών. Το πλυντήριό σας, για παράδειγμα, μπορεί να έχει τα ακόλουθα χαρακτηριστικά: Laundatorium, Model Name, Washmeister, Product Serial Number, GL57774 και Capacity, 16 lbs.

Στο Σχ. Το Σχήμα 17 δείχνει πώς ένα αντικείμενο αναπαρίσταται σε συμβολισμό UML. Σημειώστε ότι το αντικείμενο αντιπροσωπεύεται από ένα ορθογώνιο, όπως στην περίπτωση μιας παράστασης κλάσης, αλλά το όνομά του είναι υπογραμμισμένο. Το όνομα της παρουσίας τοποθετείται στα αριστερά της άνω τελείας και το όνομα της κλάσης στη δεξιά πλευρά.


Ρύζι. 17. Αναπαράσταση αντικειμένου σε UML

Ένα ορθογώνιο είναι σύμβολοτάξη στο UML. Το όνομα της τάξης είναι συνήθως μια λέξη που αρχίζει με κεφαλαίο γράμμα. Βρίσκεται στην κορυφή του ορθογωνίου. Εάν το όνομα της τάξης αποτελείται από δύο λέξεις, συνδυάστε τις και γράψτε κεφαλαία και τη δεύτερη λέξη (για παράδειγμα, Πλυντήριο, Εικ. 18).

Ρύζι. 18. Σημειογραφία κλάσης σε UML

Γνωρίσματα

Ιδιότητα -αυτό είναι ένα ακίνητο κατηγορίας. Τα χαρακτηριστικά περιγράφουν μια λίστα τιμών μέσα στην οποία υποδεικνύονται οι ιδιότητες των αντικειμένων (δηλαδή, των περιπτώσεων) αυτής της κλάσης. Μια κλάση μπορεί να μην έχει χαρακτηριστικά ή να περιέχει οποιονδήποτε αριθμό από αυτά. Τα ονόματα χαρακτηριστικών που αποτελούνται από μία λέξη συνήθως υποδηλώνονται με πεζά γράμματα. Εάν το όνομα αποτελείται από πολλές λέξεις, τότε αυτές οι λέξεις συνδυάζονται και κάθε λέξη, με εξαίρεση την πρώτη, αρχίζει με κεφαλαίο γράμμα. Η λίστα των ονομάτων χαρακτηριστικών ξεκινά κάτω από τη γραμμή που τα χωρίζει από το όνομα της κλάσης (Εικ. 19, 20).

Το UML σάς επιτρέπει να εμφανίζετε πρόσθετες πληροφορίες σχετικά με τα χαρακτηριστικά. Στην εικόνα κλάσης, μπορείτε να καθορίσετε τον τύπο για κάθε τιμή χαρακτηριστικού. Οι πιθανοί τύποι περιλαμβάνουν συμβολοσειρά, float, ακέραιο, boolean και άλλους απαριθμημένους τύπους. Για να εμφανιστεί ένας τύπος, χρησιμοποιείται άνω και κάτω τελεία για να διαχωρίσει το όνομα του χαρακτηριστικού από τον τύπο του. Εδώ μπορείτε επίσης να καθορίσετε την προεπιλεγμένη τιμή του χαρακτηριστικού. Στο Σχ. Το Σχήμα 21 δείχνει αυτή τη μέθοδο ορισμού χαρακτηριστικών.

Ρύζι. 20. Τιμές χαρακτηριστικών κλάσης

brandName: String = "Laundatorium"

Όνομα μοντέλου: Συμβολοσειρά

Αριθμός σειράς: Συμβολοσειρά

χωρητικότητα: Ακέραιος

Ρύζι. 21. Τύποι χαρακτηριστικών και προεπιλεγμένες τιμές

Τύπος Enumαντιπροσωπεύει πληροφορίες που καθορίζονται από μια λίστα ονομασμένων τιμών. Ο τύπος Boolean απαριθμείται επίσης επειδή αποτελείται από τις τιμές true και false. Μπορείτε να ορίσετε τους δικούς σας απαριθμημένους τύπους (όπως Κατάσταση) που σχηματίζονται από τις τιμές "στερεό", "υγρό" και "αέριο".

Λειτουργίες

Λειτουργίαείναι κάτι που μπορεί να κάνει μια τάξη ή κάτι που μπορείτε να κάνετε εσείς (ή μια άλλη τάξη) με μια δεδομένη τάξη. Όπως το όνομα του χαρακτηριστικού, το όνομα της λειτουργίας γράφεται με πεζά γράμματα εάν είναι μία λέξη. Εάν το όνομα αποτελείται από πολλές λέξεις, συνδυάζονται και όλες οι λέξεις εκτός από την πρώτη γράφονται με κεφαλαίο. Η λίστα των λειτουργιών ξεκινά κάτω από τη γραμμή που διαχωρίζει τις λειτουργίες από τα χαρακτηριστικά (Εικ. 22).

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

Οι αναγραφόμενες πληροφορίες σχετικά με τη λειτουργία καλούνται υπογραφέςεπιχειρήσεις. Στο Σχ. 23 παρουσιάζει τις πράξεις της τάξης και της υπογραφή.

Ρύζι. 22. Λειτουργίες τάξης και υπογραφές τους

addClothes(C:String)

αφαιρέστε ρούχα (C:String)

addDetergent(D:Integer)

turnOn(): Boolean

Ρύζι. 23. Υπογραφές λειτουργίας τάξης

Εάν η υπάρχουσα λίστα χαρακτηριστικών και λειτουργιών είναι πολύ μεγάλη, μπορείτε να διευκρινίσετε τις πληροφορίες χρησιμοποιώντας ένα στερεότυπο. Στερεοτυπίαείναι ένας μηχανισμός επέκτασης UML που σας επιτρέπει να δημιουργείτε νέα στοιχεία λαμβάνοντας υπόψη τα χαρακτηριστικά του προβλήματος που επιλύεται. Το όνομα του στερεότυπου περικλείεται σε δύο ζεύγη γωνιακών αγκύλων. Σε μια λίστα χαρακτηριστικών, ένα στερεότυπο μπορεί να χρησιμοποιηθεί ως επικεφαλίδα για ένα συγκεκριμένο υποσύνολο χαρακτηριστικών (Εικόνα 24).

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

Ρύζι. 24. Θέτοντας στερεότυπα

Ευθύνες και περιορισμοί

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

Η εικόνα κλάσης παραθέτει τις ευθύνες της κάτω από την περιοχή λειτουργιών (Εικόνα 25).

"στοιχεία ταυτότητας"

"δεδομένα αυτοκινήτου"

"για σεντόνια"

"για το αυτοκίνητο"

Δασμός:

μαζέψτε βρώμικα σεντόνια στην είσοδο

και εκδώστε ένα καθαρό

στην έξοδο

Ρύζι. 25. Αρμοδιότητες τάξης

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

Ένας πιο επίσημος τρόπος επίλυσης του προβλήματος είναι η προσθήκη περιορισμούςως ελεύθερο κείμενο που περικλείεται σε σγουρά άγκιστρα. Αυτό το κείμενο καθορίζει έναν ή περισσότερους κανόνες για την κλάση στην οποία ανήκει. Ας υποθέσουμε ότι η κατηγορία WashingMachine θέλει να καθορίσει ότι η χωρητικότητα του τυμπάνου μπορεί να είναι μόνο 16, 18 ή 20 λίβρες (περιορίζοντας έτσι το χαρακτηριστικό χωρητικότητας). Στη συνέχεια, δίπλα στην εικόνα της τάξης πρέπει να γράψετε (χωρητικότητα = 16 ή 18 ή 20 λίβρες). Στο Σχ. Το Σχήμα 26 δείχνει πώς να το κάνετε αυτό.

Ρύζι. 26. Περιορισμοί τάξης

Σχόλια

Εκτός από τα χαρακτηριστικά, τις λειτουργίες, τις ευθύνες και τους περιορισμούς, πρόσθετες πληροφορίες για μια τάξη μπορούν να αναπαρασταθούν με τη μορφή σχολίων που επισυνάπτονται στην τάξη.

Τα σχόλια συνήθως συνδέονται με χαρακτηριστικά και λειτουργίες. Στο Σχ. 27 παρέχει ένα σχόλιο που αναφέρεται στο κυβερνητικό Πρότυπο για τον σχηματισμό αριθμών προϊόντων για αντικείμενα της κατηγορίας WashingMachine.

Ρύζι. 27. Τύποι χαρακτηριστικών και προεπιλεγμένες τιμές

Μαζί με το κείμενο, ένα σχόλιο μπορεί επίσης να περιέχει γραφικά αντικείμενα.

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

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

Σωματεία

Εάν οι τάξεις αλληλεπιδρούν εννοιολογικά μεταξύ τους, τότε μια τέτοια αλληλεπίδραση ονομάζεται σχέση.Το αρχικό μοντέλο παιχνιδιού μπάσκετ περιέχει πολλά παρόμοια παραδείγματα. Ας εξετάσουμε έναν συσχετισμό - μεταξύ του παίκτη και ομάδα. Μπορεί να χαρακτηριστεί από τη φράση "ένας παίκτης παίζει σε μια ομάδα" και εμφανίζεται ως γραμμή που συνδέει τις δύο κατηγορίες, με το όνομα της ένωσης (παίζει μέσα) ακριβώς πάνω από τη γραμμή. Για λόγους σαφήνειας, ένα γεμάτο τρίγωνο υποδεικνύει την κατεύθυνση της σχέσης. Στο Σχ. Το Σχήμα 28 δείχνει τον τρόπο απεικόνισης της συσχέτισης "Παίζει μέσα" μεταξύ ενός παίκτη και μιας ομάδας.

Ρύζι. 28. Συσχέτιση μεταξύ τάξεων

Όταν μια κλάση συσχετίζεται με μια άλλη, η καθεμία παίζει ρόλο σε αυτή τη συσχέτιση. Τέτοιοι ρόλοι μπορούν να εμφανίζονται στο διάγραμμα κάτω από τη γραμμή συσχέτισης κοντά στον προσδιορισμό της κλάσης που εκτελεί τον αντίστοιχο ρόλο. Στη σχέση μεταξύ ενός επαγγελματία παίκτη και μιας ομάδας, αυτοί οι ρόλοι ονομάζονται «υπάλληλος» και «εργοδότης». Στο Σχ. Το σχήμα 29 δείχνει πώς να απεικονίσετε αυτούς τους ρόλους.

Ρύζι. 29. Ο ρόλος της τάξης στο συνεταιρισμό

Η ένωση μπορεί να λειτουργήσει προς την άλλη κατεύθυνση: η ομάδα προσλαμβάνει παίκτες. Και οι δύο συσχετίσεις μπορούν να παρουσιαστούν στο ίδιο διάγραμμα, συνοδευόμενοι από ένα γεμάτο τρίγωνο του κατάλληλου προσανατολισμού (Εικ. 30).

Ρύζι. 30. Δύο συσχετισμοί μεταξύ τάξεων

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

Ρύζι. 31. Σύλλογοι πολλών τάξεων με μία

Περιορισμοί σύνδεσης

Μερικές φορές η συσχέτιση μεταξύ δύο τάξεων πρέπει να ικανοποιεί κάποιον κανόνα. Αυτός ο κανόνας είναι να τοποθετήσετε το όριο κοντά στη γραμμή συσχέτισης. Για παράδειγμα, ένας τραπεζικός υπάλληλος εξυπηρετεί πελάτες έναν προς έναν. Αυτό το γεγονός αντικατοπτρίζεται στο μοντέλο χρησιμοποιώντας μια φράση (με τη σειρά του) σε σγουρές αγκύλες κοντά στην κλάση Client για να αντικατοπτρίζει τον περιορισμό (Εικ. 32).

Ρύζι. 32. Περιορισμοί στο συνεταιρισμό

Ένας άλλος τύπος περιορισμού αντιπροσωπεύεται από μια σχέση OR, η οποία υποδεικνύεται από μια διακεκομμένη γραμμή που συνδέει δύο γραμμές συσχετίσεων με την ένδειξη (ή). Μοντέλο στο Σχ. Το 33 δείχνει έναν μαθητή που επιλέγει έναν προϋπολογισμό ή μια εμπορική μορφή σπουδών.

Ρύζι. 33. Ή σχέση μεταξύ δύο ενώσεων

Συνδέσεις

Μια συσχέτιση (όπως μια τάξη) χαρακτηρίζεται από την παρουσία περιπτώσεων. Αν φανταστούμε έναν συγκεκριμένο παίκτη να παίζει σε μια συγκεκριμένη ομάδα, ονομάζεται η σχέση «Παίζει σε». ανακοίνωση, που απεικονίζεται ως μια γραμμή που συνδέει δύο αντικείμενα. Το όνομα αυτής της σύνδεσης, όπως και το όνομα του αντικειμένου, είναι υπογραμμισμένο (Εικ. 34).

Ρύζι. 34. Η επικοινωνία ως στοιχείο συσχέτισης

Πολλαπλότητα

Η συσχέτιση μεταξύ των αντικειμένων Player και Team προϋποθέτει ότι οι δύο κλάσεις βρίσκονται σε σχέση ένα προς ένα. Η κοινή λογική υποδηλώνει ότι αυτή δεν είναι η μόνη δυνατή σχέση. Στην ομάδα μπάσκετ είναι πέντε άτομα, χωρίς να υπολογίζονται οι έφεδροι παίκτες. Η Ένωση Includes πρέπει να λάβει αυτό το γεγονός υπόψη. Από την άλλη πλευρά, ένας παίκτης μπορεί να παίξει μόνο σε μία ομάδα, κάτι που πρέπει να λαμβάνεται υπόψη στην ένωση «Παίζει σε».

Ρύζι. 35. Επικοινωνιακή πολλαπλότητα

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

Ρύζι. 36. Πιθανές τιμές πολλαπλότητας

Αυτό το παράδειγμα δείχνει μόνο μία από τις επιλογές πολλαπλότητας. Άλλες τιμές πολλαπλότητας είναι επίσης δυνατές. Μια τάξη μπορεί να συσχετιστεί με μια άλλη με διάφορους τρόπους: "ένα προς ένα", "ένα προς πολλά", "ένα σε πολλά", "ένα σε ένα περιορισμένο διάστημα" (για παράδειγμα, "ένα προς ένα 5..10"), "ένα σε μια δεδομένη ποσότητα" (όπως στο υπό εξέταση παράδειγμα) ή "ένα σε ένα σύνολο" (για παράδειγμα, "ένα προς 9 ή 10").

Το σύμβολο του αστερίσκου (*) χρησιμοποιείται για να αναπαραστήσει την έννοια "πολλά" στο UML. Το λογικό OR αντιπροσωπεύεται από δύο συμβολισμούς: δύο τελείες (1. . *), που σημαίνει "μία ή περισσότερες" ή ένα κόμμα (5,10), που σημαίνει "5 ή 10". Στο Σχ. Το Σχήμα 36 δείχνει εικόνες πιθανών τιμών πολλαπλότητας.

Αν η κλάση Α είναι σε σχέση ένα προς 0 ή 1 με την κατηγορία Β, τότε καλείται η τελευταία προαιρετικόςγια την Α τάξη.

Προκριματικός Σύλλογος

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

Στο UML, οι πληροφορίες αναγνώρισης καλούνται καθιστών αρμόδιον.Υποδεικνύεται από ένα μικρό ορθογώνιο δίπλα στον προσδιορισμό της κλάσης που εκτελεί την αναζήτηση (Εικ. 37). Αυτή η εικόνα μειώνει αποτελεσματικά την πολλαπλότητα ενός προς πολλά στην περίπτωση ενός προς ένα.

Ρύζι. 37. Προκριματικός Σύλλογος

Ανακλαστικοί συσχετισμοί

Μερικές φορές μια τάξη συνδέεται με τον εαυτό της. Αυτή η εκδοχή της σχέσης, που ονομάζεται αναστοχαστική συσχέτιση,μπορεί να προκύψει όταν αντικείμενα μιας κλάσης εκτελούν πολλαπλούς ρόλους. Το άτομο στο αυτοκίνητο μπορεί να είναι επιβάτης ή οδηγός. Ως οδηγός, μεταφέρει έναν ή περισσότερους επιβάτες (ή κανέναν). Στο διάγραμμα, αυτή η περίπτωση αντιπροσωπεύεται από μια γραμμή συσχέτισης που οδηγεί από το ορθογώνιο κλάσης στο ίδιο ορθογώνιο. Στη γραμμή συσχέτισης, όπως και πριν, υποδεικνύονται οι ρόλοι, το όνομα του συλλόγου, η κατεύθυνση και η πολλαπλότητά του. Ένα παράδειγμα τέτοιου συσχετισμού φαίνεται στο Σχ. 38.

Ρύζι. 38. Ανακλαστικός συσχετισμός

Κληρονομικότητα και γενίκευση

Ένα από τα χαρακτηριστικά της αντικειμενοστρεφούς προσέγγισης είναι ότι πληροί μια από τις γνωστές πτυχές της καθημερινής ζωής: αν γνωρίζετε κάτι για μια κατηγορία, μπορείτε να μεταφέρετε αυτόματα αυτή τη γνώση σε άλλες κατηγορίες. Εάν γνωρίζετε ότι ένα αντικείμενο είναι οικιακή συσκευή, τότε γνωρίζετε ήδη ότι έχει διακόπτη, όνομα κατασκευαστή και αριθμό προϊόντος. Αν είναι γνωστό ότι ένα αντικείμενο είναι ζώο, τότε είναι ξεκάθαρο εκ των προτέρων ότι τρώει, κοιμάται, γεννιέται και κινείται στο διάστημα. Με μια πιο λεπτομερή ανάλυση, μπορεί να καταρτιστεί μια λίστα με άλλα χαρακτηριστικά και λειτουργίες.

Στην αντικειμενοστραφή προσέγγιση, αυτή η κατάσταση καλείται κληρονομία.Ο όρος UML για κληρονομικότητα είναι γενίκευση.Μια κλάση (παιδί ή υποκλάση) μπορεί να κληρονομήσει τα χαρακτηριστικά και τις λειτουργίες μιας άλλης (γονική κλάση ή υπερκλάση). Η τάξη των γονέων είναι πιο γενική από την τάξη των παιδιών.

Όσον αφορά τη γενίκευση, μπορούμε να πούμε ότι ένα παιδί είναι σε θέση να αντικαταστήσει έναν γονέα. Με άλλα λόγια, όπου εμφανίζεται ένας γονιός, μπορεί να εμφανιστεί ένα παιδί, και το αντίστροφο δεν ισχύει.

Η ιεραρχία κληρονομικότητας δεν περιορίζεται σε δύο επίπεδα: μια θυγατρική τάξη μπορεί να λειτουργήσει ως γονική τάξη άλλης θυγατρικής τάξης. Η τάξη των Θηλαστικών είναι μια παιδική τάξη της τάξης των Ζώων και μια γονική τάξη της τάξης των Αλόγων.

Στο UML, η κληρονομικότητα αντιπροσωπεύεται από μια γραμμή που συνδέει μια γονική κλάση με μια θυγατρική κλάση. Το τέλος της γραμμής που σχετίζεται με τη γονική κλάση σημειώνεται με ένα ανοιχτό τρίγωνο που δείχνει προς τη γονική κλάση. Αυτή η σύνδεση αντιστοιχεί στη σχέση – « είναι είδος».θηλαστικό" είναι είδος"ζώο, άλογο είναι είδος"θηλαστικό ζώο. Στο Σχ. Το Σχήμα 39 παρουσιάζει την προηγουμένως περιγραφείσα ιεραρχία κληρονομικότητας και τις πρόσθετες κλάσεις. Σημειώστε τη γραφική αναπαράσταση της κατάστασης όπου μια γονική τάξη έχει πολλές θυγατρικές τάξεις. Αυτός ο σχεδιασμός σας επιτρέπει να ξεφορτώσετε το διάγραμμα. Θα πρέπει να σημειωθεί ότι η UML δεν απαγορεύει τη σχεδίαση όλων των γραμμών και τριγώνων χωρίς εξαίρεση και δεν απαιτεί τον καθορισμό κληρονομημένων χαρακτηριστικών και λειτουργιών σε ορθογώνια υποκλάσεων, επειδή αντιπροσωπεύονται ήδη στη σημειογραφία υπερκλάσης.

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

Μια θυγατρική τάξη διακρίνεται συχνά από την παρουσία πρόσθετων χαρακτηριστικών και λειτουργιών. Για παράδειγμα, ένα θηλαστικό έχει γούνα και παράγει γάλα, αλλά τέτοια ιδιότητα και λειτουργία δεν υπάρχουν στην κατηγορία των Ζώων.

Μια τάξη μπορεί να μην έχει γονέα. Σε αυτή την περίπτωση ονομάζεται βασικόςή κλάση ρίζας.Μια τάξη μπορεί επίσης να μην έχει θυγατρική τάξη, οπότε καλείται κλάση φύλλων.Εάν μια τάξη έχει μόνο έναν γονέα, τότε λέγεται ότι είναι μονόκλινοκληρονομία, και αν υπάρχουν πολλά - Οπολλαπλή κληρονομιά.

Ρύζι. 39. Ιεραρχία κληρονομικότητας

Εξαρτήσεις

Ένας άλλος τύπος σχέσης είναι όταν μια τάξη χρησιμοποιεί μια άλλη. Λέγεται εθισμός.Η πιο συνηθισμένη περίπτωση εξάρτησης είναι η χρήση μιας κλάσης στην υπογραφή λειτουργίας μιας άλλης κλάσης.

Ας υποθέσουμε ότι πρέπει να σχεδιάσετε ένα σύστημα που εμφανίζει φόρμες που συμπληρώνονται από υπαλλήλους σε μια οθόνη οθόνης. Χρησιμοποιήστε το μενού για να επιλέξετε τη φόρμα που θα συμπληρώσετε. Το σύστημα θα έχει δύο κατηγορίες: Σύστημα και Μορφή. Μεταξύ των πράξεων της κλάσης System υπάρχει η πράξη displayForm (f: Form). Η φόρμα που εμφανίζει το σύστημα πιθανότατα εξαρτάται από το ποια παρουσία της κλάσης Form έχει επιλέξει ο χρήστης. Στο UML, αυτή η σχέση αντιπροσωπεύεται από μια διακεκομμένη γραμμή που κατευθύνεται μακριά από την εξαρτημένη κλάση (Εικόνα 40).

Ρύζι. 40. Απεικόνιση εθισμού

Όλα τα διαγράμματα UML μπορούν να χωριστούν σε δύο ομάδες, η πρώτη από τις οποίες είναι τα γενικά διαγράμματα. Τα γενικά διαγράμματα είναι πρακτικά ανεξάρτητα από το αντικείμενο της μοντελοποίησης και μπορούν να χρησιμοποιηθούν σε οποιοδήποτε έργο λογισμικού χωρίς να λαμβάνεται υπόψη η θεματική περιοχή, η περιοχή λύσης κ.λπ.

1.5.1. Διάγραμμα χρήσης

Διάγραμμα χρήσης(διάγραμμα περίπτωσης χρήσης) είναι η πιο γενική αναπαράσταση του λειτουργικού σκοπού του συστήματος.

Το διάγραμμα χρήσης έχει σχεδιαστεί για να απαντά στην κύρια ερώτηση μοντελοποίησης: τι κάνει το σύστημα στον έξω κόσμο;

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

  • συσχέτιση μεταξύ ηθοποιού και περίπτωσης χρήσης 3 ;
  • γενίκευση μεταξύ των παραγόντων 4 ;
  • γενίκευση μεταξύ περιπτώσεων χρήσης 5 ;
  • εξαρτήσεις (διάφορων τύπων) μεταξύ περιπτώσεων χρήσης 6.

Ένα διάγραμμα χρήσης, όπως κάθε άλλο διάγραμμα, μπορεί να περιέχει σχόλια 7 . Επιπλέον, αυτό συνιστάται ιδιαίτερα για τη βελτίωση της αναγνωσιμότητας των διαγραμμάτων.

Τα κύρια στοιχεία σημειογραφίας που χρησιμοποιούνται σε ένα διάγραμμα χρήσης φαίνονται παρακάτω. Λεπτομερής περιγραφή δίνεται στην ενότητα 2.2.

1.5.2. Διάγραμμα τάξης

Διάγραμμα τάξης(διάγραμμα τάξης) είναι ο κύριος τρόπος περιγραφής της δομής ενός συστήματος.

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

Ένα διάγραμμα κλάσεων χρησιμοποιεί έναν βασικό τύπο οντότητας: κλάσεις 1 (συμπεριλαμβανομένων πολυάριθμων ειδικών περιπτώσεων κλάσεων: διεπαφές, πρωτόγονοι τύποι, κλάσεις συσχέτισης και πολλοί άλλοι), μεταξύ των οποίων καθιερώνονται οι ακόλουθοι βασικοί τύποι σχέσεων:

  • συσχέτιση μεταξύ 2 τάξεων (με πολλές πρόσθετες λεπτομέρειες).
  • γενίκευση μεταξύ των κατηγοριών 3.
  • εξαρτήσεις (διάφορων τύπων) μεταξύ κλάσεων 4 και μεταξύ κλάσεων και διεπαφών.

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

1.5.3. Διάγραμμα μηχανής

Διάγραμμα μηχανής(διάγραμμα μηχανής κατάστασης) είναι ένας από τους τρόπους λεπτομερούς περιγραφής της συμπεριφοράς στο UML με βάση τη ρητή αναγνώριση καταστάσεων και την περιγραφή των μεταβάσεων μεταξύ καταστάσεων.

Στην ουσία, τα διαγράμματα αυτόματων, όπως υποδηλώνει το όνομα, είναι ένα γράφημα μεταβάσεων καταστάσεων (βλ. Κεφάλαιο 4) γεμάτο με πολλές πρόσθετες λεπτομέρειες και λεπτομέρειες.

Σε ένα αυτόματο διάγραμμα, χρησιμοποιείται ένας κύριος τύπος οντότητας - καταστάσεις 1 και ένας τύπος σχέσης - μεταβάσεις 2, αλλά και για τα δύο ορίζονται πολλές ποικιλίες, ειδικές περιπτώσεις και πρόσθετες σημειώσεις. Δεν έχει νόημα να τα απαριθμήσουμε όλα σε μια εισαγωγική ανασκόπηση.

Μια λεπτομερής περιγραφή όλων των παραλλαγών των διαγραμμάτων αυτόματου δίνεται στην ενότητα 4.2 και το παρακάτω σχήμα δείχνει μόνο τα κύρια στοιχεία της σημείωσης που χρησιμοποιούνται στο διάγραμμα αυτόματων.

1.5.4. Διάγραμμα δραστηριότητας

Διάγραμμα δραστηριότητας(διάγραμμα δραστηριότητας) - ένας τρόπος περιγραφής της συμπεριφοράς που βασίζεται στον καθορισμό των ροών ελέγχου και των ροών δεδομένων.

Ένα διάγραμμα δραστηριότητας είναι ένας άλλος τρόπος για να περιγραφεί συμπεριφορά που θυμίζει οπτικά ένα παλιό καλό διάγραμμα ροής αλγορίθμων. Ωστόσο, λόγω της εκσυγχρονισμένης σημείωσης που συνάδει με την αντικειμενοστραφή προσέγγιση και το πιο σημαντικό, λόγω της νέας σημασιολογικής συνιστώσας (ελεύθερη ερμηνεία των δικτύων Petri), το διάγραμμα δραστηριότητας UML είναι ένα ισχυρό εργαλείο για την περιγραφή της συμπεριφοράς του συστήματος.

Το διάγραμμα δραστηριότητας χρησιμοποιεί έναν κύριο τύπο οντότητας - ενέργεια 1, και έναν τύπο σχέσης - μεταβάσεις 2 (μεταφορές ελέγχου και δεδομένων). Χρησιμοποιούνται επίσης κατασκευές όπως περόνες, συγχωνεύσεις, συνδέσεις, κλάδοι 3, οι οποίες είναι παρόμοιες με οντότητες, αλλά στην πραγματικότητα δεν είναι, αλλά αντιπροσωπεύουν γραφική μέθοδοςεικόνες ορισμένων ειδικών περιπτώσεων σχέσεων πολλαπλών τόπων. Η σημασιολογία των στοιχείων του διαγράμματος δραστηριότητας αναλύεται λεπτομερώς στο Κεφάλαιο 4. Τα κύρια στοιχεία σημειογραφίας που χρησιμοποιούνται σε ένα διάγραμμα δραστηριότητας φαίνονται παρακάτω.

1.5.5. Διάγραμμα ακολουθίας

Διάγραμμα ακολουθίας(διάγραμμα ακολουθίας) είναι ένας τρόπος περιγραφής της συμπεριφοράς ενός συστήματος που βασίζεται στην ένδειξη της ακολουθίας των μεταδιδόμενων μηνυμάτων.

Στην πραγματικότητα, ένα διάγραμμα ακολουθίας είναι μια εγγραφή του πρωτοκόλλου μιας συγκεκριμένης συνεδρίας του συστήματος (ή ενός τμήματος ενός τέτοιου πρωτοκόλλου). Στον αντικειμενοστραφή προγραμματισμό, το πιο σημαντικό πράγμα στο χρόνο εκτέλεσης είναι η μετάδοση μηνυμάτων μεταξύ αντικειμένων που επικοινωνούν. Είναι η ακολουθία αποστολής μηνυμάτων που εμφανίζεται σε αυτό το διάγραμμα, εξ ου και το όνομα.

Ένα διάγραμμα ακολουθίας χρησιμοποιεί έναν κύριο τύπο οντότητας - στιγμιότυπα αλληλεπιδρώντων ταξινομητών 1 (κυρίως κλάσεων, εξαρτημάτων και δρώντων) και έναν τύπο σχέσης - συνδέσεις 2 κατά μήκος των οποίων ανταλλάσσονται μηνύματα 3. Υπάρχουν διάφοροι τρόποι αποστολής μηνυμάτων, οι οποίοι σε γραφικό συμβολισμό διαφέρουν ως προς τον τύπο του βέλους που αντιστοιχεί στη σχέση.

Μια σημαντική πτυχή ενός διαγράμματος ακολουθίας είναι να δείχνει καθαρά το πέρασμα του χρόνου. Σε αντίθεση με άλλους τύπους διαγραμμάτων, εκτός ίσως από διαγράμματα συγχρονισμού, σε ένα διάγραμμα ακολουθίας δεν είναι μόνο η παρουσία γραφικούς συνδέσμουςμεταξύ των στοιχείων, αλλά και τη σχετική θέση των στοιχείων στο διάγραμμα. Δηλαδή, υποτίθεται ότι υπάρχει ένας (αόρατος) άξονας χρόνου, από προεπιλογή που κατευθύνεται από πάνω προς τα κάτω, και το μήνυμα που αποστέλλεται αργότερα σχεδιάζεται παρακάτω.

Ο άξονας του χρόνου μπορεί να κατευθυνθεί οριζόντια, οπότε ο χρόνος θεωρείται ότι ρέει από αριστερά προς τα δεξιά.

Το παρακάτω σχήμα δείχνει τη βασική σημείωση που χρησιμοποιείται σε ένα διάγραμμα ακολουθίας. Για τον προσδιορισμό των ίδιων των αντικειμένων που αλληλεπιδρούν, χρησιμοποιείται μια τυπική σημείωση - ένα ορθογώνιο με το όνομα της παρουσίας του ταξινομητή. Η διακεκομμένη γραμμή που βγαίνει από αυτήν ονομάζεται γραμμή ζωής 4. Αυτό δεν είναι μια αναπαράσταση μιας σχέσης σε ένα μοντέλο, αλλά ένα γραφικό σχόλιο που έχει σχεδιαστεί για να καθοδηγήσει τον αναγνώστη του διαγράμματος στη σωστή κατεύθυνση. Οι φιγούρες με τη μορφή στενών λωρίδων που τοποθετούνται πάνω στη γραμμή ζωής δεν είναι επίσης εικόνες των οντοτήτων που μοντελοποιούνται. Αυτό είναι ένα γραφικό σχόλιο που δείχνει τις χρονικές περιόδους κατά τις οποίες το αντικείμενο κατέχει τη ροή ελέγχου (εμφάνιση εκτέλεσης) 5 ή, με άλλα λόγια, λαμβάνει χώρα η ενεργοποίηση του αντικειμένου. Τα βήματα συνδυασμένου τμήματος 6 επιτρέπουν στο διάγραμμα ακολουθίας να αντικατοπτρίζει τις αλγοριθμικές πτυχές του πρωτοκόλλου αλληλεπίδρασης. Για άλλες λεπτομέρειες σχετικά με τη σημειογραφία του διαγράμματος ακολουθίας, δείτε το Κεφάλαιο 4.

1.5.6. Διάγραμμα επικοινωνίας

Διάγραμμα επικοινωνίας(διάγραμμα επικοινωνίας) είναι ένας τρόπος περιγραφής της συμπεριφοράς που είναι σημασιολογικά ισοδύναμος με ένα διάγραμμα ακολουθίας.

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

Έτσι, στο διάγραμμα επικοινωνίας, καθώς και στο διάγραμμα ακολουθίας, χρησιμοποιείται ένας κύριος τύπος οντότητας - περιπτώσεις αλληλεπιδρώντων ταξινομητών 1 και ένας τύπος σχέσης - συνδέσεις 2.

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

Το σχήμα δείχνει τα κύρια στοιχεία σημειογραφίας που χρησιμοποιούνται σε ένα διάγραμμα επικοινωνίας. Για τον προσδιορισμό των ίδιων των αντικειμένων που αλληλεπιδρούν, χρησιμοποιείται μια τυπική σημείωση - ένα ορθογώνιο με το όνομα της παρουσίας του ταξινομητή. Η σχετική θέση των στοιχείων στο διάγραμμα συνεργασίας δεν έχει σημασία - μόνο οι συνδέσεις (τις περισσότερες φορές περιπτώσεις συσχετίσεων) κατά τις οποίες μεταδίδονται τα μηνύματα 3 είναι σημαντικές. Η ιεραρχική δεκαδική αρίθμηση χρησιμοποιείται για την εμφάνιση της σειράς των μηνυμάτων με την πάροδο του χρόνου.

1.5.7. Διάγραμμα συνιστωσώνΔιάγραμμα συνιστωσών

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

  • υλοποιήσεις μεταξύ στοιχείων και διεπαφών (ένα στοιχείο υλοποιεί μια διεπαφή).
  • εξαρτήσεις μεταξύ στοιχείων και διεπαφών (το στοιχείο χρησιμοποιεί τη διεπαφή) 3.

Το σχήμα δείχνει τα κύρια στοιχεία της σημειογραφίας που χρησιμοποιούνται σε ένα διάγραμμα συνιστωσών. Αναλυτική περιγραφή δίνεται στο Κεφάλαιο 3.

1.5.8. Διάγραμμα τοποθέτησης

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

Έτσι, σε ένα διάγραμμα τοποθέτησης, σε σύγκριση με ένα διάγραμμα συνιστωσών, προστίθενται δύο τύποι οντοτήτων: το artifact 1, το οποίο είναι μια υλοποίηση του στοιχείου 2 και του κόμβου 3 (μπορεί να είναι είτε ένας ταξινομητής που περιγράφει τον τύπο του κόμβου είτε μια συγκεκριμένη περίπτωση), καθώς και τη σχέση συσχέτισης μεταξύ των κόμβων 4, δείχνοντας ότι οι κόμβοι συνδέονται φυσικά κατά το χρόνο εκτέλεσης.

Το σχήμα δείχνει τα κύρια στοιχεία της σημειογραφίας που χρησιμοποιούνται σε ένα διάγραμμα διάταξης. Για να δείξουμε ότι μια οντότητα είναι μέρος μιας άλλης, είτε εφαρμόζεται μια σχέση εξάρτησης "ανάπτυξης" 5 ή τοποθετείται ένα σχήμα μιας οντότητας μέσα σε ένα σχήμα άλλης οντότητας 6 . Αναλυτική περιγραφή του διαγράμματος δίνεται στο Κεφάλαιο 3.

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

Η σημείωση UML παρέχει άφθονες ευκαιρίες για εμφάνιση πρόσθετων πληροφοριών (αφηρημένες λειτουργίες και κλάσεις, στερεότυπα, δημόσιες και ιδιωτικές μέθοδοι, λεπτομερείς διεπαφές, παραμετροποιημένες κλάσεις). Σε αυτήν την περίπτωση, είναι δυνατή η χρήση γραφικών εικόνων για συσχετίσεις και τις συγκεκριμένες ιδιότητές τους, όπως η σχέση συνάθροισης, όταν άλλες κλάσεις μπορούν να είναι στοιχεία μιας κλάσης.

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

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

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

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

Μια κλάση στο UML αναφέρεται σε ένα σύνολο αντικειμένων που μοιράζονται την ίδια δομή, συμπεριφορά και σχέσεις με αντικείμενα από άλλες κλάσεις. Γραφικά, η κλάση απεικονίζεται ως ένα ορθογώνιο, το οποίο μπορεί επιπλέον να χωριστεί με οριζόντιες γραμμές σε τμήματα ή τμήματα (Εικ. 5.1). Αυτές οι ενότητες μπορούν να περιλαμβάνουν το όνομα της κλάσης, τα χαρακτηριστικά (μεταβλητές) και τις λειτουργίες (μέθοδοι).

Ρύζι. 5.1.Γραφική αναπαράσταση τάξης σε διάγραμμα τάξης

Ένα υποχρεωτικό στοιχείο του χαρακτηρισμού μιας κλάσης είναι το όνομά της. Επί αρχικά στάδιαΚατά την ανάπτυξη ενός διαγράμματος, μεμονωμένες κατηγορίες μπορούν να υποδεικνύονται με ένα απλό ορθογώνιο που υποδεικνύει μόνο το όνομα της αντίστοιχης κλάσης (Εικ. 5.1, α). Καθώς αναπτύσσονται μεμονωμένα στοιχεία του διαγράμματος, οι περιγραφές κλάσεων συμπληρώνονται με χαρακτηριστικά (Εικ. 5.1, β) και λειτουργίες (Εικ. 5.1, γ).

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

Ακόμα κι αν το τμήμα χαρακτηριστικών και λειτουργιών είναι κενό, επισημαίνεται στη σημείωση κλάσης οριζόντια γραμμήγια να διακρίνει αμέσως την κλάση από άλλα στοιχεία UML. Παραδείγματα γραφικής αναπαράστασης κλάσεων σε διάγραμμα κλάσεων φαίνονται στο Σχήμα. 5.2. Στην πρώτη περίπτωση, για την κλάση «Ορθογώνιο» (Εικ. 5.2, α), υποδεικνύονται μόνο τα χαρακτηριστικά της - σημεία στο επίπεδο συντεταγμένων που καθορίζουν τη θέση της. Για την κλάση «Παράθυρο» (Εικ. 5.2, β), υποδεικνύονται μόνο οι λειτουργίες της, η ενότητα χαρακτηριστικών παραμένει κενή. Για την κλάση «Λογαριασμός» (Εικ. 5.2, γ), εμφανίζεται επιπλέον μια τέταρτη ενότητα, η οποία υποδηλώνει εξαίρεση - άρνηση επεξεργασίας εκπρόθεσμης πιστωτικής κάρτας.


Εικ.5.2.Παραδείγματα γραφικής αναπαράστασης τάξεων σε διάγραμμα

Όνομα τάξης

Το όνομα της κλάσης πρέπει να είναι μοναδικό μέσα στο πακέτο, το οποίο περιγράφεται από κάποια συλλογή διαγραμμάτων κλάσης (πιθανόν ένα μεμονωμένο διάγραμμα). Υποδεικνύεται στο πρώτο επάνω τμήμα του ορθογωνίου. Εκτός από τον γενικό κανόνα για την ονομασία στοιχείων UML, το όνομα της κλάσης γράφεται στο κέντρο της ενότητας ονόματος με έντονη γραμματοσειρά και πρέπει να ξεκινά με κεφαλαίο γράμμα. Συνιστάται να χρησιμοποιείτε ουσιαστικά ως ονόματα κλάσεων, γραμμένα χωρίς κενά για πρακτικούς λόγους. Πρέπει να θυμόμαστε ότι είναι τα ονόματα των κλάσεων που σχηματίζουν το λεξικό τομέα στο OOAP.

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

Παραδείγματα ονομάτων τάξης μπορεί να είναι ουσιαστικά όπως "Εργαζόμενος", "Εταιρεία", "Διευθυντής", "Πελάτης", "Πωλητής", "Διευθυντής", "Γραφείο" και πολλά άλλα που σχετίζονται άμεσα με την μοντελοποιημένη θεματική περιοχή και λειτουργικά σκοπό του σχεδιασμένου συστήματος.

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

Χαρακτηριστικά τάξης

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

<квантор видимости><имя атрибута>[πολλαπλότητα]:

<тип атрибута> = <исходное значение>(συμβολοσειρά ιδιοκτησίας)

Ο ποσοτικός δείκτης ορατότητας μπορεί να λάβει μία από τις τρεις πιθανές τιμές και, κατά συνέπεια, εμφανίζεται χρησιμοποιώντας ειδικούς χαρακτήρες:

Το σύμβολο "+" υποδηλώνει ένα χαρακτηριστικό με ένα εύρος του τύπου public. Ένα χαρακτηριστικό με αυτό το εύρος είναι προσβάσιμο ή ορατό από οποιαδήποτε άλλη κλάση στο πακέτο στο οποίο ορίζεται το διάγραμμα.

Το σύμβολο "#" υποδηλώνει ένα χαρακτηριστικό με προστατευμένο εύρος τύπου. Ένα χαρακτηριστικό με αυτό το εύρος δεν είναι διαθέσιμο ή αόρατο σε όλες τις κλάσεις εκτός από τις υποκλάσεις αυτής της κλάσης.

Τέλος, το σύμβολο "-" υποδηλώνει ένα χαρακτηριστικό με εύρος τύπου private. Ένα χαρακτηριστικό με αυτό το εύρος δεν είναι διαθέσιμο ή αόρατο για όλες τις κλάσεις χωρίς εξαίρεση.

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

Ένα όνομα χαρακτηριστικού είναι μια συμβολοσειρά κειμένου που χρησιμοποιείται ως αναγνωριστικό για το αντίστοιχο χαρακτηριστικό και επομένως πρέπει να είναι μοναδικό σε μια δεδομένη κλάση. Το όνομα του χαρακτηριστικού είναι το μόνο απαραίτητο στοιχείο της σύνταξης του χαρακτηριστικού.

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

[lower_border1 .. upper_border1, down_border2.. upper_border2, ..., down_border .. upper_border],

όπου το κατώτερο όριο και το άνω όριο είναι θετικοί ακέραιοι, κάθε ζεύγος των οποίων χρησιμεύει για να υποδηλώσει ένα ξεχωριστό κλειστό διάστημα ακεραίων των οποίων το κατώτερο (άνω όριο) είναι ίσο με την τιμή κατώτερο όριο (άνω_όριο). Γενικά, αυτή η σύμβαση πολλαπλότητας αντιστοιχεί στη θεωρητική ένωση συνόλων των αντίστοιχων διαστημάτων. Μπορεί να χρησιμοποιηθεί ως upper_bound ιδιαίτερο χαρακτήρα"*" που σημαίνει αυθαίρετο θετικό ακέραιο. Με άλλα λόγια, αυτό σημαίνει ότι η τιμή πολλαπλότητας του αντίστοιχου χαρακτηριστικού είναι απεριόριστη από πάνω.

Οι τιμές πολλαπλότητας από το διάστημα ακολουθούν με μονότονα αυξανόμενη σειρά χωρίς να παρακάμπτονται μεμονωμένοι αριθμοί που βρίσκονται μεταξύ του κάτω και του άνω ορίου. Σε αυτήν την περίπτωση, τηρείται ο ακόλουθος κανόνας: τα αντίστοιχα κάτω και άνω όρια των διαστημάτων περιλαμβάνονται στην τιμή πολλαπλότητας. Εάν ένας μόνος αριθμός καθορίζεται ως πολλαπλότητα, τότε η πολλαπλότητα του χαρακτηριστικού θεωρείται ότι είναι ίση με αυτόν τον αριθμό. Εάν καθοριστεί ένα μόνο σύμβολο «*», αυτό σημαίνει ότι η πολλαπλότητα του χαρακτηριστικού μπορεί να είναι ένας αυθαίρετος θετικός ακέραιος ή μηδέν.

Ως παράδειγμα, εξετάστε τις ακόλουθες επιλογές για τον καθορισμό της πολλαπλότητας των χαρακτηριστικών.

Σημαίνει ότι η πολλαπλότητα του χαρακτηριστικού μπορεί να πάρει την τιμή 0 ή 1. Σε αυτήν την περίπτωση, 0 σημαίνει ότι δεν υπάρχει τιμή για αυτό το χαρακτηριστικό.

Σημαίνει ότι η πολλαπλότητα του χαρακτηριστικού μπορεί να λάβει οποιαδήποτε θετική ακέραια τιμή μεγαλύτερη ή ίση με 0. Αυτή η πολλαπλότητα μπορεί να γραφτεί πιο σύντομη ως απλό σύμβολο - [*].

Σημαίνει ότι η πολλαπλότητα του χαρακτηριστικού μπορεί να πάρει οποιαδήποτε θετική ακέραια τιμή μεγαλύτερη ή ίση με 1.

Σημαίνει ότι η πολλαπλότητα του χαρακτηριστικού μπορεί να πάρει οποιαδήποτε τιμή από τους αριθμούς: 1, 2, 3, 4, 5.

Σημαίνει ότι η πολλαπλότητα του χαρακτηριστικού μπορεί να πάρει οποιαδήποτε τιμή από τους αριθμούς: 1, 2, 3, 5, 7.

Σημαίνει ότι η πολλαπλότητα του χαρακτηριστικού μπορεί να πάρει οποιαδήποτε τιμή από τους αριθμούς: 1, 2, 3, 7, 8, 9, 10.

Σημαίνει ότι η πολλαπλότητα του χαρακτηριστικού μπορεί να πάρει οποιαδήποτε τιμή από τους αριθμούς: 1, 2, 3, καθώς και οποιαδήποτε θετική ακέραια τιμή μεγαλύτερη ή ίση με 7.

Εάν το χαρακτηριστικό πολλαπλότητα δεν έχει καθοριστεί, τότε η προεπιλεγμένη τιμή του είναι 1..1, δηλαδή ακριβώς 1.

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

Μπορούν να δοθούν τα ακόλουθα παραδείγματα για τον καθορισμό των ονομάτων και των τύπων των χαρακτηριστικών κλάσης:

Χρώμα: Χρώμα – εδώ το χρώμα είναι το όνομα του χαρακτηριστικού, το Χρώμα είναι το όνομα του τύπου αυτού του χαρακτηριστικού. Η εν λόγω καταχώρηση μπορεί να ορίσει ένα παραδοσιακά χρησιμοποιούμενο μοντέλο RGB (κόκκινο, πράσινο, μπλε) για την αναπαράσταση του χρώματος. Σε αυτήν την περίπτωση, το όνομα του τύπου Color χαρακτηρίζει με ακρίβεια τη σημασιολογική κατασκευή που χρησιμοποιείται στις περισσότερες γλώσσες προγραμματισμού για την αναπαράσταση του χρώματος.

Employee_name: Συμβολοσειρά – εδώ υπάλληλος_όνομα είναι το όνομα ενός χαρακτηριστικού που χρησιμεύει για να αντιπροσωπεύει πληροφορίες σχετικά με το όνομα, και πιθανώς το πατρώνυμο, ενός συγκεκριμένου υπαλλήλου. Ο τύπος χαρακτηριστικού String (String) υποδηλώνει το γεγονός ότι ξεχωριστό νόημαΤο όνομα είναι μια σειρά κειμένου με μία ή δύο λέξεις (για παράδειγμα, "Kirill" ή "Dmitry Ivanovich"). Δεδομένου ότι πολλές γλώσσες προγραμματισμού έχουν τύπο δεδομένων String, η χρήση του αντίστοιχου αγγλικού όρου δεν προκαλεί σύγχυση στους περισσότερους προγραμματιστές. Ωστόσο, αν και στη γλώσσα UML όλοι οι όροι δίνονται σε αγγλική αναπαράσταση, η χρήση του χαρακτηριστικού String ως τύπου σε αυτήν την περίπτωση δεν αποκλείεται και καθορίζεται μόνο για λόγους ευκολίας.

Visibility:Boolean – εδώ ορατότητα είναι το όνομα μιας αφηρημένης ιδιότητας (τα πλάγια γράμματα δεν είναι τυχαία) που μπορεί να χαρακτηρίσει την παρουσία μιας οπτικής αναπαράστασης της αντίστοιχης κλάσης στην οθόνη της οθόνης. Σε αυτήν την περίπτωση, ο τύπος Boolean σημαίνει ότι οι πιθανές τιμές για αυτό το χαρακτηριστικό είναι μία από τις δύο λογικές τιμές: true ή false. Σε αυτήν την περίπτωση, η πραγματική τιμή μπορεί να αντιστοιχεί στην παρουσία μιας γραφικής εικόνας στην οθόνη της οθόνης και η ψευδής τιμή μπορεί να αντιστοιχεί στην απουσία της, η οποία υποδεικνύεται επιπλέον στο επεξηγηματικό κείμενο. Δεδομένου ότι η πολλαπλότητα του χαρακτηριστικού ορατότητας δεν έχει καθοριστεί, παίρνει μια προεπιλεγμένη τιμή 1. Σε αυτήν την περίπτωση, το αγγλικό όνομα του τύπου χαρακτηριστικού δικαιολογείται πλήρως από την παρουσία του αντίστοιχου βασικός τύποςσε γλώσσες προγραμματισμού. Η αφηρημένη φύση ενός δεδομένου χαρακτηριστικού υποδεικνύεται με πλάγιο κείμενο στην καταχώριση χαρακτηριστικών.

Σχήμα: Πολύγωνο - εδώ το όνομα του χαρακτηριστικού σχήματος μπορεί να χαρακτηρίσει μια κλάση που είναι ένα γεωμετρικό σχήμα σε ένα επίπεδο. Σε αυτήν την περίπτωση, ο τύπος χαρακτηριστικού Polygon αναφέρεται στο γεγονός ότι ένα μεμονωμένο γεωμετρικό σχήμα μπορεί να έχει σχήμα τριγώνου, ορθογωνίου, διαμαντιού, πενταγώνου ή οποιουδήποτε άλλου πολυγώνου, αλλά όχι κύκλου ή έλλειψης. Είναι προφανές ότι σε αυτή την περίπτωση η χρήση του αντίστοιχου αγγλόφωνου όρου δεν είναι σκόπιμη, αφού ο τύπος Polygon δεν είναι βασικός για γλώσσες προγραμματισμού.

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

Ως παραδείγματα αρχικών τιμών χαρακτηριστικών, μπορούν να δοθούν οι ακόλουθες επιλογές για τον καθορισμό χαρακτηριστικών, που συμπληρώθηκαν παραπάνω:

Χρώμα:Χρώμα = (255, 0, 0) – Στο χρωματικό μοντέλο RGB, αυτό αντιστοιχεί στο καθαρό κόκκινο ως αρχική τιμή για αυτό το χαρακτηριστικό.

Employee_name:String = Ivan Ivanovich - ίσως αυτή είναι μια άτυπη περίπτωση, η οποία, μάλλον, αντιστοιχεί στην κατάσταση manager_name:81pp§ = Ivan Ivanovich.

Ορατότητα: Booleаn = true – μπορεί να αντιστοιχεί στην κατάσταση όταν, τη στιγμή της δημιουργίας μιας παρουσίας μιας κλάσης, δημιουργείται ένα παράθυρο που αντιστοιχεί σε αυτό το αντικείμενο ορατό στην οθόνη της οθόνης.

Σχήμα: Πολύγωνο = ορθογώνιο - δύσκολα απαιτεί σχόλια, αφού εδώ μιλάμε για το γεωμετρικό σχήμα του δημιουργημένου αντικειμένου.

Κατά τον ορισμό χαρακτηριστικών, μπορούν να χρησιμοποιηθούν δύο πρόσθετες συντακτικές δομές: υπογράμμιση της γραμμής χαρακτηριστικών και επεξηγηματικό κείμενο σε σγουρές αγκύλες.

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

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

Η συμβολοσειρά ιδιοτήτων χρησιμοποιείται για να υποδείξει τιμές χαρακτηριστικών που δεν μπορούν να αλλάξουν στο πρόγραμμα όταν εργάζεστε με αυτόν τον τύπο αντικειμένου. Οι σγουρές αγκύλες υποδηλώνουν τη σταθερή τιμή του αντίστοιχου χαρακτηριστικού για την κλάση στο σύνολό της, την οποία πρέπει να αποδέχονται όλες οι νέες παρουσίες της κλάσης, χωρίς εξαίρεση. Αυτή η τιμή λαμβάνεται ως η αρχική τιμή του χαρακτηριστικού, η οποία δεν μπορεί να παρακαμφθεί αργότερα. Η απουσία μιας προεπιλεγμένης συμβολοσειράς ιδιοτήτων ερμηνεύεται ότι σημαίνει ότι η τιμή του αντίστοιχου χαρακτηριστικού μπορεί να αλλάξει στο πρόγραμμα. Για παράδειγμα, μια συμβολοσειρά ιδιότητας στο χαρακτηριστικό ρεκόρ μισθός: Νόμισμα = = (500 $) μπορεί να χρησιμοποιηθεί για να ορίσει έναν σταθερό μισθό για κάθε αντικείμενο της κατηγορίας Υπαλλήλων για μια συγκεκριμένη θέση σε κάποιον οργανισμό. Από την άλλη πλευρά, γράφοντας αυτό το χαρακτηριστικό με τη μορφή salary_payment: Currency = $500 σημαίνει κάτι άλλο, δηλαδή, κατά τη δημιουργία μιας νέας παρουσίας, το Employee (αναλογία - πρόσληψη νέου υπαλλήλου) έχει οριστεί για αυτό από προεπιλογή μισθοίστα 500$. Ωστόσο, για μεμονωμένους υπαλλήλους, μπορεί να γίνουν εξαιρέσεις, μεγαλύτερες και μικρότερες, οι οποίες πρέπει να ληφθούν επιπρόσθετα στο πρόγραμμα.

Λειτουργία

Το τρίτο τμήμα του ορθογωνίου από την κορυφή περιέχει τις πράξεις ή τις μεθόδους της κλάσης. Μια λειτουργία είναι μια υπηρεσία που παρέχει κάθε παρουσία μιας κλάσης για μια συγκεκριμένη απαίτηση. Ένα σύνολο πράξεων χαρακτηρίζει τη λειτουργική πτυχή της συμπεριφοράς μιας κλάσης. Η εγγραφή λειτουργιών κλάσης στο UML είναι επίσης τυποποιημένη και ακολουθεί ορισμένους συντακτικούς κανόνες. Σε αυτήν την περίπτωση, κάθε πράξη κλάσης αντιστοιχεί σε μια ξεχωριστή γραμμή, η οποία αποτελείται από τον ποσοτικό δείκτη ορατότητας λειτουργίας, το όνομα της πράξης, μια έκφραση του τύπου της τιμής που επιστρέφεται από την πράξη και, πιθανώς, μια γραμμή ιδιοτήτων αυτής της πράξης:

<квантор видимости><имя операции>(κατάλογος παραμέτρων):

<выражение типа возвращаемого значения>(συμβολοσειρά ιδιοκτησίας)

Ο ποσοτικός δείκτης ορατότητας, όπως στην περίπτωση των χαρακτηριστικών κλάσης, μπορεί να λάβει μία από τις τρεις πιθανές τιμές και, κατά συνέπεια, εμφανίζεται χρησιμοποιώντας έναν ειδικό χαρακτήρα. Το σύμβολο "+" υποδηλώνει μια λειτουργία με ένα εύρος τύπου public. Το σύμβολο "#" υποδηλώνει μια λειτουργία με προστατευμένο εύρος τύπου. Τέλος, το σύμβολο "-" χρησιμοποιείται για να υποδηλώσει μια λειτουργία με εύρος τύπου ιδιωτικού.

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

Ένα όνομα λειτουργίας είναι μια συμβολοσειρά κειμένου που χρησιμοποιείται ως αναγνωριστικό για την αντίστοιχη πράξη και επομένως πρέπει να είναι μοναδική σε μια δεδομένη κλάση. Το όνομα του χαρακτηριστικού είναι το μόνο απαραίτητο στοιχείο του συντακτικού προσδιορισμού της λειτουργίας.

Η λίστα παραμέτρων είναι μια λίστα τυπικών παραμέτρων διαχωρισμένη με κόμμα, καθεμία από τις οποίες μπορεί να αναπαρασταθεί ως εξής:

<вид параметра><имя параметра>:<выражение типа>=<значение параметра по умолчанию>.

Εδώ ο τύπος παραμέτρου είναι μία από τις λέξεις-κλειδιά in, out ή inout με την προεπιλεγμένη τιμή μέσα, εάν δεν έχει καθοριστεί ο τύπος παραμέτρου. Το όνομα της παραμέτρου είναι το αναγνωριστικό της αντίστοιχης επίσημης παραμέτρου. Μια έκφραση τύπου είναι μια ειδική για τη γλώσσα προδιαγραφή του τύπου επιστροφής της αντίστοιχης επίσημης παραμέτρου. Τέλος, μια προεπιλεγμένη τιμή είναι γενικά μια έκφραση για την τιμή μιας τυπικής παραμέτρου, η σύνταξη της οποίας εξαρτάται από τη συγκεκριμένη γλώσσα προγραμματισμού και υπόκειται στους περιορισμούς της.

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

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

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

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

Για τη βελτίωση της απόδοσης του συστήματος, ορισμένες λειτουργίες μπορούν να εκτελεστούν παράλληλα ή ταυτόχρονα, ενώ άλλες μπορούν να εκτελεστούν μόνο διαδοχικά. Σε αυτήν την περίπτωση, για να υποδείξουμε τον παραλληλισμό της πράξης, χρησιμοποιείται μια συμβολοσειρά ιδιοτήτων της μορφής "(concurrency = name)", όπου το όνομα μπορεί να λάβει μία από τις ακόλουθες τιμές: sequential, concurrent, guarded. Σε αυτήν την περίπτωση, τηρείται η ακόλουθη σημασιολογία για αυτές τις τιμές:

Διαδοχική - για αυτή τη λειτουργία είναι απαραίτητο να διασφαλιστεί η μόνη εκτέλεσή της στο σύστημα, ταυτόχρονη εκτέλεσηάλλες λειτουργίες μπορεί να οδηγήσουν σε σφάλματα ή παραβιάσεις της ακεραιότητας των αντικειμένων κλάσης.

Παράλληλη (παράλληλη) - αυτή η λειτουργία, λόγω των χαρακτηριστικών της, μπορεί να εκτελεστεί παράλληλα με άλλες λειτουργίες του συστήματος, ενώ ο παραλληλισμός πρέπει να διατηρηθεί στο επίπεδο υλοποίησης του μοντέλου.

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

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

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

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

Η συμπεριφορά μιας λειτουργίας μπορεί να προσδιοριστεί περαιτέρω με τη μορφή μιας σημείωσης που επισυνάπτεται στη λειτουργία. Σε αυτήν την περίπτωση, το κείμενο της σημείωσης περικλείεται σε παρένθεση εάν αντιπροσωπεύει μια επίσημη προδιαγραφή σε κάποια γλώσσα προγραμματισμού και ταιριάζει με το στοιχείο σημασιολογικού περιορισμού UML. Διαφορετικά, το κείμενο της σημείωσης είναι μια απλή περιγραφή φυσικής γλώσσας και υποδεικνύεται από ένα ορθογώνιο με μια "καμπύλη" επάνω δεξιά γωνία (βλ. Κεφάλαιο 4).

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

Ως παραδείγματα λειτουργιών εγγραφής, μπορούν να δοθούν οι ακόλουθες ονομασίες μεμονωμένων λειτουργιών:

Create() - μπορεί να υποδηλώσει μια αφηρημένη λειτουργία για τη δημιουργία ενός ξεχωριστού αντικειμένου μιας κλάσης, το οποίο είναι δημόσιο και δεν περιέχει επίσημες παραμέτρους. Αυτή η λειτουργία δεν επιστρέφει καμία τιμή μετά την εκτέλεση.

Σχέδιο (σχήμα: Πολύγωνο = ορθογώνιο, fill_color: Χρώμα = (O, O, 255)) - μπορεί να υποδηλώνει μια λειτουργία για την απεικόνιση μιας ορθογώνιας περιοχής μπλε χρώματος στην οθόνη της οθόνης, εκτός εάν προσδιορίζονται άλλες τιμές ως ορίσματα για αυτή η λειτουργία.

Request_customer_account (αριθμός_λογαριασμού: 1n1e§eg): Siggesu – υποδηλώνει μια πράξη για τον προσδιορισμό της διαθεσιμότητας κεφαλαίων στον τρεχούμενο λογαριασμό ενός πελάτη τράπεζας. Σε αυτήν την περίπτωση, το όρισμα αυτής της λειτουργίας είναι ο αριθμός λογαριασμού του πελάτη, ο οποίος γράφεται ως ακέραιος αριθμός (για παράδειγμα, "123456"). Το αποτέλεσμα αυτής της λειτουργίας είναι ένας αριθμός γραμμένος στην αποδεκτή νομισματική μορφή (για παράδειγμα, $1.500,00).

Issue_message():("Διαίρεση με μηδενικό σφάλμα") - η έννοια αυτής της λειτουργίας δεν απαιτεί εξήγηση, καθώς περιέχεται στη γραμμή ιδιοτήτων της πράξης. Αυτό το μήνυμα μπορεί να εμφανιστεί στην οθόνη της οθόνης εάν γίνει προσπάθεια διαίρεσης ενός συγκεκριμένου αριθμού με το μηδέν, κάτι που είναι απαράδεκτο.

5.2. Σχέσεις μεταξύ τάξεων

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

Σχέση εξάρτησης

σχέση συσχέτισης

σχέση γενίκευσης

Σχέση πραγματοποίησης

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

Σχέση εξάρτησης

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

Μια σχέση εξάρτησης αναπαρίσταται γραφικά με μια διακεκομμένη γραμμή μεταξύ των αντίστοιχων στοιχείων με ένα βέλος στο ένα άκρο ("->" ή "<-»). На диаграмме классов данное отношение связывает отдельные классы между собой, при этом стрелка направлена от класса-клиента зависимости к независимому классу или классу-источнику (рис. 5.3). На данном рисунке изображены два класса: Класс_А и Кяасс_Б, при этом Класс_Б является источником некоторой зависимости, а Класс_А – клиентом этой зависимости.

Ρύζι. 5.3.Γραφική αναπαράσταση μιας σχέσης εξάρτησης σε ένα διάγραμμα κλάσης

Ολόκληρα σύνολα στοιχείων μοντέλου μπορούν να λειτουργήσουν ως κλάση πελάτη και κλάση πηγής εξάρτησης. Σε αυτήν την περίπτωση, μια γραμμή με ένα βέλος που προέρχεται από την πηγή της εξάρτησης χωρίζεται σε κάποιο σημείο σε πολλές ξεχωριστές γραμμές, η καθεμία με ένα ξεχωριστό βέλος για την κλάση πελάτη. Για παράδειγμα, εάν η λειτουργία της Class_C εξαρτάται από τα χαρακτηριστικά υλοποίησης των Class_A και Class_/>, τότε αυτή η εξάρτηση μπορεί να απεικονιστεί ως εξής (Εικ. 5.4).

Ρύζι. 5.4.Γραφική αναπαράσταση της εξάρτησης μεταξύ της κλάσης πελάτη (Class_C) και των κλάσεων πηγής (Class_L και Class_B)

Το βέλος μπορεί να επισημαίνεται με μια προαιρετική αλλά τυπική λέξη-κλειδί σε εισαγωγικά και ένα προαιρετικό προσαρμοσμένο όνομα. Μια σχέση εξάρτησης έχει προκαθορισμένες λέξεις-κλειδιά που υποδηλώνουν ορισμένους ειδικούς τύπους εξαρτήσεων. Αυτές οι λέξεις-κλειδιά (στερεότυπα) γράφονται σε εισαγωγικά δίπλα στο βέλος που αντιστοιχεί σε αυτή τη σχέση. Παραδείγματα στερεοτύπων για σχέσεις εξάρτησης παρουσιάζονται παρακάτω:

"πρόσβαση" - χρησιμεύει για να υποδείξει τη διαθεσιμότητα δημόσιων χαρακτηριστικών και λειτουργιών της κλάσης πηγής για κλάσεις πελατών.

"bind" - η κλάση πελάτη μπορεί να χρησιμοποιήσει κάποιο πρότυπο για την επακόλουθη παραμετροποίησή της.

"derive" - ​​τα χαρακτηριστικά της κλάσης πελάτη μπορούν να υπολογιστούν από τα χαρακτηριστικά της κλάσης πηγής.

"εισαγωγή" - τα δημόσια χαρακτηριστικά και λειτουργίες της κλάσης πηγής γίνονται μέρος της κλάσης πελάτη, σαν να είχαν δηλωθεί απευθείας σε αυτήν.

"βελτίωση" - υποδεικνύει ότι η κλάση πελάτη χρησιμεύει ως βελτίωση της κλάσης πηγής για ιστορικούς λόγους, όταν εμφανίζονται πρόσθετες πληροφορίες κατά τη διάρκεια της εργασίας στο έργο.

Σχέση συσχέτισης

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

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

Ως απλό παράδειγμασχέσεις δυαδικής συσχέτισης, εξετάστε τη σχέση μεταξύ δύο κλάσεων - της κατηγορίας «Εταιρεία» και της τάξης «Εργαζόμενος» (Εικ. 5.5). Συνδέονται μεταξύ τους με τον δυαδικό συσχετισμό Work, το όνομα του οποίου υποδεικνύεται στο σχήμα δίπλα στη γραμμή συσχέτισης. Για αυτή τη σχέση, ορίζεται η σειρά των κλάσεων, η πρώτη από τις οποίες είναι η κλάση «Εργαζόμενος» και η δεύτερη η κατηγορία «Εταιρεία». Ένα ξεχωριστό παράδειγμα ή παράδειγμα αυτής της σχέσης μπορεί να είναι ένα ζευγάρι σημασιών (Petrov I. I., "Horns & Hooves"). Αυτό σημαίνει ότι ο υπάλληλος I.I Petrov εργάζεται για την εταιρεία Horns & Hooves.


Ρύζι. 5.5.Γραφική αναπαράσταση μιας δυαδικής σχέσης συσχέτισης μεταξύ τάξεων

Μια τριμερής ένωση και οι ενώσεις υψηλότερης σημασίας ονομάζονται γενικά Ν-αρικός σύνδεσμος (διαβάστε "εναρικός σύνδεσμος"). Ένας τέτοιος συσχετισμός συνδέει 3 ή περισσότερες τάξεις με κάποια σχέση, ενώ μια τάξη μπορεί να συμμετάσχει στη συσχέτιση περισσότερες από μία φορές. Η κλάση συσχέτισης έχει έναν συγκεκριμένο ρόλο στην αντίστοιχη σχέση, ο οποίος μπορεί να υποδειχθεί ρητά στο διάγραμμα. Κάθε στιγμιότυπο μιας N-ary συσχέτισης είναι μια N-ary πλειάδα τιμών αντικειμένων από τις αντίστοιχες κλάσεις. Ένας δυαδικός συσχετισμός είναι μια ειδική περίπτωση ενός Ν-αρικού συσχετισμού, όταν η τιμή είναι N=2 και έχει τη δική του σημείωση.

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

Η σειρά των κλάσεων σε έναν Ν-αρικό συσχετισμό, σε αντίθεση με τη σειρά των συνόλων σε μια σχέση, δεν καθορίζεται στο διάγραμμα. Κάποια κατηγορία μπορεί να συνδεθεί στο διαμάντι με μια διακεκομμένη γραμμή. Αυτό σημαίνει ότι η κλάση παρέχει υποστήριξη για τις ιδιότητες της αντίστοιχης N-ary συσχέτισης και η ίδια η N-ary συσχέτιση έχει χαρακτηριστικά, πράξεις και/ή συσχετίσεις. Με άλλα λόγια, ένας τέτοιος συσχετισμός, με τη σειρά του, είναι μια κλάση με τον αντίστοιχο προσδιορισμό με τη μορφή ορθογωνίου και είναι ένα ανεξάρτητο στοιχείο της γλώσσας UML - μια κλάση συσχέτισης. Μια N-ary συσχέτιση δεν μπορεί να περιέχει σύμβολο συγκέντρωσης για κανέναν από τους ρόλους της.

Ως παράδειγμα μιας συγκεκριμένης τριμερούς ένωσης, εξετάστε τη σχέση μεταξύ τριών κατηγοριών: «Ομάδα ποδοσφαίρου», «Έτος» και «Παιχνίδι». Αυτή η συσχέτιση υποδηλώνει την ύπαρξη μιας σχέσης μεταξύ αυτών των τριών κατηγοριών, η οποία μπορεί να αντιπροσωπεύει πληροφορίες σχετικά με την απόδοση των ποδοσφαιρικών ομάδων στο εθνικό πρωτάθλημα τα τελευταία χρόνια (Εικ. 5.6).

Όπως αναφέρθηκε, μια ξεχωριστή κλάση συσχέτισης έχει τον δικό της ρόλο στη σχέση. Αυτός ο ρόλος μπορεί να απεικονιστεί γραφικά σε ένα διάγραμμα τάξης. Για το σκοπό αυτό, στη γλώσσα UML, εισάγεται ένα ειδικό στοιχείο - το τέλος του συσχετισμού (Association End), το οποίο γραφικά αντιστοιχεί στο σημείο σύνδεσης της γραμμής συσχέτισης με μια ξεχωριστή κλάση. Το τέλος μιας ένωσης είναι μέρος της ένωσης, αλλά όχι της τάξης. Κάθε συσχέτιση έχει δύο ή περισσότερα άκρα συσχέτισης. Πλέον σημαντικές ιδιότητεςΟι συσχετισμοί υποδεικνύονται στο διάγραμμα δίπλα σε αυτά τα στοιχεία συσχέτισης και πρέπει να ανακατεύονται μαζί τους.

Ρύζι. 5.6.Γραφική αναπαράσταση τριαδικής συσχέτισης μεταξύ τριών τάξεων

Ένας τέτοιος πρόσθετος προσδιορισμός είναι το όνομα του ρόλου μιας συγκεκριμένης τάξης που είναι μέρος μιας ένωσης. Το όνομα ρόλου είναι μια γραμμή κειμένου κοντά στο τέλος του συσχετισμού για την αντίστοιχη τάξη. Υποδεικνύει τον συγκεκριμένο ρόλο που διαδραματίζει η τάξη που είναι το τέλος της εν λόγω συσχέτισης. Το όνομα ρόλου είναι προαιρετικό στοιχείο της σημείωσης και ενδέχεται να μην εμφανίζεται στο διάγραμμα.

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

Έτσι, για το παράδειγμα που συζητήθηκε προηγουμένως (βλ. Εικ. 5.5), η πολλαπλότητα του «1» για την κατηγορία «Εταιρεία» σημαίνει ότι κάθε εργαζόμενος μπορεί να εργαστεί σε μία μόνο εταιρεία. Η πολλαπλότητα του «1..*» για την κατηγορία «Εργαζόμενοι» σημαίνει ότι κάθε επιχείρηση μπορεί να έχει πολλούς υπαλλήλους, ο συνολικός αριθμός των οποίων είναι άγνωστος εκ των προτέρων και δεν περιορίζεται σε καμία περίπτωση. Σημειώστε ότι αντί για την πολλαπλότητα «1..*», είναι αδύνατο να γράψετε μόνο το σύμβολο «*», αφού το τελευταίο σημαίνει την πολλαπλότητα «0..*». Για αυτό το παράδειγμα, αυτό θα σήμαινε ότι μεμονωμένες εταιρείες μπορεί να μην έχουν καθόλου υπαλλήλους. Αλλά μια τέτοια πολλαπλότητα είναι αρκετά αποδεκτή σε άλλες καταστάσεις, όπως φαίνεται από το παράδειγμα που συζητήθηκε παραπάνω (Εικ. 5.6).

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

Ειδική περίπτωση σχέσης συσχέτισης είναι η λεγόμενη αποκλειστική ένωση (Xor-association). Η σημασιολογία αυτής της συσχέτισης υποδηλώνει το γεγονός ότι από πολλές δυνητικά πιθανές επιλογέςμιας δεδομένης συσχέτισης, μόνο μία παρουσία της μπορεί να χρησιμοποιηθεί κάθε φορά. Σε ένα διάγραμμα κλάσης, μια αποκλειστική συσχέτιση αντιπροσωπεύεται από μια διακεκομμένη γραμμή που συνδέει δύο ή περισσότερες συσχετίσεις, δίπλα στην οποία είναι γραμμένη η συμβολοσειρά περιορισμού "(hog)".

Για παράδειγμα, ένας τραπεζικός λογαριασμός μπορεί να ανοίξει για έναν πελάτη, κάτι που μπορεί να είναι άτομο(άτομο) ή εταιρεία, η οποία απεικονίζεται με χρήση αποκλειστικής ένωσης (Εικόνα 5.7).

Ρύζι. 5.7.Γραφική αναπαράσταση αποκλειστικής συσχέτισης μεταξύ τριών τάξεων

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

Σχέση συνάθροισης

Μια σχέση συνάθροισης προκύπτει μεταξύ πολλών κλάσεων εάν μία από τις κλάσεις αντιπροσωπεύει μια οντότητα που περιλαμβάνει άλλες οντότητες ως στοιχεία.

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

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

Ως παράδειγμα σχέσης συνάθροισης, εξετάστε μια σχέση μέρους-όλου που εμφανίζεται μεταξύ της οντότητας "Φορτηγό" και εξαρτημάτων όπως "Κινητήρας", "Πλαίσιο", "Καμπίνα", "Σώμα". Χωρίς να προσποιούμαστε ότι είναι ακριβής αντιστοιχία με την ορολογία αυτής της θεματικής περιοχής, δεν είναι δύσκολο να φανταστεί κανείς ότι ένα φορτηγό αποτελείται από κινητήρα, πλαίσιο, καμπίνα και αμάξωμα. Είναι αυτή η σχέση μεταξύ της κλάσης "Truck_vehicle" και των κλάσεων "Engine", "Chassis", "Cabin", "Body" που περιγράφει τη σχέση συνάθροισης.

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

Ρύζι. 5.8.Γραφική αναπαράσταση μιας σχέσης συνάθροισης στο UML

Ένα άλλο παράδειγμα μιας σχέσης συγκέντρωσης μπορεί να είναι η διαίρεση ενός προσωπικού υπολογιστή στα συστατικά μέρη του, γνωστά σε κάθε έναν από τους αναγνώστες: μονάδα συστήματος, οθόνη, πληκτρολόγιο και ποντίκι. Χρησιμοποιώντας συμβολισμούς γλώσσας UML, η σύνθεση των στοιχείων ενός υπολογιστή μπορεί να αναπαρασταθεί με τη μορφή ενός αντίστοιχου διαγράμματος κλάσης (Εικ. 5.9), το οποίο σε αυτή την περίπτωσηαπεικονίζει τη σχέση συνάθροισης.


Ρύζι. 5.9.Διάγραμμα τάξης για την απεικόνιση της σχέσης συνάθροισης χρησιμοποιώντας έναν υπολογιστή ως παράδειγμα

Αναλογία σύνθεσης

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

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

Γραφικά, η σχέση της σύνθεσης απεικονίζεται με μια συμπαγή γραμμή, ένα από τα άκρα της οποίας είναι ένα διαμάντι σκιασμένο στο εσωτερικό. Αυτό το διαμάντι υποδεικνύει όποια κατηγορία είναι κατηγορία σύνθεσης ή "ολόκληρο". Οι υπόλοιπες κατηγορίες είναι τα «μέρη» του (Εικ. 5.10).

Ρύζι. 5.10.Γραφική αναπαράσταση μιας σχέσης σύνθεσης σε UML

Πρόσθετες σημειώσεις για τις σχέσεις σύνθεσης και συνάθροισης μπορούν να χρησιμοποιηθούν ως πρόσθετες σημειώσεις για τη σχέση συσχέτισης. Δηλαδή, υποδεικνύοντας την πολλαπλότητα της κλάσης συσχέτισης και το όνομα αυτής της συσχέτισης, τα οποία είναι προαιρετικά. Σε σχέση με το παράδειγμα της κλάσης «Program_Window» που περιγράφηκε παραπάνω, το διάγραμμα κλάσεών της μπορεί να μοιάζει με αυτό (Εικ. 5.11).


Ρύζι. 5.11.Διάγραμμα κλάσης για την απεικόνιση της σχέσης σύνθεσης χρησιμοποιώντας την κλάση παραθύρου του προγράμματος ως παράδειγμα

Αυτό το παράδειγμα μπορεί να επεξηγήσει άλλα χαρακτηριστικά του ανεπτυγμένου πρόγραμμα υπολογιστή, τα οποία δεν προσδιορίστηκαν ρητά κατά την περιγραφή αυτού του παραδείγματος Έτσι, συγκεκριμένα, η ένδειξη της πολλαπλότητας του 1 δίπλα στην κλάση "Work_area" είναι τυπική για εφαρμογές ενός εγγράφου.

Σχέση γενίκευσης

Μια σχέση γενίκευσης είναι μια συνηθισμένη ταξινομική σχέση μεταξύ ενός γενικότερου στοιχείου (γονέας ή πρόγονος) και ενός πιο συγκεκριμένου ή εξειδικευμένου στοιχείου (παιδί ή απόγονος). Αυτή η σχέση μπορεί να χρησιμοποιηθεί για την αναπαράσταση σχέσεων μεταξύ πακέτων, κλάσεων, περιπτώσεων χρήσης και άλλων στοιχείων της γλώσσας UML.

Όταν εφαρμόζεται σε ένα διάγραμμα κλάσεων, αυτή η σχέση περιγράφει την ιεραρχική δομή των κλάσεων και την κληρονομικότητα των ιδιοτήτων και της συμπεριφοράς τους. Αυτό προϋποθέτει ότι η κλάση απόγονος έχει όλες τις ιδιότητες και τη συμπεριφορά της κλάσης προγόνων και επίσης έχει τις δικές της ιδιότητες και συμπεριφορά που δεν έχει η κλάση προγόνων. Στα διαγράμματα, μια σχέση γενίκευσης υποδεικνύεται με μια συμπαγή γραμμή με ένα τριγωνικό βέλος στο ένα άκρο (Εικ. 5.12). Ένα βέλος υποδηλώνει μια πιο γενική τάξη (προγονική τάξη ή υπερκλάση), ενώ η απουσία του υποδεικνύει μια πιο εξειδικευμένη τάξη (καταγωγή ή υποκλάση).

Ρύζι. 5.12.Γραφική αναπαράσταση μιας σχέσης γενίκευσης στο UML

Τυπικά, ένα διάγραμμα μπορεί να δείχνει πολλές γραμμές για μία σχέση γενίκευσης, αντανακλώντας την ταξινομική φύση της. Σε αυτήν την περίπτωση, μια πιο γενική κλάση χωρίζεται σε υποκλάσεις με μία μόνο σχέση γενίκευσης. Για παράδειγμα, η κλάση Geometric_Figure_on_Plane (η πλάγια γραφή υποδηλώνει μια αφηρημένη κλάση) μπορεί να λειτουργήσει ως υπερκλάση για υποκλάσεις που αντιστοιχούν σε συγκεκριμένες γεωμετρικά σχήματα, όπως Ορθογώνιο, Κύκλος, Έλλειψη κ.λπ. Το γεγονός αυτό μπορεί να αναπαρασταθεί γραφικά με τη μορφή διαγράμματος κλάσης του παρακάτω τύπου (Εικ. 5.13).


Ρύζι. 5.13.Ένα παράδειγμα γραφικής αναπαράστασης μιας σχέσης γενίκευσης τάξης

Προκειμένου να απλοποιηθεί η σημείωση σε ένα διάγραμμα κλάσης, ένα σύνολο γραμμών που δηλώνουν την ίδια σχέση γενίκευσης μπορεί να συνδυαστεί σε μία γραμμή. Σε αυτήν την περίπτωση, αυτές οι μεμονωμένες γραμμές απεικονίζονται να συγκλίνουν σε ένα μόνο βέλος που έχει κοινό σημείοδιασταυρώσεις (Εικ. 5.14).


Ρύζι. 5.14.Μια παραλλαγή της γραφικής αναπαράστασης της σχέσης γενίκευσης κλάσης για την περίπτωση συνδυασμού μεμονωμένων γραμμών

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

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

Οι ακόλουθες λέξεις-κλειδιά UML μπορούν να χρησιμοποιηθούν ως περιορισμοί:

(πλήρης) – σημαίνει ότι σε αυτή τη σχέση γενίκευσης καθορίζονται όλες οι τάξεις καταγωγής και αυτή η προγονική τάξη δεν μπορεί να έχει άλλες τάξεις καταγωγής. Παράδειγμα - η κλάση Bank_Client είναι ο πρόγονος δύο κλάσεων: Individual_person και Company, και δεν έχει άλλες τάξεις καταγωγής. Στο αντίστοιχο διάγραμμα κλάσης, αυτό μπορεί να υποδειχθεί ρητά γράφοντας αυτήν τη συμβολοσειρά περιορισμού δίπλα στη γραμμή γενίκευσης.

(disjoint) – σημαίνει ότι οι καταγωγικές κλάσεις δεν μπορούν να περιέχουν αντικείμενα που είναι ταυτόχρονα περιπτώσεις δύο ή περισσότερων κλάσεων. Στο παραπάνω παράδειγμα, ικανοποιείται και αυτή η προϋπόθεση, αφού υποτίθεται ότι κανένα συγκεκριμένο άτομο δεν μπορεί να είναι και συγκεκριμένη εταιρεία. Σε αυτήν την περίπτωση, δίπλα στη γραμμή γενίκευσης, μπορείτε να γράψετε αυτήν τη γραμμή περιορισμού.

(ημιτελές) – σημαίνει την αντίθετη περίπτωση από την πρώτη. Δηλαδή, υποτίθεται ότι δεν υποδεικνύονται όλες οι καταγωγικές κατηγορίες στο διάγραμμα. Στη συνέχεια, είναι δυνατή η συμπλήρωση της λίστας τους χωρίς αλλαγή του ήδη κατασκευασμένου διαγράμματος. Ένα παράδειγμα είναι ένα διάγραμμα της κατηγορίας «Car», για το οποίο η ένδειξη όλων των μοντέλων αυτοκινήτων ανεξαιρέτως είναι ανάλογη με τη δημιουργία του αντίστοιχου καταλόγου. Από την άλλη πλευρά, για ξεχωριστή εργασία, όπως η ανάπτυξη ενός συστήματος για την πώληση αυτοκινήτων συγκεκριμένων μοντέλων, αυτό δεν είναι απαραίτητο. Αλλά είναι ακόμα απαραίτητο να υποδείξουμε την ατελή δομή των τάξεων απογόνων.

(επικαλυπτόμενες) - σημαίνει ότι μεμονωμένα στιγμιότυπα απόγονες κλάσεων μπορούν να ανήκουν σε πολλές κλάσεις ταυτόχρονα. Παράδειγμα – η κλάση «Πολύγωνο» είναι η προγονική τάξη της τάξης «Ορθογώνιο» και η τάξη «Ρόμβος». Ωστόσο, υπάρχει μια ξεχωριστή κλάση "Square", οι περιπτώσεις της οποίας είναι ταυτόχρονα αντικείμενα των δύο πρώτων κλάσεων. Είναι πολύ φυσικό να υποδεικνύεται ρητά μια τέτοια κατάσταση χρησιμοποιώντας αυτήν τη συμβολοσειρά περιορισμού.

Λαμβάνοντας υπόψη τη δυνατότητα χρήσης γραμμών περιορισμού, το διάγραμμα κλάσεων (Εικ. 5.14) μπορεί να απεικονιστεί χωρίς ελλείψεις και χωρίς απώλεια πληροφοριών (Εικ. 5.15).


Ρύζι. 5.15.Μια επιλογή για τη γραφική αναπαράσταση μιας σχέσης γενίκευσης κλάσης χρησιμοποιώντας έναν περιορισμό συμβολοσειράς

Για να επεξηγήσουμε τα χαρακτηριστικά της χρήσης της σχέσης γενίκευσης, ας μετατρέψουμε ένα από τα παραδείγματα αναπαράστασης κλάσης που συζητήθηκαν προηγουμένως στη γραφική σημείωση της γλώσσας UML. Ως τέτοιο παράδειγμα, θεωρήστε την ιεραρχία ένθεσης κλάσης για την αφηρημένη κλάση "Car" (βλ. Εικ. 1.2, 2.7). Όπως γίνεται εύκολα αντιληπτό, η σχέση μεταξύ των επιμέρους κλάσεων σε αυτά τα σχήματα είναι ακριβώς μια σχέση γενίκευσης, η οποία στη γλώσσα UML έχει έναν ειδικό γραφικό προσδιορισμό. Λαμβάνοντας υπόψη αυτή τη γραφική σημείωση, ένα τμήμα του σημασιολογικού δικτύου που αντιπροσωπεύει την ιεραρχία της κλάσης «Car» (βλ. Εικ. 2.7) μπορεί να αναπαρασταθεί ως το ακόλουθο διάγραμμα κλάσης (Εικ. 5.16).

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


Ρύζι. 5.16.Ένα τμήμα ενός διαγράμματος κλάσης με σχέση γενίκευσης για την αναπαράσταση της ιεραρχίας κλάσεων «Car» από το παράδειγμα που συζητήθηκε προηγουμένως (βλ. Εικ. 2.7)

5.3. Διεπαφές.

Οι διεπαφές είναι στοιχεία ενός διαγράμματος περίπτωσης χρήσης και συζητήθηκαν στο Κεφάλαιο 4. Ωστόσο, κατά την κατασκευή ενός διαγράμματος κλάσης, μεμονωμένες διεπαφές μπορούν να βελτιωθούν, οπότε χρησιμοποιείται μια ειδική διεπαφή για την αναπαράστασή τους. γραφικό σύμβολο– ένα ορθογώνιο τάξης με τη λέξη-κλειδί ή το στερεότυπο «διεπαφή» (Εικ. 5.17). Σε αυτήν την περίπτωση, το ορθογώνιο δεν έχει τμήμα χαρακτηριστικών και υποδεικνύεται μόνο το τμήμα λειτουργιών.

Ρύζι. 5.17.Ένα παράδειγμα γραφικής αναπαράστασης μιας διεπαφής σε ένα διάγραμμα κλάσης

5.4. Αντικείμενα

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

Για τη γραφική αναπαράσταση αντικειμένων, χρησιμοποιείται το ίδιο ορθογώνιο σύμβολο όπως για τις κλάσεις. Οι διαφορές εμφανίζονται κατά τον καθορισμό των ονομάτων των αντικειμένων, τα οποία στην περίπτωση των αντικειμένων είναι απαραίτητα υπογραμμισμένα (Εικ. 5.18). Σε αυτήν την περίπτωση, η εγγραφή ονόματος αντικειμένου είναι μια γραμμή κειμένου "όνομα αντικειμένου: όνομα κλάσης",χωρίζονται με άνω και κάτω τελεία (Εικ. 5.18 α, β). Το όνομα του αντικειμένου μπορεί να λείπει, οπότε θεωρείται ότι το αντικείμενο είναι ανώνυμο και η άνω και κάτω τελεία υποδηλώνει αυτή την περίσταση (Εικ. 5.18, δ). Μπορεί επίσης να λείπει το όνομα της τάξης. Στη συνέχεια υποδεικνύεται απλώς το όνομα του αντικειμένου (Εικ. 5.18, γ). Τα χαρακτηριστικά των αντικειμένων λαμβάνουν συγκεκριμένες τιμές.

Όταν απεικονίζετε ένα διάγραμμα αντικειμένου, πρέπει να θυμάστε ότι κάθε αντικείμενο είναι μια παρουσία της αντίστοιχης κλάσης και οι σχέσεις μεταξύ των αντικειμένων περιγράφονται χρησιμοποιώντας συνδέσεις (δεσμούς), που είναι στιγμιότυπα των αντίστοιχων σχέσεων. Σε αυτήν την περίπτωση, όλες οι συνδέσεις απεικονίζονται ως συμπαγείς γραμμές. Τα χαρακτηριστικά της αναπαράστασης αντικειμένων θα συζητηθούν λεπτομερέστερα στο Κεφάλαιο 9 κατά τη μελέτη των διαγραμμάτων συνεργασίας.

Ρύζι. 5.18.Ένα παράδειγμα γραφικής αναπαράστασης αντικειμένων σε διαγράμματα UML

5.5. Πρότυπα ή παραμετροποιημένες κλάσεις

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

Γραφικά, το πρότυπο αντιπροσωπεύεται από ένα ορθογώνιο με ένα μικρό ορθογώνιο με διακεκομμένες γραμμές προσαρτημένο στην επάνω δεξιά γωνία (Εικ. 5.19), ένα μεγάλο ορθογώνιο μπορεί να χωριστεί σε τμήματα, παρόμοια με την ονομασία μιας κλάσης. Το επάνω ορθογώνιο περιέχει μια λίστα με επίσημες παραμέτρους για εκείνες τις κλάσεις που μπορούν να ληφθούν με βάση αυτό το πρότυπο. Στην επάνω ενότητα του προτύπου, το όνομά του είναι γραμμένο σύμφωνα με τους κανόνες για τη σύνταξη ονομάτων για κλάσεις.

Ρύζι. 5.19.Γραφική αναπαράσταση μοτίβου σε διάγραμμα τάξης

Το πρότυπο δεν μπορεί να χρησιμοποιηθεί απευθείας ως κλάση επειδή περιέχει απροσδιόριστες παραμέτρους. Τις περισσότερες φορές, μια υπερκλάση λειτουργεί ως πρότυπο, οι παράμετροι του οποίου καθορίζονται στις απόγονες κλάσεις της. Προφανώς, σε αυτήν την περίπτωση, υπάρχει μια σχέση εξάρτησης μεταξύ τους με τη λέξη-κλειδί «bind», όταν η κλάση πελάτη μπορεί να χρησιμοποιήσει κάποιο πρότυπο για την επακόλουθη παραμετροποίησή της. Σε μια πιο συγκεκριμένη περίπτωση, μεταξύ ενός προτύπου και της κλάσης που σχηματίζεται από αυτό, υπάρχει μια σχέση γενίκευσης με την κληρονομικότητα των ιδιοτήτων του προτύπου (Εικ. 5.20). Αυτό το παράδειγμα υπογραμμίζει το γεγονός ότι η κλάση «Διεύθυνση» μπορεί να ληφθεί από το πρότυπο Linked_List με βάση την ενημέρωση των τυπικών παραμέτρων «S, k, l» με τα πραγματικά χαρακτηριστικά «οδός, σπίτι, διαμέρισμα».

Το ίδιο πρότυπο μπορεί να χρησιμοποιηθεί για τον ορισμό (στιγμιότυπο) μιας άλλης κλάσης, ας πούμε, της κλάσης "Points_on_Plane". Σε αυτήν την περίπτωση, η κλάση "Points_on_Plane" ενημερώνει τις ίδιες επίσημες παραμέτρους, αλλά με διαφορετικές τιμές, για παράδειγμα, "btsG<координаты_точки, х, у>. Η έννοια των προτύπων είναι ένα αρκετά ισχυρό εργαλείο στο OOP και επομένως η χρήση του στη γλώσσα UML επιτρέπει όχι μόνο τη μείωση του μεγέθους των διαγραμμάτων, αλλά και τον πιο σωστό έλεγχο της κληρονομικότητας των ιδιοτήτων και της συμπεριφοράς μεμονωμένων στοιχείων μοντέλου.

Ρύζι. 5.20.Παράδειγμα χρήσης μοτίβου σε διάγραμμα τάξης

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

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

Κατά τον ορισμό κλάσεων, χαρακτηριστικών και λειτουργιών και τον προσδιορισμό των ονομάτων και των τύπων τους, οι εγχώριοι προγραμματιστές αντιμετωπίζουν πάντα ένα ακούσιο ερώτημα: ποια γλώσσα πρέπει να χρησιμοποιείται ως φυσική γλώσσα, η Ρωσική ή η Αγγλική; Από τη μία πλευρά, η χρήση της μητρικής γλώσσας για την περιγραφή του μοντέλου είναι ο πιο φυσικός τρόπος παρουσίασής του και αντικατοπτρίζει περισσότερο την επικοινωνιακή λειτουργία του μοντέλου συστήματος. Από την άλλη πλευρά, η ανάπτυξη ενός μοντέλου είναι μόνο ένα από τα στάδια ανάπτυξης του αντίστοιχου συστήματος και η χρήση εργαλείων για την εφαρμογή του στη συντριπτική πλειονότητα των περιπτώσεων απαιτεί τη χρήση αγγλικών όρων. Αυτός είναι ο λόγος που υπάρχει μια χαρακτηριστική ασάφεια με την οποία το αγγλόφωνο κοινό φαίνεται να είναι εντελώς άγνωστο.

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

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

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

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

Σημειώσεις:

Σημείωση 4

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

Σημείωση 44

Σε ορισμένες περιπτώσεις, είναι απαραίτητο να αναφέρεται ρητά σε ποιο πακέτο ανήκει μια συγκεκριμένη κλάση. Για το σκοπό αυτό, χρησιμοποιείται ένας ειδικός χαρακτήρας οριοθέτησης – η διπλή άνω και κάτω τελεία “::”. Η σύνταξη συμβολοσειράς ονόματος κλάσης σε αυτήν την περίπτωση θα είναι η εξής<Имя_пакета>::<Имя_класса>. Με άλλα λόγια, το όνομα της κλάσης πρέπει να προηγείται ρητά από το όνομα του πακέτου στο οποίο θα πρέπει να εκχωρηθεί. Για παράδειγμα, εάν οριστεί ένα πακέτο με το όνομα "Τράπεζα", τότε η κλάση "Λογαριασμός" σε αυτήν την τράπεζα μπορεί να γραφτεί ως: "Τράπεζα::Λογαριασμός".

Σημείωση 45

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

Σημείωση 46

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

Σημείωση 47

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

Σημείωση 48

Σε σχέση με την εξέταση αυτής της σχέσης, είναι πολύ σκόπιμο να υπενθυμίσουμε τον ειδικό όρο «σύνολο», που χρησιμεύει για τον προσδιορισμό τεχνικό σύστημαπου αποτελείται από αλληλεπιδρώντα στοιχεία ή υποσυστήματα. Αυτή η αναλογία δεν είναι τυχαία και μπορεί να χρησιμεύσει στην καλύτερη κατανόηση της ουσίας της υπό εξέταση σχέσης.

Σημείωση 49

Ως άσκηση για την ενοποίηση του υλικού που συζητήθηκε, μπορείτε να προσπαθήσετε να δημιουργήσετε διαγράμματα τάξης, ή τουλάχιστον τμήματα αυτών, για τις τυπικές βιβλιοθήκες κλάσεων MFC (Microsoft) και VCL (Borland/Inprise) χρησιμοποιώντας τη γραφική σημείωση της γλώσσας UML. Μπορούμε να υποθέσουμε ότι στο εγγύς μέλλον, τα εγχειρίδια αναφοράς για αντίστοιχα περιβάλλοντα προγραμματισμού θα περιέχουν ακριβώς τέτοια διαγράμματα κλάσης, και ίσως κάποια άλλα.

10.4. ΔΙΑΓΡΑΜΜΑΤΑ UML

10.4.1. Τύποι οπτικών διαγραμμάτων UML

Το UML σάς επιτρέπει να δημιουργήσετε διάφορους τύπους οπτικών διαγραμμάτων:

Χρησιμοποιήστε διαγράμματα περίπτωσης.

Διαγράμματα ακολουθίας;

Συνεταιριστικά Διαγράμματα;

Διαγράμματα τάξης;

Διαγράμματα κατάστασης;

Διαγράμματα εξαρτημάτων;

Διαγράμματα τοποθέτησης.

Τα διαγράμματα απεικονίζουν διάφορες πτυχές του συστήματος. Για παράδειγμα, ένα συνεργατικό διάγραμμα δείχνει πώς τα αντικείμενα πρέπει να αλληλεπιδρούν για να υλοποιήσουν κάποια λειτουργικότητα ενός συστήματος. Κάθε διάγραμμα έχει το δικό του σκοπό.

10.4.2. Χρησιμοποιήστε Διαγράμματα περίπτωσης

Τα διαγράμματα περίπτωσης χρήσης απεικονίζουν τις αλληλεπιδράσεις μεταξύ περιπτώσεων χρήσης, που αντιπροσωπεύουν τις λειτουργίες ενός συστήματος, και παραγόντων, που αντιπροσωπεύουν τα άτομα ή τα συστήματα που λαμβάνουν ή μεταδίδουν πληροφορίες σε ένα δεδομένο σύστημα. Ένα παράδειγμα διαγράμματος περίπτωσης χρήσης για μια αυτόματη ταμειακή μηχανή (ATM) φαίνεται στο Σχήμα. 10.1.

Ρύζι. 10.1.Χρησιμοποιήστε το διάγραμμα περίπτωσης

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

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

10.4.3. Διαγράμματα ακολουθίας

Τα διαγράμματα ακολουθίας απεικονίζουν τη ροή των γεγονότων που συμβαίνουν σε μια περίπτωση χρήσης. Για παράδειγμα, η περίπτωση χρήσης «Ανάληψη χρημάτων» παρέχει διάφορες πιθανές ακολουθίες: ανάληψη χρημάτων, προσπάθεια ανάληψης χρημάτων όταν δεν υπάρχουν αρκετά χρήματα στον λογαριασμό, προσπάθεια ανάληψης χρημάτων χρησιμοποιώντας λανθασμένο αριθμό αναγνώρισης και ορισμένες άλλες. Ένα κανονικό σενάριο για ανάληψη $20 από έναν λογαριασμό (ελλείψει προβλημάτων όπως λανθασμένος αριθμός αναγνώρισης ή ανεπαρκής χρηματοδότηση στον λογαριασμό) φαίνεται στο Σχήμα. 10.2.

Εικόνα 10.2.Διάγραμμα ακολουθίας για τον πελάτη του Joe που κάνει ανάληψη $20 από τον λογαριασμό του

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

Η περίπτωση χρήσης ξεκινά όταν ο πελάτης εισάγει την κάρτα του στον αναγνώστη - αυτό το αντικείμενο φαίνεται στο ορθογώνιο στο πάνω μέρος του διαγράμματος. Διαβάζει τον αριθμό της κάρτας, ανοίγει το αντικείμενο Joe Account και προετοιμάζει την οθόνη του ATM. Η οθόνη ζητά από τον Τζο τον αριθμό εγγραφής του. Ο πελάτης εισάγει τον αριθμό 1234. Η οθόνη ελέγχει τον αριθμό σε σχέση με το αντικείμενο Joe Account και διαπιστώνει ότι είναι σωστός. Στη συνέχεια, η οθόνη παρουσιάζει στον Τζο ένα μενού για να διαλέξει και επιλέγει "Ανάληψη χρημάτων". Η οθόνη ρωτά πόσα θέλει να κάνει ανάληψη και ο Τζο εισάγει $20. Η οθόνη αποσύρει χρήματα από τον λογαριασμό. Με αυτόν τον τρόπο, ξεκινά μια σειρά από διεργασίες που εκτελούνται από το αντικείμενο "ο λογαριασμός του Τζο". Ταυτόχρονα, ελέγχεται ότι υπάρχουν τουλάχιστον 20 $ σε αυτόν τον λογαριασμό και αφαιρείται το απαιτούμενο ποσό από τον λογαριασμό. Στη συνέχεια, η ταμειακή μηχανή λαμβάνει οδηγίες να "εκδώσει μια επιταγή και 20 $ σε μετρητά". Τέλος, το ίδιο αντικείμενο "ο λογαριασμός του Τζο" δίνει εντολή στον αναγνώστη καρτών να επιστρέψει την κάρτα.

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

10.4.4. Συνεταιριστικά γραφήματα

Τα διαγράμματα συνεργασίας αντικατοπτρίζουν τις ίδιες πληροφορίες με τα διαγράμματα ακολουθίας. Ωστόσο, το κάνουν διαφορετικά και με άλλους στόχους. Εμφανίζεται στο Σχ. Το διάγραμμα ακολουθίας 10.2 φαίνεται στο Σχ. 10.3 με τη μορφή συνεταιριστικού διαγράμματος.

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

Ρύζι. 10.3.Συνεργατικό διάγραμμα που περιγράφει τη διαδικασία ανάληψης χρημάτων από έναν λογαριασμό

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

10.4.5. Διαγράμματα τάξης

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

Το διάγραμμα δείχνει τις σχέσεις μεταξύ των κλάσεων που εφαρμόζουν την περίπτωση χρήσης ανάληψης χρημάτων. Υπάρχουν τέσσερις κατηγορίες που εμπλέκονται σε αυτή τη διαδικασία: Card Reader, Account, ATM Screen και Cash Dispenser. Κάθε τάξη σε ένα διάγραμμα κλάσης απεικονίζεται ως ένα ορθογώνιο χωρισμένο σε τρία μέρη. Το πρώτο μέρος υποδεικνύει το όνομα της τάξης, το δεύτερο - της γνωρίσματα.Ένα χαρακτηριστικό είναι κάποιες πληροφορίες που χαρακτηρίζουν μια κλάση. Για παράδειγμα, η κλάση Λογαριασμός έχει τρία χαρακτηριστικά: Αριθμός λογαριασμού, PIN και Υπόλοιπο. Το τελευταίο μέρος περιέχει τις πράξεις της τάξης, αντικατοπτρίζοντας την συμπεριφορά(ενέργειες που εκτελούνται από την τάξη). Οι γραμμές που συνδέουν τις κλάσεις δείχνουν τις αλληλεπιδράσεις μεταξύ των κλάσεων.

Ρύζι. 10.4.Διάγραμμα τάξης

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

10.4.6. Διαγράμματα κατάστασης

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

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

Ρύζι. 10.5.Διάγραμμα κατάστασης για την κλάση λογαριασμού

Αυτό το διάγραμμα δείχνει τις πιθανές καταστάσεις του λογαριασμού, καθώς και τη διαδικασία μετάβασης του λογαριασμού από τη μια κατάσταση στην άλλη. Για παράδειγμα, εάν ένας πελάτης ζητήσει να κλείσει έναν ανοιχτό λογαριασμό, ο τελευταίος μεταβαίνει στην κατάσταση "Κλειστό". Η απαίτηση του πελάτη καλείται συμβάν,είναι γεγονότα που προκαλούν τη μετάβαση από τη μια κατάσταση στην άλλη.

Όταν ένας πελάτης κάνει ανάληψη χρημάτων από έναν ανοιχτό λογαριασμό, ο λογαριασμός μπορεί να μεταβεί σε κατάσταση "Υπερπίστωσης". Αυτό συμβαίνει μόνο εάν το υπόλοιπο του λογαριασμού είναι μικρότερο από το μηδέν, το οποίο αντικατοπτρίζεται από τη συνθήκη [αρνητικό υπόλοιπο] στο διάγραμμά μας. Περιέχεται σε αγκύλες κατάστασηκαθορίζει πότε μπορεί ή δεν μπορεί να συμβεί μια μετάβαση από μια κατάσταση σε άλλη.

Υπάρχουν δύο ειδικές καταστάσεις στο διάγραμμα - αρχικόςΚαι τελικός.Η αρχική κατάσταση επισημαίνεται με μια μαύρη κουκκίδα: αντιστοιχεί στην κατάσταση του αντικειμένου τη στιγμή της δημιουργίας του. Η τελική κατάσταση υποδεικνύεται με μια μαύρη κουκκίδα σε έναν λευκό κύκλο: αντιστοιχεί στην κατάσταση του αντικειμένου αμέσως πριν την καταστροφή του. Μπορεί να υπάρχει μία και μόνο αρχική κατάσταση σε ένα διάγραμμα καταστάσεων. Ταυτόχρονα, μπορεί να υπάρχουν όσες τελικές καταστάσεις χρειάζεστε ή μπορεί να μην υπάρχουν καθόλου.

Όταν ένα αντικείμενο βρίσκεται σε μια συγκεκριμένη κατάσταση, ορισμένες διεργασίες μπορούν να εκτελεστούν. Στο παράδειγμά μας, εάν γίνει υπέρβαση της πίστωσης, αποστέλλεται αντίστοιχο μήνυμα στον πελάτη. Οι διεργασίες που συμβαίνουν όταν ένα αντικείμενο βρίσκεται σε μια συγκεκριμένη κατάσταση ονομάζονται δράσεις.

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

Τα κρατικά διαγράμματα χρειάζονται κυρίως για τεκμηρίωση.

10.4.7. Διαγράμματα εξαρτημάτων

Τα διαγράμματα συνιστωσών δείχνουν πώς φαίνεται ένα μοντέλο σε φυσικό επίπεδο. Απεικονίζει τα στοιχεία λογισμικού του συστήματός σας και τις μεταξύ τους συνδέσεις. Υπάρχουν δύο τύποι στοιχείων: εκτελέσιμα στοιχεία και βιβλιοθήκες κώδικα.

Στο Σχ. Το σχήμα 10.6 δείχνει ένα από τα διαγράμματα εξαρτημάτων για ένα σύστημα ATM. Αυτό το διάγραμμα δείχνει τα στοιχεία ενός πελάτη συστήματος ATM. Σε αυτήν την περίπτωση, η ομάδα ανάπτυξης αποφάσισε να δημιουργήσει το σύστημα χρησιμοποιώντας τη γλώσσα C++. Κάθε τάξη έχει το δικό της αρχείο κεφαλίδας και αρχείο επέκτασης. CPP, έτσι ώστε κάθε κλάση να μετατρέπεται στα δικά της στοιχεία στο διάγραμμα. Το επιλεγμένο σκοτεινό στοιχείο καλείται προδιαγραφές συσκευασίαςκαι αντιστοιχεί στο αρχείο σώματος κλάσης ATM σε C++ (αρχείο με επέκταση . CPP). Ένα μη επιλεγμένο στοιχείο ονομάζεται επίσης προδιαγραφή πακέτου, αλλά αντιστοιχεί σε ένα αρχείο κεφαλίδας κλάσης γλώσσας C++ (αρχείο με επέκταση .H). Εξάρτημα ATM. Το EXE είναι μια προδιαγραφή εργασιών και αντιπροσωπεύει τη ροή επεξεργασίας πληροφοριών. Σε αυτήν την περίπτωση, το νήμα επεξεργασίας είναι το εκτελέσιμο πρόγραμμα.

Τα εξαρτήματα συνδέονται με μια διακεκομμένη γραμμή, που αντιπροσωπεύει τις εξαρτήσεις μεταξύ τους. Ένα σύστημα μπορεί να έχει πολλαπλά διαγράμματα συνιστωσών ανάλογα με τον αριθμό των υποσυστημάτων ή εκτελέσιμα αρχεία. Κάθε υποσύστημα είναι ένα πακέτο εξαρτημάτων.

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

Ρύζι. 10.6.Διάγραμμα συνιστωσών

10.4.8. Διαγράμματα τοποθέτησης

Τα διαγράμματα τοποθέτησης δείχνουν φυσική τοποθεσίαδιάφορα στοιχεία του συστήματος στο δίκτυο. Στο παράδειγμά μας, το σύστημα ATM αποτελείται από μεγάλη ποσότηταυποσυστήματα που εκτελούνται σε ξεχωριστές φυσικές συσκευές ή κόμβους. Το διάγραμμα τοποθέτησης για το σύστημα ATM φαίνεται στην Εικ. 10.7.

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

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

10.7. Διάγραμμα τοποθέτησης

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

Από το βιβλίο του Microsoft Office συγγραφέας Λεοντίεφ Βιτάλι Πέτροβιτς

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

Από το βιβλίο Υπολογιστής για 100. Ας ξεκινήσουμε με Windows Vista συγγραφέας Zozulya Yuri

Διαγράμματα Τα γραφήματα χρησιμοποιούνται για την παρουσίαση δεδομένων σε πίνακα γραφική μορφή, που μπορεί να βελτιώσει σημαντικά την ορατότητα των πληροφοριών, δείχνουν την αναλογία διάφορες παραμέτρουςή τη δυναμική της αλλαγής τους. Για να εισαγάγετε διαγράμματα στο Word, χρησιμοποιήστε τα εργαλεία

Από το βιβλίο Αποτελεσματική Εργασία Γραφείου συγγραφέας Πτασίνσκι Βλαντιμίρ Σεργκέεβιτς

Διαγράμματα Το πιο οπτικό χαρακτηριστικό του Excel είναι η παρουσίαση αποτελεσμάτων υπολογισμού ή συσσωρευμένων δεδομένων με τη μορφή γραφημάτων (διαγραμμάτων): μερικές φορές οι πιο εντυπωσιακοί αριθμοί δεν είναι σε θέση να πείσουν με τον τρόπο που μπορούν να πείσουν ακόμη και τα απλά γραφικά. Το Excel έχει

Από ένα βιβλίο εργασίας του Excel. Μάθημα πολυμέσων συγγραφέας Medinov Oleg

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

Από το βιβλίο Word 2007. Δημοφιλές φροντιστήριο συγγραφέας Krainsky I

Δημιουργία γραφήματος Για το πρώτο παράδειγμα, θα χρειαστεί να δημιουργήσετε τον πίνακα που φαίνεται στο Σχ. 8.1. Ρύζι. 8.1. Πίνακας μέτρησης θερμοκρασίας Θα κατασκευάσουμε ένα απλό γράφημα μεταβολών θερμοκρασίας με βάση τα δεδομένα αυτού του πίνακα.1. Επιλέξτε το συμπληρωμένο εύρος στον πίνακα.2. Μεταβείτε στο

Από το βιβλίο Εγχειρίδιο αυτο-οδηγίας για εργασία σε υπολογιστή συγγραφέας Kolisnichenko Denis Nikolaevich

6.6. Διαγράμματα Εκτός από αρχεία γραφικών, μπορείτε να εισάγετε γραφήματα σε έγγραφα του Word. Χρησιμοποιώντας διαγράμματα, μπορείτε να παρουσιάσετε οπτικά αριθμητικά δεδομένα, για παράδειγμα, να παρακολουθήσετε πώς αλλάζουν τα δεδομένα, να δείτε την ανάπτυξη ενός συγκεκριμένου έργου με την πάροδο του χρόνου. Τα διαγράμματα είναι παρόμοια

Από το βιβλίο Αντικειμενοστρεφής Ανάλυση και Σχεδίαση με Παραδείγματα Εφαρμογών σε C++ του Μπουτς Γκρέιντι

14.9. Διαγράμματα Ίσως ήρθε η ώρα να μετατρέψουμε τους ξηρούς αριθμούς σε γραφικά, κάνοντας το τραπέζι μας πιο όμορφο και κατατοπιστικό; Για αυτό χρησιμοποιούνται διαγράμματα. Ό,τι κι αν πείτε, ένα διάγραμμα γίνεται αντιληπτό καλύτερα από έναν πίνακα Για να δημιουργήσετε ένα διάγραμμα, πρέπει να επιλέξετε τις τιμές με τις οποίες

Από το βιβλίο Τεχνολογίες Προγραμματισμού συγγραφέας Kamaev V A

5.2. Διαγράμματα τάξης Βασικά: Οι τάξεις και οι σχέσεις τους Ένα διάγραμμα κλάσης δείχνει τις τάξεις και τις σχέσεις τους, αντιπροσωπεύοντας έτσι τη λογική πτυχή ενός έργου. Ένα ξεχωριστό διάγραμμα κλάσης αντιπροσωπεύει μια συγκεκριμένη άποψη της δομής της τάξης. Στο στάδιο της ανάλυσης εμείς

Από το βιβλίο Business Process Modeling with BPwin 4.0 συγγραφέας Maklakov Sergey Vladimirovich

5.4. Διαγράμματα αντικειμένων Βασικά: Τα αντικείμενα και οι σχέσεις τους Εμφανίζεται ένα διάγραμμα αντικειμένων υπάρχουσες εγκαταστάσειςκαι τις συνδέσεις τους στο λογικό σχεδιασμό του συστήματος. Με άλλα λόγια, ένα διάγραμμα αντικειμένων είναι ένα στιγμιότυπο της ροής των γεγονότων σε κάποια διαμόρφωση

Από το βιβλίο OrCAD PSpice. Ανάλυση ηλεκτρικά κυκλώματα από τον Keown J.

5.7. Διαγράμματα διαδικασίας. Βασικό: Επεξεργαστές, Συσκευές και Συνδέσεις Τα διαγράμματα διεργασιών χρησιμοποιούνται για την εμφάνιση της κατανομής των διεργασιών μεταξύ των επεξεργαστών σε ένα σχεδιασμό φυσικού συστήματος. Ένα ενιαίο διάγραμμα διαδικασίας δείχνει μια άποψη της δομής της διαδικασίας

Από το βιβλίο VBA for Dummies από τον Steve Cummings

10.4. ΔΙΑΓΡΑΜΜΑΤΑ UML 10.4.1. Τύποι οπτικών διαγραμμάτων Το UMLUML σάς επιτρέπει να δημιουργήσετε διάφορους τύπους οπτικών διαγραμμάτων: χρησιμοποιήστε διαγράμματα περιπτώσεων. διαγράμματα ακολουθίας? διαγράμματα συνεργασίας? διαγράμματα τάξης? διαγράμματα κατάστασης? διαγράμματα

Από το βιβλίο Εγχειρίδιο αυτο-εκπαίδευσης για εργασία σε Macintosh συγγραφέας Σοφία Σκρυλίνα

1.2.6. Πλαίσιο διαγράμματος Στο Σχ. Το Σχήμα 1.2.26 δείχνει ένα τυπικό παράδειγμα ενός διαγράμματος αποσύνθεσης με οριοθετημένα πλαίσια που ονομάζονται πλαίσιο διαγράμματος. Ρύζι. 1.2.26. Παράδειγμα διαγράμματος αποσύνθεσης με wireframe Το wireframe περιέχει μια κεφαλίδα (πάνω μέρος του πλαισίου) και ένα υποσέλιδο (κάτω μέρος του πλαισίου).

Από το βιβλίο του συγγραφέα

Διαγράμματα χρονισμού Για να αποκτήσετε τα διαγράμματα χρονισμού των τάσεων εισόδου και εξόδου, πρέπει να αλλάξετε ελαφρά αρχείο εισόδου. Όπως στο προηγούμενο παράδειγμα, θα χρησιμοποιηθεί ημιτονοειδής τάση εισόδου: Vi 1 0 sin (0 0. 5V 5kHz) Μαζί με μεταβατική ανάλυση

Από το βιβλίο του συγγραφέα

Διαγράμματα και γραφήματα Μόνο ένας ειδικός μπορεί να διακρίνει το νόημα πίσω από ατελείωτες σειρές αριθμών, αλλά ο καθένας μπορεί να καταλάβει (ή τουλάχιστον να ισχυριστεί ότι κατανοεί) ένα ιστόγραμμα ή ένα γράφημα πίτας. Η VBA δεν έχει ενσωματωμένα εργαλεία για τη δημιουργία διαγραμμάτων, αλλά τέτοια

Από το βιβλίο του συγγραφέα

5.1.14. Διαγράμματα Τα γραφήματα είναι γραφικές αναπαραστάσεις αριθμητικών δεδομένων σε έναν πίνακα. Το Pages προσφέρει διάφορους τύπους γραφημάτων: Στήλη, Στοιβαγμένη στήλη, Γράφημα ράβδων, Γράφημα στοιβαγμένης ράβδου, Γραμμή, Περιοχή, Στοιβαγμένη περιοχή

Από το βιβλίο του συγγραφέα

5.2.8. Διαγράμματα Ένα γράφημα είναι μια γραφική αναπαράσταση δεδομένων από μια επιλεγμένη περιοχή Για να δημιουργήσετε ένα γράφημα, ακολουθήστε τον ακόλουθο αλγόριθμο1. Δημιουργήστε έναν πίνακα υπολογισμένων τιμών.2. Επιλέξτε το επιθυμητό εύρος (μπορεί να αποτελείται από μη γειτονικά ορθογώνια



Συνιστούμε να διαβάσετε

Κορυφή