ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ Οι Μηχανικοί Λογισμικού παράγουν μοντέλα που βοηθούν στη διατύπωση των απαιτήσεων με τη μορφή προδιαγραφών. Η εργασία της παραγωγής μοντέλων περιγράφεται ως ανάλυση απαιτήσεων. Η ανάλυση απαιτήσεων έπεται της εξαγωγής απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων Προσεγγίσεις Μοντελοποίησης Μοντελοποίηση δεδομένων Διαγράμματα ροής δεδομένων Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων
Δημιουργία μοντέλου Μοντελοποίηση : μια ιδεατή παράσταση που απεικονίζει σε κάποιο βαθμό τα χαρακτηριστικά του συστήματος που στην πραγματικότητα θα υλοποιήσουμε. Το μοντέλο δίνει ευανάγνωστη πληροφορία σχετικά με ποια δεδομένα επεξεργάζεται το σύστημα μας, ποιες λειτουργίες εκτελεί, ποιες συμπεριφορές υλοποιεί προσφέρει τη δυνατότητα ευκολίας επέκτασης και διόρθωσης σαφήνεια και συνέπεια στη περιγραφή
Δημιουργία μοντέλου Ένα μοντέλο δεν δημιουργείται με τη πρώτη προσπάθεια. Ξεκινούμε με μια πρώτη προσέγγιση και στη συνέχεια με πολλές αναθεωρήσεις, επεκτείνουμε, συμπληρώνουμε, διορθώνουμε μέχρι να καταστεί πλήρες, σαφές και συνεπές
Χρήση μοντέλων ανάλυσης Τα μοντέλα ανάλυσης χρησιμοποιούνται: Ως μέσο κατανόησης Ως μέσο επικοινωνίας Ως μέσο προδιαγραφής των απαιτήσεων Ως γέφυρα προς τη σχεδίαση Ως μέσο ιχνηλάτησης
Προσεγγίσεις Μοντελοποίησης Μοντέλα δεδομένων (Διαγράμματα Οντοτήτων - Συσχετίσεων) Μοντέλα βασισμένα στη ροή δεδομένων (ΔΡΔ) Μοντέλα βασισμένα στη ροή ελέγχου (Διαγράμματα ροής, Διαγράμματα δραστηριοτήτων Activity diagrams) Μοντέλα καταστάσεων και μεταβάσεων (Διαγράμματα μηχανής καταστάσεων) Αντικειμενοστραφή μοντέλα (διαγράμματα κλάσεων Class diagrams, διαγράμματα συνεργασίας collaboration diagrams, διαγράμματα επικοινωνίας, διαγράμματα ακολουθίας) Μοντέλα περιπτώσεων χρήσης Δεν υπάρχει κακό ή καλό μοντέλο. Επιλογή με βάση την καταλληλότητα, την εμπειρία Μπορεί να χρησιμοποιηθούν όλα μαζί ή κάποια από αυτά!!!
Καταγραφή Απαιτήσεων (με διαγράμματα) Μοντέλα Παράστασης Λογισμικού (διαγράμματα) Περιγράφουν το λογισμικό από διάφορες οπτικές γωνίες Η κάθε οπτική γωνία «βλέπει» το λογισμικό με διαφορετικό τρόπο, ανάλογα με τα χαρακτηριστικά που εντοπίζει κανείς την συγκεκριμένη στιγμή
Καταγραφή Απαιτήσεων (με διαγράμματα) Υπάρχουν διάφορα μοντέλα παράστασης λογισμικού Ανάλογα με την μεθοδολογία ανάπτυξης Ανάλογα με τις διαφορετικές εκδοχές της ίδιας μεθοδολογίας Έχουμε τα εξής Διαγράμματα (δεδομενολειτουργική ανάλυση): Ροής Δεδομένων Οντοτήτων συσχετίσεων ΚΑΙ διαγράμματα UML (Αντικειμενοστραφής ανάλυση)
Συμπληρωματικότητα μοντέλων Κανένα μοντέλο από μόνο του δεν περιγράφει πλήρως το λογισμικό Όλα μαζί όμως??? Εξασφάλιση ΣΥΝΕΠΕΙΑΣ μεταξύ των μοντέλων, με την παροχή αναφορών σε κάθε οντότητα κάθε μοντέλου
Διαγράμματα Ροής Δεδομένων (ΔΡΔ) Εύκολα κατανοητά Περιγράφουν με ακρίβεια ΠΟΙΕΣ λειτουργίες θα εκτελούνται (όχι το πώς) Περιγράφουν πολλά επιμέρους τμήματα του λογισμικού Μπορεί να περιγράψουν διαφορετικά επίπεδα λεπτομέρειας Δεν αναφέρονται στη χρονική σειρά της επεξεργασίας των δεδομένων Εύκολα στη συντήρηση
Διαγράμματα Ροής Δεδομένων (Βασικά Σύμβολα) Τα Διαγράμματα Ροής Δεδομένων είναι μια γραφική γλώσσα που διαθέτει τέσσερεις «λέξεις»
Συμβουλές για την κατασκευή διαγραμμάτων ροής δεδομένων Μην ασχολείστε με δευτερεύοντα δεδομένα π.χ. προσωρινή μεταβλητή μνήμης Να απεικονίζετε και την αποσύνθεση δεδομένων μαζί με την αποσύνθεση διαδικασιών, όπου υπάρχει. Μη συγχέετε την ροή δεδομένων με οποιαδήποτε κατασκευαστική λεπτομέρεια εξαρτάται από τη γλώσσα προγραμματισμού ή το περιβάλλον λειτουργίας Μην ανησυχείτε για την χρονική σειρά των διαδικασιών. Αυτή θα παρασταθεί με διαγράμματα μετάβασης καταστάσεων ή με ψευδοκώδικα Να υπάρχει ισορροπία μεταξύ λεπτομέρειας και αφαίρεσης Χρησιμοποιείται εξειδικευμένα εργαλεία για την κατασκευή των διαγραμμάτων (π.χ. rational rose) αντί απλά σχεδιαστικά προγράμματα.
Διαγράμματα Ροής Δεδομένων (Παραδείγματα) Τα ΔΡΔ είναι μια γραφική προσέγγιση για την περιγραφή της ροής της πληροφορίας μέσα σε ένα σύστημα. Η πληροφορία στην είσοδο μετασχηματίζεται σε πληροφορία εξόδου από τρεις απλούς μετασχηματισμούς.
Διαγράμματα Ροής Δεδομένων (Εκλέπτυνση) Τα ΔΡΔ ενός συστήματος έχουν μια ιεραρχία. Στο επίπεδο 0 ή 1 έχουμε το ΔΡΔ του συνολικού συστήματος Το πρώτο πρωταρχικό μοντέλο ονομάζεται διάγραμμα περιβάλλοντος (context diagram) Το διάγραμμα περιβάλλοντος εμφανίζει το περιβάλλον του Λογισμικού και όχι τις λεπτομέρειες των λειτουργιών του. Το όλο λογισμικό μπορεί να θεωρηθεί ως ένας μετασχηματισμός που δέχεται πληροφορία ως είσοδο και παράγει πληροφορία στην έξοδο. Το ΔΡΔ αναπτύσσεται ξεκινώντας από αυτό το πρωταρχικό μοντέλο που παριστά το λογισμικό σαν έναν απλό μετασχηματισμό και στη συνέχεια εκλεπτύνεται με μια σειρά ΔΡΔ μέχρι να θεωρήσουμε ότι αναπτύχθηκε όλη η απαραίτητη λεπτομέρεια.
Διαγράμματα Ροής Δεδομένων (Εκλέπτυνση)
Διαγράμματα Ροής Δεδομένων (Εκλέπτυνση)
Διαγράμματα Ροής Δεδομένων (Παραδείγματα) o Στο παρακάτω σχήμα έχουμε ένα παράδειγμα ΔΡΔ για μια ιατρική εξέταση. o Οι περισσότερες διαδρομές είναι έξοδοι από ένα μετασχηματισμό και είσοδοι σε άλλον. o Σε τρεις περιπτώσεις ζητούνται δεδομένα από εξωτερική πηγή. Αυτό παριστάνεται με τη ροή πληροφορίας από αποθήκες πληροφορίας. o Επειδή το ΔΡΔ είναι ένα από ένα σύνολο διαγραμμάτων πολλών επιπέδων, είναι εύκολο να δούμε το Επίσκεψη στο Φαρμακείο σαν ένα άλλο διάγραμμα που περιγράφει το πώς η είσοδος επεξεργάζεται για να γίνει έξοδος.
Διαγράμματα Ροής Δεδομένων (Παραδείγματα)
Διαγράμματα Ροής Δεδομένων (Παραδείγματα)
Διαγράμματα Ροής Δεδομένων (Παραδείγματα)
Διαγράμματα Ροής Δεδομένων (Παραδείγματα)
Διαγράμματα Ροής Δεδομένων (Παραδείγματα)
Λεξικό Δεδομένων Για να είναι πλήρες ένα ΔΡΔ, θα πρέπει να δημιουργηθεί ένα Λεξικό Δεδομένων (ΛΔ), το οποίο συνοδεύει τα διαγράμματα. Το ΛΔ είναι μια οργανωμένη καταγραφή όλων των δεδομένων και των ιδιοτήτων τους. Μπορεί να είναι ανεξάρτητο έγγραφο της ανάλυσης ή να ενσωματώνεται στο γλωσσάρι. Ένα ΛΔ περιγράφει απλά δεδομένα, όπως οι συμβολοσειρές, τα αριθμητικά δεδομένα ή μερικές φορές και σύνθετα δεδομένα. Μπορεί να δημιουργηθεί αυτόματα από CASE tools Ο πίνακας του ΛΔ περιλαμβάνει τα ακόλουθα πεδία: Μορφές δεδομένων, μέγεθος δεδομένων, όρια τιμών, αρχική τιμή, λοιπά στοιχεία.
Διαγράμματα Ροής Δεδομένων (Παράδειγμα ΛΔ)
Συστάσεις για τη δημιουργία ΔΡΔ (1/4) Μεταξύ των επεξεργασιών κυκλοφορούν μόνο δεδομένα (όχι υλικά ή έντυπα). Η ροή δεδομένων απεικονίζει την πληροφορία που συνοδεύει μία συναλλαγή και όχι φυσικές οντότητες. Τα δεδομένα εξόδου θα πρέπει να είναι διαφορετικά από τα δεδομένα εισόδου. Τα ΔΡΔ δεν είναι διαγράμματα ροής ελέγχου και δεν απεικονίζουν αποφάσεις ελέγχου, επαναληπτικούς βρόγχους ή άλλες ροές ελέγχου.
Συστάσεις για τη δημιουργία ΔΡΔ (2/4) Το επίπεδο 0 (ή 1) του ΔΡΔ αποτυπώνει το σύστημα ως μια επεξεργασία. Τα δεδομένα εισόδου και εξόδου του μηδενικού επιπέδου πρέπει να επιλέγονται με μεγάλη προσοχή, ώστε να αντιπροσωπεύουν επακριβώς εκείνα του προβλήματος που επιλύουμε. Για κάθε εκλέπτυνση πρέπει να γνωρίζουμε ακριβώς ποιες επεξεργασίες και ποια δεδομένα αφορά.
Συστάσεις για τη δημιουργία ΔΡΔ (3/4) Κάθε δεδομένο διατηρεί το ίδιο όνομα σε όλα τα επίπεδα εκλέπτυνσης. Τα ονόματα που δίδουμε στα δεδομένα και στις επεξεργασίες του συστήματος θα πρέπει να έχουν κατάλληλα επιλεγεί, ώστε να βοηθούν στη εύκολη κατανόηση των ΔΡΔ. Κάθε εκλέπτυνση καλό είναι να αφορά μια επεξεργασία κάθε φορά.
Συστάσεις για τη δημιουργία ΔΡΔ (4/4) Η εκλέπτυνση μιας επεξεργασίας σε επόμενο επίπεδο χαρακτηρίζεται από το ότι το σύνολο των δεδομένων εισόδου και το σύνολο των δεδομένων εξόδου παραμένουν αναλλοίωτα από επίπεδο σε επίπεδο. Χρειάζεται μεγάλη προσοχή στο πότε θα πρέπει να σταματά η εκλέπτυνση σε επόμενο επίπεδο λεπτομέρειας. Η εκλέπτυνση των ΔΡΔ σταματά, όταν κάθε επεξεργασία εκτελεί μια απλή λειτουργία, εύκολα κατανοητή και υλοποιήσιμη ως μονάδα προγράμματος.
Πλεονεκτήματα ΔΡΔ (1/2) η απλότητά τους εξασφαλίζουν στα αρχικά στάδια της εργασίας μια δομημένη προσέγγιση εξασφαλίζουν ένα πλαίσιο για την προδιαγραφή των απαιτήσεων λογισμικού. H γραφική φύση των ΔΡΔ τα κάνει ευανάγνωστα και εύκολα αντιληπτά και διευκολύνει την αναθεώρησή τους.
Πλεονεκτήματα ΔΡΔ (2/2) Οδηγούν απευθείας στον προσδιορισμό των λειτουργιών του λογισμικού καθώς και στην περιγραφή όλων των εσωτερικών διεπαφών μεταξύ των λειτουργιών όπως επίσης και των εξωτερικών διεπαφών με άλλο λογισμικό. εξασφαλίζουν ιχνηλασιμότητα μεταξύ απαιτήσεων και σχεδίου και διευκολύνουν τη μεθοδολογία σχεδίασης.
Μειονεκτήματα ΔΡΔ δεν είναι κατάλληλα για την απεικόνιση ροής ελέγχου. δεν είναι κατάλληλα για πολύπλοκες ή παράλληλες διαδικασίες. δεν έχουν συμβολισμό για την μοντελοποίηση των δεδομένων. λόγω της παλαιότητάς τους δεν είναι συμβατά με το αντικειμενοστρεφές υπόδειγμα, το οποίο είναι πλέον το κυρίαρχο υπόδειγμα ανάπτυξης.
Διαγράμματα Κλάσεων Χρησιμοποιούνται στην ανάλυση των απαιτήσεων και στη σχεδίαση του λογισμικού Είναι στατικά διαγράμματα που δείχνουν κλάσεις, ιδιότητες, λειτουργίες και σχέσεις μεταξύ κλάσεων
Διαγράμματα Κλάσεων Κλάσεις Ο συμβολισμός των κλάσεων έχει τρία τμήματα: Το όνομα της κλάσης Τις ιδιότητες (attributes) της κλάσης Τις λειτουργίες (operations) της κλάσης
Διαγράμματα Κλάσεων Ιδιότητες Οι ιδιότητες (attributes) παραπέμπουν στα πεδία της Java και σχετίζονται με δεδομένα της κλάσης Τυπική σύνταξη ιδιοτήτων Όνομα : Τύπος = αρχική_τιμή Ο τύπος μπορεί να είναι ένας τύπος της UML, κάποιος τύπος της γλώσσας προγραμματισμού ή κάποια κλάση Παραγόμενες (derived) ιδιότητες είναι αυτές που η τιμή τους προκύπτει από άλλες ιδιότητες της κλάσης. Οι παραγόμενες ιδιότητες έχουν το σύμβολο / πριν από το όνομα.
Διαγράμματα Κλάσεων Ιδιότητες Η ιδιότητα age είναι παραγόμενη ιδιότητα
Διαγράμματα Κλάσεων Λειτουργίες Οι λειτουργίες (operations) παραπέμπουν στις μεθόδους της Java Τυπική σύνταξη Όνομα(Παράμετρος1 : Τύπος1, Παράμετρος2 : Τύπος2, ) : Τύπος_Επιστροφής Όπως και οι μέθοδοι της Java, έτσι και οι λειτουργίες της UML έχουν υπογραφές (signatures) Η υπογραφή μιας λειτουργίας είναι ο συνδυασμός του ονόματος, του πλήθους των παραμέτρων και της σειράς των τύπων στον κατάλογο παραμέτρων.
Διαγράμματα Κλάσεων Λειτουργίες
Διαγράμματα Κλάσεων Λειτουργίες Αν και οι λειτουργίες μίας κλάσης παραπέμπουν στις μεθόδους της, οι δύο έννοιες δεν είναι ταυτόσημες. Με τη UML ορίζουμε μία λειτουργία ως μία υπηρεσία που παρέχουν τα αντικείμενα της κλάσης. Η μέθοδος είναι μία υλοποίηση της λειτουργίας δηλαδή της υπηρεσίας που παρέχεται από τα αντικείμενα. Επομένως, μία απλή διάκριση είναι ότι οι λειτουργίες παρέχουν τις διεπαφές για την παροχή των υπηρεσιών, ενώ οι μέθοδοι παρέχουν την υλοποίησή τους. Με τον πολυμορφισμό μπορούμε να έχουμε διαφορετικές μεθόδους που υλοποιούν την ίδια λειτουργία.
Διαγράμματα Κλάσεων Συσχετίσεις Η συσχέτιση (association) αναπαριστά κάποια σύνδεση των αντικειμένων δύο κλάσεων Απεικονίζει τη σχέση μεταξύ των κλάσεων Οι συσχετίσεις ονοματίζονται με ρήματα Οι συσχετίσεις μεταξύ κλάσεων «μοιάζουν» με τις συσχετίσεις μεταξύ οντοτήτων στα Διαγράμματα Οντοτήτων Συσχετίσεων των Βάσεων Δεδομένων.
Διαγράμματα Κλάσεων Πολλαπλότητα Συσχετίσεων Η πολλαπλότητα αναπαριστά τον αριθμό των αντικειμένων στα άκρα μιας συσχέτισης. Στο παράδειγμα, κάθε αντικείμενο της κλάσης Πρόσωπο συσχετίζεται με ακριβώς ένα αντικείμενο της κλάσης Αυτοκίνητο και αντιστρόφως.
Διαγράμματα Κλάσεων Πολλαπλότητες Συσχετίσεων
Διαγράμματα Κλάσεων Πολλαπλότητες Συσχετίσεων
Διαγράμματα Κλάσεων Συσσωμάτωση Η συσσωμάτωση (aggregation) είναι μία ειδική μορφή συσχέτισης. Είναι μία συσχέτιση όλου τμήματος. Η κλάση Α αναπαριστά το «όλο» και η κλάση Β το «τμήμα» Δεν επιτρέπονται «κύκλοι» συσσωματώσεων Η διάκριση από τη συσχέτιση έχει περισσότερο εννοιολογικό χαρακτήρα: το «όλο» δεν μπορεί να «λειτουργήσει» χωρίς το «τμήμα».
Διαγράμματα Κλάσεων Συσσωμάτωση
Διαγράμματα Κλάσεων Συσσωμάτωση (Παράδειγμα) Το αυτοκίνητο έχει ως τμήμα του ένα κινητήρα. Ο κινητήρας μπορεί να είναι τμήμα πολλών αυτοκινήτων. Σημασιολογική ερμηνεία: «Το αυτοκίνητο δεν μπορεί να λειτουργήσει χωρίς τον κινητήρα».
Διαγράμματα Κλάσεων Συσσωμάτωση (Παράδειγμα) Τα αντικείμενα της κλάσης Κινητήρας και Τροχός έχουν τη δική τους ξεχωριστή υπόσταση. Μπορούν να δημιουργηθούν ανεξάρτητα από τα αντικείμενα της κλάσης Αυτοκίνητο και κάποια στιγμή ένας Κινητήρας ή Τροχός να τοποθετηθεί σε κάποιο αυτοκίνητο.
Διαγράμματα Κλάσεων Σύνθεση Η σύνθεση (composition) είναι μία ισχυρή μορφή συσσωμάτωσης Το όλο ελέγχει πλήρως τα τμήματά του και ιδιαίτερα τον κύκλο ζωής τους. Π.χ. η διαγραφή ενός αντικειμένου «όλου» διαγράφει και τα τμήματά του. Η πρόσβαση σε κάποιο «τμήμα» γίνεται αποκλειστικά μέσω του «όλου»
Διαγράμματα Κλάσεων Σύνθεση Η σύνθεση θέτει δύο επιπλέον περιορισμούς στη σχέση Όλου Τμήματος: Κάθε αντικείμενο «Τμήμα» ανήκει αποκλειστικά σε ένα αντικείμενο «Όλο». Ένα αντικείμενο «Όλο» είναι ο αποκλειστικός ιδιοκτήτης των τμημάτων του. Αντίθετα, η σχέση της συσσωμάτωσης επιτρέπει σε ένα τμήμα να ανήκει σε περισσότερα από ένα αντικείμενα «όλο». Το αντικείμενο «όλο» αναλαμβάνει την πλήρη ευθύνη για τη διαχείριση των τμημάτων του. Την ευθύνη για τη δημιουργία και καταστροφή των τμημάτων την αναλαμβάνουν τα αντικείμενα της κλάσης «όλο».
Διαγράμματα Κλάσεων Σύνθεση (Παράδειγμα -1) Το αυτοκίνητο έχει ως τμήμα τον κινητήρα του. Ο κινητήρας δεν μπορεί να ανήκει ταυτόχρονα σε άλλο αυτοκίνητο. Ο έξω κόσμος δεν έχει πρόσβαση στον κινητήρα παρά μόνο μέσω του αυτοκινήτου.
Διαγράμματα Κλάσεων Σύνθεση (Παράδειγμα -2) Ένα έγγραφο («όλο») μπορεί να αποτελείται από καμία, μία, ή περισσότερες παραγράφους («τμήματα»). Μια παράγραφος ανήκει αποκλειστικά σε ένα έγγραφο και δεν τίθεται θέμα πολλαπλότητας στην άκρη του όλου. Αντικείμενα της κλάσης Παράγραφος υπάρχουν αποκλειστικά ως τμήματα της κλάσης Έγγραφο. o Δεν νοείται η δημιουργία μιας παραγράφου «έξω» από ένα Έγγραφο. o Όταν διαγραφεί ένα έγγραφο διαγράφονται όλες οι παράγραφοι.
Διαγράμματα Κλάσεων Αυτοσυσχέτιση Αντικείμενα μιας κλάσης συσχετίζονται με αντικείμενα της ίδιας κλάσης. Στο παράδειγμα: κάθε εργαζόμενος μπορεί να έχει κάποιο προϊστάμενο και ταυτόχρονα να έχει και υφισταμένους τους οποίους εποπτεύει. Πρέπει να εμφανίζουμε τα ονόματα άκρων, προκειμένου να είναι κατανοητή η σημασία της συσχέτισης. Στο παράδειγμα: έχουμε αυτοσυσχέτιση ένα-προς-πολλά. Η αυτοσυσχέτιση του σχήματος παράγει ιεραρχία αντικειμένων
Διαγράμματα Κλάσεων Κλάση Συσχέτισης Μία κλάση συσχέτισης (association class) αποδίδει ιδιότητες και λειτουργίες σε μία συσχέτιση Μπορεί να χρησιμοποιηθεί, όταν κάποιες ιδιότητες ή λειτουργίες ανήκουν στην ίδια τη συσχέτιση και όχι στις δύο συσχετιζόμενες κλάσεις. Η κλάση C είναι η κλάση συσχέτισης των Α και B Χρησιμοποιείται συνήθως σε συσχετίσεις «πολλάπρος-πολλά»
Διαγράμματα κλάσεων Παράδειγμα Κλάσης Συσχέτισης Ένας υπάλληλος εργάζεται σε πολλές εταιρείες και κάθε εταιρεία έχει πολλούς υπαλλήλους Ερώτημα: Πώς θα απεικονιστεί ο μισθός που λαμβάνει ένας υπάλληλος από μία εταιρεία? Η ιδιότητα μισθός δεν μπορεί να εισαχθεί: Ούτε ως ιδιότητα της κλάσης Εργαζόμενος, επειδή ο εργαζόμενος εργάζεται σε πολλές εταιρείες. Ούτε ως ιδιότητα της κλάσης Εταιρεία, γιατί η Εταιρεία, έχει πολλούς εργαζόμενους
Διαγράμματα κλάσεων Παράδειγμα κλάσης Συσχέτισης Υπάρχουν δύο λύσεις. Η πρώτη είναι με την κλάση συσχέτισης. Η δεύτερη είναι με «ενδιάμεση ή παρεμβαλλόμενη» κλάση. Ο περιορισμός της κλάσης συσχέτισης είναι ότι ο υπάλληλος δεν μπορεί να έχει δύο εργασίες στην ίδια εταιρεία. Στο συγκεκριμένο παράδειγμα η κλάση συσχέτισης είναι η σωστή λύση
Διαγράμματα κλάσεων Παράδειγμα κλάσης Συσχέτισης Η ιδιότητα μισθός εισάγεται ως ιδιότητα της κλάσης συσχέτισης Εργασία, έτσι ώστε να έχουμε το μισθό για κάθε επιτρεπτό συνδυασμό εργαζομένου και εταιρείας.
Διαγράμματα κλάσεων Παράδειγμα κλάσης Συσχέτισης Η κλάση Εργασία είναι μια απλή κλάση που παρεμβάλλεται μεταξύ των κλάσεων Εργαζόμενος και Εταιρεία, προσαρμόζοντας ανάλογα την πολλαπλότητα στα άκρα των συσχετίσεων. Αντί να έχουμε μια συσχέτιση πολλά-προς-πολλά, έχουμε δύο συσχετίσεις ένα προς πολλά.
Διαφορές κλάσης συσχέτισης και παρεμβαλλομένης κλάσης Οι δύο λύσεις μοιάζουν, αλλά δεν είναι ίδιες. Η χρήση της κλάσης συσχέτισης υπονοεί επιπλέον ότι δεν μπορεί να υπάρξουν δύο αντικείμενα της κλάσης συσχέτισης για τον ίδιο συνδυασμό αντικειμένων των κλάσεων που συσχετίζονται. Στο συγκεκριμένο παράδειγμα η κλάση συσχέτισης Εργασία μάς λέει ότι ένας εργαζόμενος μπορεί να εργάζεται σε διαφορετικές εταιρείες, αλλά δεν μπορεί ταυτόχρονα να έχει δύο εργασίες στην ίδια εταιρεία. Αντίθετα, στη λύση όπου η κλάση Εργασία απλώς παρεμβάλλεται μεταξύ του εργαζομένου και τις εταιρείας, επιτρέπεται ένας εργαζόμενος να έχει πολλές εργασίες στην ίδια εταιρεία και να εισπράττει βέβαια πολλούς μισθούς από την ίδια εταιρεία.
Διαφορές κλάσης συσχέτισης και παρεμβαλλομένης κλάσης Έτσι στις συσχετίσεις πολλά-προς-πολλά, ανάλογα με τη σημασιολογία που προκύπτει από το πρόβλημα, επιλέγεται η κλάση συσχέτισης ή η παρεμβαλλόμενη κλάση. Η θεωρητική ερμηνεία των κλάσεων συσχέτισης είναι ότι κάθε αντικείμενο της κλάσης συσχέτισης δεν έχει την δική του ταυτότητα. Η ταυτότητα των αντικειμένων της προκύπτει από τον συνδυασμό των ταυτοτήτων των αντικειμένων των κλάσεων στα άκρα της συσχέτισης
Διαγράμματα Κλάσεων Γενίκευση Η γενίκευση παραπέμπει στην κληρονομικότητα. Η κλάση Β είναι υποκλάση της κλάσης Α. Η υποκλάση κληρονομεί ιδιότητες, συσχετίσεις και λειτουργίες της υπερκλάσης. Μία υποκλάση μπορεί να επαναορίσει (override) λειτουργίες της υπερκλάσης της.
Διαγράμματα Κλάσεων Γενίκευση Οι κλάσεις Circle, Square και Triangle είναι υποκλάσεις της Shape. Σε ένα διάγραμμα κλάσεων μπορούμε να έχουμε μια ιεραρχία κλάσεων, όπου μία κλάση μπορεί να είναι ταυτόχρονα και υπερκλάση και υποκλάση. Η UML επιτρέπει και την πολλαπλή κληρονομικότητα, όπου μία κλάση είναι υποκλάση περισσότερων από μία υπερκλάσεων
Διαγράμματα Αντικειμένων Εμφανίζουν κάποιο στιγμιότυπο των κλάσεων και των σχέσεων τους Σε ένα διάγραμμα αντικειμένων μπορούμε να εμφανίσουμε τις τιμές που παίρνουν οι ιδιότητες
Διαγράμματα Αντικειμένων Ο συμβολισμός των αντικειμένων είναι όμοιος με το συμβολισμό των κλάσεων με τη διαφορά ότι το τμήμα του ονόματος είναι υπογραμμισμένο. Τυπική σύνταξη αντικειμένου όνομα_αντικειμένου : όνομα_κλάσης Για ανώνυμα αντικείμενα : όνομα_κλάσης Οι ιδιότητες των κλάσεων έχουν πλέον και τιμές Σε ένα διάγραμμα αντικειμένων απεικονίζουμε ένα δίκτυο αντικειμένων για κάποια χρονική στιγμή
Σύνδεσμοι Αντικειμένων Είναι στιγμιότυπα των συσχετίσεων των κλάσεων
Χρήση Διαγραμμάτων Αντικειμένων Τα διαγράμματα αντικειμένων χρησιμοποιούνται ως συμπληρωματικό βοήθημα και ως εργαλείο επαλήθευσης των διαγραμμάτων κλάσεων. Ορισμένες φορές χρησιμοποιούνται όταν τα διαγράμματα κλάσεων δεν μπορούν να επιδείξουν κάποιες σημαντικές σχέσεις των αντικειμένων.
Χρήση Διαγραμμάτων Αντικειμένων (1 ο Παράδειγμα ιεραρχικής οργανωτικής δομής) Ας υποθέσουμε ότι θέλουμε να μοντελοποιήσουμε την οργανωτική δομή κάποιου οργανισμού. Ο οργανισμός ακολουθεί μια ιεραρχική δομή, όπου μια οργανωτική μονάδα εποπτεύει κάποιες άλλες χαμηλότερου επιπέδου. Το διάγραμμα κλάσεων που αποδίδει αυτή τη σχέση είναι το παρακάτω:
Χρήση Διαγραμμάτων Αντικειμένων (Παράδειγμα ιεραρχικής οργανωτικής δομής) Η ιεραρχία απεικονίζεται ως μια αυτοσυσχέτιση ένα προς πολλά. Το διάγραμμα κλάσεων δεν βοηθά για παράδειγμα στην απεικόνιση της οργανωτικής δομής της δανειστικής βιβλιοθήκης. Ένα διάγραμμα όμως αντικειμένων, όπως του Σχήματος 4-52 (της επόμενης διαφάνειας) απεικονίζει τη συγκεκριμένη δομή. Ο οργανισμός ακολουθεί την ιεραρχική δομή, όπου μια οργανωτική μονάδα εποπτεύει κάποιες άλλες χαμηλότερου επιπέδου (Σχήμα 4-52).
Χρήση Διαγραμμάτων Αντικειμένων (Παράδειγμα ιεραρχικής οργανωτικής δομής)
Χρήση Διαγραμμάτων Αντικειμένων (2 ο Παράδειγμα ιεραρχικής οργανωτικής δομής) Το διάγραμμα κλάσεων μας δίνει μία γενική δομή μίας ιεραρχίας Το διάγραμμα αντικειμένων μας δίνει την ίδια την ιεραρχία