ΚΛΑΣΕΙΣ, ΑΝΤΙΚΕΙΜΕΝΑ ΚΑΙ ΟΙ ΣΥΣΧΕΤΙΣΕΙΣ ΤΟΥΣ ΚΛΑΣΕΙΣ, ΑΝΤΙΚΕΙΜΕΝΑ ΚΑΙ ΟΙ ΣΥΣΧΕΤΙΣΕΙΣ ΤΟΥΣ 1. Γενικοί Ορισμοί 2. Κλάσεις και η Περιγραφή τους 3. Σχέσεις Μεταξύ Κλάσεων
Κλάσεις και διαγράμματα κλάσεων 1. Γενικοί Ορισμοί Εισαγωγή Αντικείμενα Κλάσεις Μοντελοποίηση Συστημάτων Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων Εισαγωγή Οι κλάσεις, τα αντικείμενα και οι μεταξύ τους συσχετίσεις είναι τα πρωταρχικά στοιχεία μοντελοποίησης στην αντικειμενοστραφή θεώρηση Οι κλάσεις και τα αντικείμενα περιγράφουν τι υπάρχει μέσα στο σύστημα που περιγράφουμε Οι συσχετίσεις μεταξύ τους περιγράφουν πως δομούνται το ένα συστατικό σε σχέση με το άλλο Όταν η υλοποίηση του συστήματος γίνεται σε μια αντικειμενοστραφή γλώσσα, οι κλάσεις και οι συσχετίσεις τους μεταμορφώνονται απ’ ευθείας σε κώδικα προγραμματισμού. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων Αντικείμενα Ένα αντικείμενο υπάρχει στον πραγματικό κόσμο (π.χ. Πελάτης) ή αντιστοιχεί στη θεώρηση που έχουμε για τον πραγματικό κόσμο (π.χ. Αντικείμενα που αναπαριστούν δομές δεδομένων: στοίβα, ουρά, κλπ.) Τα αντικείμενα μπορεί να μην υπάρχουν απ’ ευθείας στον κόσμο (π.χ. Αντικείμενα υλοποίησης σ’ ένα πρόγραμμα) – είναι παράγωγα της αντίληψής μας για τη συμπεριφορά και τη δομή των αντικειμένων του πραγματικού κόσμου 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων Μια κλάση είναι μια περιγραφή ενός τύπου αντικειμένου: περιγράφει τα χαρακτηριστικά και τη συμπεριφορά του συγκεκριμένου τύπου αντικειμένου Όλα τα αντικείμενα είναι στιγμιότυπα μιας κλάσης Η σχέση ενός αντικειμένου με μια κλάση είναι παρόμοια με τη σχέση μιας μεταβλητής με τον τύπο της μεταβλητής σε μια γλώσσα προγραμματισμού 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Μοντελοποίηση συστημάτων Χρήση εννοιών και αντικειμένων από τον πραγματικό κόσμο -> κατανοήσιμα μοντέλα Ένα σύστημα για μια ασφαλιστική εταιρεία, πρέπει να χρησιμοποιεί αντικείμενα όπως: συμβόλαιο ασφάλειας ζωής, ασφαλιζόμενος Ένα σύστημα για το στρατό πρέπει να χρησιμοποιεί αντικείμενα όπως: φαντάρος, όπλο, τανκς κλπ. Η μοντελοποίηση πρέπει να βασίζεται στα κύρια αντικείμενα του συστήματος για να μπορεί εύκολα να αλλάζει Τα μοντέλα πρέπει να είναι: κατανοήσιμα, να προσφέρονται για συζήτηση, εύκολα να πιστοποιηθούν και εύκολα να συντηρηθούν 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων Διαγράμματα Κλάσεων Είναι τύπος στατικού μοντέλου Περιγράφουν τη στατική άποψη ενός συστήματος με κλάσεις και συσχετίσεις Η διαφορά τους απ’ τα μοντέλα δεδομένων είναι ότι περιγράφουν και συμπεριφορά Αποτελούν τη βάση για άλλα διαγράμματα που δείχνουν άλλα χαρακτηριστικά του συστήματος Μια κλάση υλοποιείται απ’ ευθείας σε μια αντικειμενοστραφή γλώσσα πού υποστηρίζει άμεσα τη δομή της κλάσης 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Διάγραμμα Κλάσεων (παράδειγμα) Ασφαλιστική εταιρεία 1 0..* Συμβόλαιο ασφάλειας 0..* 0..* (or) 1..* 1..* Άτομο Εταιρεία 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Διαγράμματα Αντικειμένων Δείχνουν συσχετίσεις μεταξύ αντικειμένων (μπορούν να αναφέρονται σε συγκεκριμένο σενάριο) Τα διαγράμματα κλάσεων δείχνουν μόνο τις κλάσεις (δηλαδή των τύπο των αντικειμένων) και τις συσχετίσεις μεταξύ των κλάσεων 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Διάγραμμα Αντικειμένων (παράδειγμα) Bob’s PC: Υπολογιστής Bob : Ιδιοκτήτης Name =‘Bob.j’ age = 32 Name =‘Dell 466 memory=64 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
2. Κλάσεις και η Περιγραφή τους Τι είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ Ερωτήματα για την εύρεση Κλάσεων Αναπαράσταση Κλάσης στην UML Παραδείγματα Κλάσεων και Αντικειμένων Χαρακτηριστικά (attributes) Kλάσεων Λειτουργίες (Μέθοδοι) Κλάσεων Παραδείγματα 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Τι είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (1/3); Τι είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (1/3); Μια κλάση είναι μια περιγραφή ενός τύπου αντικειμένου: περιγράφει τα χαρακτηριστικά και τη συμπεριφορά του συγκεκριμένου τύπου αντικειμένου Όλα τα αντικείμενα είναι στιγμιότυπα μιας κλάσης Η σχέση ενός αντικειμένου με μια κλάση είναι παρόμοια με τη σχέση μιας μεταβλητής με τον τύπο της μεταβλητής σε μια γλώσσα προγραμματισμού 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Τι είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (2/3); Τι είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (2/3); Οι κλάσεις χρησιμοποιούνται για τη μοντελοποίηση και περιγραφή συστημάτων και για την ταξινόμηση αντικειμένων που υπάρχουν στον πραγματικό κόσμο Η τεχνική της δημιουργίας ιεραρχίας υπάρχει και στην αντικειμενοστραφή μοντελοποίηση και προγραμματισμό 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Τι είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (3/3); Τι είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (3/3); Μια κλάση μπορεί να περιγράφει αντικείμενα οποιουδήποτε συστήματος: πληροφοριακό σύστημα, επιχειρησιακό σύστημα, τεχνικό σύστημα, κατανεμημένο σύστημα, λογισμικό κλπ. Παραδείγματα κλάσεων σε πληροφοριακά ή επιχειρησιακά συστήματα είναι: πελάτης, συμφωνία, τιμολόγιο, δελτίο αποστολής 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Ερωτήματα για εύρεση κλάσεων Υπάρχει πληροφορία που θα πρέπει να περιγραφεί, αναλυθεί ή αποθηκευτεί; Υπάρχουν εξωτερικά συστήματα τα οποία αλληλεπιδρούν με το σύστημά μας; Υπάρχουν πρότυπα, βιβλιοθήκες κλάσεων ή άλλα συστατικά από προηγούμενες μελέτες; Υπάρχουν περιφερειακά που πρέπει να διαχειριστεί το σύστημα; Ποιος είναι ο ρόλος των διαφόρων χρηστών στο σύστημα; 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Αναπαράσταση κλάσης στη UML Όνομα Χαρακτηριστικά Μέθοδοι 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων ΠΑΡΑΔΕΙΓΜΑ ΚΛΑΣΗΣ και ΑΝΤΙΚΕΙΜΕΝΟΥ Όνομα Αυτοκίνητο Χαρακτηριστικά αριθμ.πινακίδας μοντέλο ταχύτητα κατεύθυνση Μέθοδοι Αfro΄s car: Αυτοκίνητο YIX 5831 Renault Clio 140 km Βορειοδυτική Ξεκίνα Επιτάχυνε Φρέναρε 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Χαρακτηριστικά (attributes) κλάσεων H γενική περιγραφή ενός χαρακτηριστικού είναι : ορατότητα όνομα : τύπος=αρχική τιμή {property string} π.χ. +κατάσταση: Κατάσταση = απλήρωτο {απλήρωτο, πληρωμένο} Μόνο το όνομα και ο τύπος είναι υποχρεωτικά (αν η ανάπτυξη γίνει σε γλώσσα που δεν υποστηρίζει τύπους, ούτε ο τύπος είναι υποχρεωτικός) Τύπος: Μπορεί να είναι πρωταρχικός τύπος όπως ακέραιος, πραγματικός, boolean, κ.λ.π. Μπορεί να είναι μια κλάση αντικειμένων Ορατότητα: Περιγράφει αν το χαρακτηριστικό είναι ορατό και αν μπορούν να αναφερθούν σε αυτό άλλες κλάσεις, εκτός από αυτή στην οποία ορίζεται (- + #). 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων Μια κλάση με ιδωτικά, δημόσια ιδιοχαρακτηριστικά και εξ ορισμού τιμές (παράδειγμα) Τιμολόγιο + ποσό: Πραγματικός αριθμός + ημερομηνία: Ημερομηνία = Τρέχουσα + πελάτης: Συμβολοσειρά - διοικητής: Συμβολοσειρά = ‘Ανειδίκευτος’ Το σύμβολο μείον σημαίνει ότι το χαρακτηριστικό είναι ιδιωτικό (private), δηλαδή δεν μπορεί να χρησιμοποιηθεί και δεν είναι ορατό από άλλες κλάσεις. Το αντίθετο υποδηλώνει το σύμβολο συν το οποίο προσδιορίζει δημόσιο (public) χαρακτηριστικό. Το σύμβολο # δηλώνει ότι το χαρακτηριστικό είναι προστατευόμενο (protected). . 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Mέθοδοι (Λειτουργίες) κλάσεων Οι μέθοδοι χρησιμοποιούνται για να διαχειριζόμαστε τα χαρακτηριστικά ή να εκτελούμε συγκεκριμένες ενέργειες. Η γενική περιγραφή μιας μεθόδου (υπογραφή της μεθόδου) είναι: ορατότητα όνομα (λίστα παραμέτρων): τύπος επιστροφής {property string} Οι μέθοδοι περιγράφουν τι υπηρεσίες προσφέρει η κάθε κλάση και κάποιες από αυτές παρέχουν την κατάλληλη διασύνδεση. Οι μέθοδοι μπορούν: Να παίρνουν πληροφορίες Nα ενημερώνουν Να κάνουν κάποιες ενέργειες πάνω στο αντικείμενο ή/και να καλούν άλλα αντικείμενα 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Παράδειγμα κλάσης με διάφορες μεθόδους Αυτοκίνητο + αρ.πινακίδας: Συμβολοσειρά - δεδομένα: Δεδομένα_Αυτοκινήτου + ταχύτητα: Ακέραιος αριθμός + κατεύθυνση: Κατεύθυνση + οδήγησε (ταχύτητα: ακέραιος, κατεύθυνση: Κατεύθυνση) + πάρε_Δεδομένα ( ): Δεδομένα_Αυτοκινήτου Η μέθοδος οδήγησε δέχεται δύο παραμέτρους, ταχύτητα και κατεύθυνση. Η μέθοδος πάρε_Δεδομένα έχει έναν τύπο επιστροφής, Δεδομένα_Αυτοκινήτου. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
3. Σχέσεις μεταξύ Κλάσεων 3.0 Ορισμοί 3.1 Συσχέτιση (Association) 3.2 Γενίκευση (Generalization) 3.3 Εξάρτηση (Dependency) 3.4 Ανάλυση/Εκλέπτυνση (Refinement) 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων 3.0 Ορισμοί Συσχέτιση (association): είναι μια σημασιολογική σχέση μεταξύ των αντικειμένων δύο ή περισσότερων κλάσεων. Γενίκευση (generalization): είναι η σχέση ανάμεσα σ’ένα πιο γενικό και σ’ένα πιο εξειδικευμένο στοιχείο. Το ειδικό στοιχείο θα πρέπει να περιέχει μόνο επιπρόσθετες πληροφορίες. Εξάρτηση (dependency): σχέση ανάμεσα σε ανεξάρτητο κι εξαρτημένο στοιχείο. Μια ενδεχόμενη αλλαγή στο ανεξάρτητο στοιχείο θα επηρεάσει το εξαρτημένο στοιχείο. Εκλέπτυνση/Ανάλυση (refinement): σχέση ανάμεσα σε δύο περιγραφές του ίδιου πράγματος, αλλά σε διαφορετικό επίπεδο ανάλυσης. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
3.1 Συσχετίσεις (Αssocations) EIΔΗ ΣΥΣΧΕΤΙΣΕΩΝ Κανονική Συσχέτιση (Normal Association) Αναδρομική Συσχέτιση (Recursive Association) Συσχέτιση Διάζευξης (OR-Assocation) Ταξινομημένη Συσχέτιση (Ordered Association) Tριαδική ή Ν-αδική Συσχέτιση (Τernary or N-ary Association) Kλάση συσχέτισης (Association Class) Συναθροίσεις (ειδική περίπτωση συσχέτισης) Kανονική Συνάθροιση (Normal Aggregation) Διαμοιραζόμενη ή Ασθενής Συνάθροιση (Shared or Weak Aggregation) Συνάθροιση Σύνθεσης (Composition Aggregation) 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Ένα άτομο κατέχει πολλά (από μηδέν εως πολλά) αυτοκίνητα. ΚΑΝΟΝΙΚΗ ΣΥΣΧΕΤΙΣΗ (Normal association) Άτομο 1..* κατέχει 0..* Αυτοκίνητο κατέχεται από Ένα άτομο κατέχει πολλά (από μηδέν εως πολλά) αυτοκίνητα. Ένα αυτοκίνητο ανήκει σε πολλά (ένα ή πολλά ) άτομα. Χαρακτηριστικό σε μια σύνδεση αποτελεί η πολλαπλότητα δηλαδή ο αριθμός που δηλώνει το πλήθος των αντικειμένων που συνδέονται 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Αναπαράσταση Συσχετίσεων Συσχετίσεις μεταξύ κλάσεων όνομα συσχέτισης (προαιρετικό) το βέλος πανω από κάθε ακμή δηλώνει την κατεύθυνση ανάγνωσης (προαιρετικό) το βέλος στο τέλος μίας ακμής δηλώνει κατεύθυνση πλοήγησης (προαιρετικό) κάθε άκρο της συσχέτισης προσδιορίζεται από την πολλαπλότητα (multiplicity) για δυαδικές συσχετίσεις, η πολλαπλότητα στο τελικό άκρο δηλώνει πόσα αντικείμενα της τελικής κλάσης μπορούν να συσχετιστούν με ένα αντικείμενο του άλλου (πηγαίου) άκρου Συσχετίσεις μεταξύ αντικειμένων αναπαριστούν ένα στιγμιότυπο της συσχέτισης 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Πολλαπλότητα (Multiplicity) Συσχετίσεων Ένας οποιοσδήποτε αριθμός “*” Ένα εύρος που καθορίζεται από το “..” Πιθανοί αριθμοί που διαχωρίζονται με κόμμα Το default είναι 1. Ακριβώς Ένα: 1 0: * ή (0..*) 0 1: 0..1 σταθερός αριθμός (π.χ. 3): 3 εύρος (π.χ. 3 ή περισσότερα): 3..* εύρος (π.χ. 3 έως και 6): 3..6 απαρίθμηση (π.χ. 3,6,7,8,9): 3,6..9 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων ΔΙΑΓΡΑΜΜΑ ΚΛΑΣΕΩΝ (παράδειγμα) 1..* Πολιτική ασφάλισης 0..1 έχει Εκφράζεται σ’ένα Αναφέρεται σε εκφράζει 1 1 Ασφαλιστική εταιρεία 1 Συμβόλαιο ασφάλισης Πελάτης έχει 0..* 0..* έχει Αναφέρεται σε Αναφέρεται σε 1..* 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΔΙΑΓΡΑΜΜΑ ΚΛΑΣΕΩΝ ΚΑΙ ΔΙΑΓΡΑΜΜΑ ΑΝΤΙΚΕΙΜΕΝΩΝ (παράδειγμα) Ιδιοκτήτης Υπολογιστής χρησιμοποιεί Name : string age : Integer Name : String memory: Integer 0..* 1..* Bob’s PC: Υπολογιστής Bob : Ιδιοκτήτης Name =‘Bob.j’ age = 32 Name =‘Dell 466 memory=64 Ένα διάγραμμα αντικειμένων περιγράφει τα στιγμιότυπα των κλάσεων 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Αναδρομική συσχέτιση (recursive association) Υπάρχει η δυνατότητα συσχέτισης μιας κλάσης με τον εαυτό της. Αποτελεί κι αυτή μια σημασιολογική σύνδεση, μεταξύ όμως αντικειμένων της ίδιας κλάσης Κόμβος * * Συνδέει 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Μετατροπή συσχέτισης από Μ:Ν σε δύο 1:Μ συσχετίσεις * A * B Μπορεί να μετατραπεί 1 * * 1 C Α B Σε μερικές γλώσσες δεν είναι δυνατή η απ’ ευθείας υλοποίηση μιας συσχέτισης Μ:N. Σε τέτοια περίπτωση, μετατρέπουμε τη συσχέτιση από M:Ν σε δύο 1:Ν 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων Ρόλοι σε μια συσχέτιση Αυτοκίνητο Άτομο οδηγεί * * Αυτοκίνητο εταιρείας οδηγός Ένα άτομο παίζει το ρόλο ενός οδηγού κι ένα αυτοκίνητο παίζει το ρόλο του αυτοκινήτου εταιρείας στα πλαίσια της συσχέτισης μεταξύ των αντίστοιχων κλάσεων. Ένα αυτοκίνητο μπορεί να παίζει κι άλλους ρόλους όπως το ρόλο του ασθενοφόρου, αυτοκινήτου αστυνομίας κτλ. Οι ρόλοι αφορούν τις συσχετίσεις και είναι προαιρετικοί. Δεν αποτελούν μέρος των κλάσεων. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Παραδειγμα στο οποίο οι ρόλοι μπορεί να μην είναι εφαρμόσιμοι Άτομο Η Σύζυγος Ο Σύζυγος παντρεύεται Ο άντρας παντρεύεται μια γυναίκα. Τόσο ο άντρας όσο κι η γυναίκα είναι άτομα. Αν κάποιο άτομο δεν είναι παντρεμένο τότε δεν μπορεί να παίξει το ρόλο του συζύγου ή της συζύγου, που σημαίνει ότι η συσχέτιση «παντρεύεται» δεν είναι εφαρμόσιμη γι’ αυτό το άτομο. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων ΣΥΣΧΕΤΙΣΗ ΔΙΑΖΕΥΞΗΣ (OR-Association) Ασφαλιστική εταιρεία 1 0..* Συμβόλαιο ασφάλειας 0..* 0..* {or} 1..* 1..* Άτομο Εταιρεία Η συσχέτιση διάζευξης: θέτει περιορισμό σε δύο ή περισσότερες συσχετίσεις εξασφαλίζει ότι μόνο μια από τις συσχετίσεις είναι έγκυρη κάθε φορά 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΤΑΞΙΝΟΜΗΜΕΝΗ ΣΥΣΧΕΤΙΣΗ (Οrdered Association) Συμβόλαιο Ασφάλειας 0..* {ταξινομημένο κατά αύξουσα σειρά χρόνου} 1..* Πελάτης Πολλές φορές είναι απαραίτητο να προσδιορισθεί κάποια συγκεκριμένη σειρά ανάμεσα στ’αντικείμενα. Αυτό φανερώνεται τοποθετώντας τη λέξη {ταξινομημένο} ανάμεσα στους συνδέσμους, και κοντά στην κλάση του αντικειμένου που Ταξινομείται. Το default είναι μη ταξινομημένο. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΚΛΑΣΗ ΣΥΣΧΕΤΙΣΗΣ (1/2) (Association class) Απαραίτητη σε περιπτώσεις συσχετίσεων M:N Αυξάνει την ευελιξία σε περίπτωση συσχετίσεων 1:1 και 1:N Συμμετέχει 1..* * Χρήστης Συνάντηση Αλλάζει_τόπο_διεξαγωγής 1 Εταιρία * Person όνομα διεύθυνση όνομα ΑΤ Διεύθυνση μισθός θέση Απασχόληση μισθός θέση 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΚΛΑΣΗ ΣΥΣΧΕΤΙΣΗΣ (2/2) (Association class) ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΚΛΑΣΗ ΣΥΣΧΕΤΙΣΗΣ Άτομο Έργο Απασχόληση Προσόντα Ώρες Ημερ_Αποζημίωση 1 * * * Άτομο Έργο Απασχόληση Κάποιος μπορεί να έχει περισσότερες από μία σχέσεις «απασχόληση» για το ίδιο «έργο». Προσόντα Ώρες Ημερ_Αποζημίωση 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
(Ternary association) 1 0..* Ασφαλιστική εταιρεία Συμβόλαιο ασφάλισης ασφαλιστής 0..* 0..1 Πολιτική ασφάλισης 1..* ασφαλιζόμενος Πελάτης Η τριαδική (Ν-αδική) συσχέτιση συσχετίζει τρεις (ή Ν) κλάσεις. Όπως φαίνεται από το σχήμα ο πελάτης μπορεί να έχει μηδέν έως πολλά συμβόλαια ασφάλισης, κάθε ένα από τα οποία έχει μηδέν έως μία πολιτική ασφάλισης και σχετίζεται με μια ασφαλιστική εταιρεία. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΣΥΝΑΘΡΟΙΣΗ (ΑGGREGATION) Η συνάθροιση είναι μία ειδική περίπτωση συσχέτισης με τις ακόλουθες ιδιότητες: Μεταβατικότητα: Αν τα αντικείμενα της κλάσης C είναι part-of των αντικειμένων της κλάσης B και η B είναι part-of Α τότε η C είναι part-of Α Αντι-συμμετρικότητα: Αν η Β είναι part-of Α τότε η Α δεν είναι part-of B 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΚΑΝΟΝΙΚΗ ΣΥΝΑΘΡΟΙΣΗ (NORMAL AGGREGATION) Στόλος * Πολεμικά πλοία περιέχει H συνάθροιση εκφράζεται με τις λέξεις “Περιέχει”, “Αποτελείται-από” ή “Είναι μέρος του (part of)” Ο στόλος αποτελείται από πολλά πλοία. Ορισμένα πλοία μπορούν να μετακινηθούν, ο στόλος όμως εξακολουθεί να υφίσταται. Όπως το ίδιο συμβαίνει κι αν προσθέσουμε κάποια πλοία. Τα τμήματα (πλοία) συνθέτουν το σύνολο (στόλος). Τα τμήματα υπάρχουν, έστω κι αν το σύνολο καταστραφεί. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΔΙΑΜΟΙΡΑΖΟΜΕΝΗ ΣΥΝΑΘΡΟΙΣΗ ΔΙΑΜΟΙΡΑΖΟΜΕΝΗ ΣΥΝΑΘΡΟΙΣΗ (SHARED AGGREGATION) * Ομάδα * Άτομο Αποτελείται από Mια συνάθροιση είναι διαμοιραζόμενη, αν η πολλαπλότητα στο μέρος του όλου είναι παραπάνω από 1. Τα μέρη είναι ανεξάρτητα του όλου και μπορούν να αποτελούν μέρη και άλλων αντικειμένων του ίδιου τύπου. Το παραπάνω μοντέλο αποτελεί ένα παράδειγμα διαμοιραζόμενης συνάθροισης, όπου τα άτομα είναι τα διαμοιραζόμενα μέρη. Μια ομάδα αποτελείται από διάφορα μέλη. Ένα άτομο μπορεί να είναι μέλος πολλών ομάδων. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) Παρουσιάζει ισχυρή ιδιοκτησία των τμημάτων της Τα τμήματα που «ζουν» μέσα στο σύνολο θα καταστραφούν, όταν καταστραφεί και το σύνολο Η πολλαπλότητα στην πλευρά του συνόλου (wholeside) πρέπει να είναι 0..1, ενώ η πολλαπλότητα στην πλευρά τμήματος (partside) είναι οποιοδήποτε διάστημα 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) 1ος τρόπος απεικόνισης * Κείμενο Παράθυρο * Κουμπί * Μενού Το διαμάντι δείχνει τη συνάθροιση σύνθεσης. Το παράθυρο περιέχει πολλά μενού, κουμπιά και κείμενα. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) 2ος τρόπος απεικόνισης * Κείμενο περιέχει Παράθυρο * Κουμπί * Μενού 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) 3ος τρόπος απεικόνισης Παράδειγμα: μια ταινία με τους Laurel and Hardie, πάντα περιλαμβάνει τους ρόλους των Oliver Hardy and Stan Laurel Laurel and Hardy Movie Stan Laurel Oliver Hardy Ηθοποιός 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) 4ος τρόπος απεικόνισης Παράθυρο Κείμενο * Κουμπί * Μενού * Οι κλάσεις των τμημάτων βρίσκονται μέσα στην κλάση του συνόλου. Η πολλαπλότητα των τμημάτων σημειώνεται σε κάθε κλάση στην πάνω δεξιά γωνία 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΔΙΑΓΡΑΜΜΑ ΣΥΝΑΘΡΟΙΣΗΣ ΣΥΝΘΕΣΗΣ (Composition Aggregation) ακόμη ένα παράδειγμα Παράθυρο μηνύματος Παράθυρο μηνύματος πληροφορία ok cancel ok [0..1]: Button cancel [0..1]: Button πληροφορία[0..1]: Icon 0..1 0..1 0..1 Κουμπί Εικονίδιο Το παράθυρο μηνυμάτων αποτελείται από μηδέν ή ένα OK κουμπιά, μηδέν ή ένα cancel κουμπιά ή ένα εικονίδιο πληροφορίας. Μια συνάθροιση σύνθεσης αναπαρίσταται όπως τα γνωρίσματα σε μια κλάση. Η πολλαπλότητα φαίνεται μέσα στις αγκύλες. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
3. Σχέσεις μεταξύ Κλάσεων 3.0 Ορισμοί 3.1 Συσχέτιση (Association) 3.2 Γενίκευση-Εξειδίκευση (Generalization-Specialization) 3.3 Εξάρτηση (Dependency) 3.4 Ραφινάρισμα/Εκλέπτυνση (Refinement) 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
3.2 ΓΕΝΙΚΕΥΣΗ-ΕΞΕΙΔΙΚΕΥΣΗ (GENERALIZATION-SPECIALIZATION) Είναι η σχέση μεταξύ ενός πιο γενικού και ενός πιο εξειδικευμένου στοιχείου To πιο εξειδικευμένο στοιχείο περιέχει επιπλέον πληροφορία Επιτρέπει να γίνεται εξειδίκευση των στοιχείων σε άλλα πιο εξειδικευμένα, συνεπώς ειδικές περιπτώσεις και επεκτάσεις αντιμετωπίζονται ως διαφορετικά στοιχεία Χρησιμοποιείται για κλάσεις, use cases και πακέτα. Στις συσχετίσεις επιτρέπει τον περιορισμό των πιθανών συνδέσμων ανάμεσα σε αντικείμενα των οποίων οι υπερκλάσεις είναι συσχετισμένες. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων Γενίκευση Είναι σχέση κατηγοριοποίησης (ταξονομίας) μεταξύ μίας εξειδικευμένης κλάσης και μίας περισσότερο γενικευμένης. η εξειδικευμένη κλάση κληρονομεί όλες τις ιδιότητες της γενικευμένης μπορούν να προστεθούν επιπλέον ιδιότητες ένα στιγμιότυπο της υποκλάσης μπορεί να χρησιμοποιηθεί όπου επιτρέπεται η χρήση της υπερκλάσης επιτρέπεται πολλαπλή κληρονομικότητα 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Κλάσεις και διαγράμματα κλάσεων Γενίκευση Όχημα Αυτοκίνητο Βάρκα Φορτηγό Το όχημα είναι μια γενική κλάση (υπερκλάση) που προέρχεται από εξειδικευμένες κλάσεις (υποκλάσεις) μέσω της κληρονομικότητας (γενίκευσης-εξειδίκευσης). Μια κλάση μπορεί να κληρονομήσει από μια κλάση (οπότε είναι υποκλάση σ’ αυτή), όπως ταυτόχρονα μπορεί να κληρονομηθεί από κάποια άλλη (υπερκλάση σ’ αυτή) 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΑΝΑΠΑΡΑΣΤΑΣΗ ΠΡΟΗΓΟΥΜΕΝΟΥ ΜΟΝΤΕΛΟΥ ΜΕ ΤΗ ΜΟΡΦΗ ΔΕΝΤΡΟΥ ΜΟΝΤΕΛΟΥ ΜΕ ΤΗ ΜΟΡΦΗ ΔΕΝΤΡΟΥ Όχημα Αυτοκίνητο Βάρκα Φορτηγό Ίδιο μοντέλο με το προηγούμενο, αλλά η κληρονομικότητα παίρνει τη μορφή ενός δέντρου (μόνο μ’ ένα τρίγωνο) 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Γενίκευση με περιορισμό (Constrained generalization) Οverlapping: Άδεια για Πολλαπλή Κληρονομικότητα Disjoint: Απαγόρευση Πολλαπλής Κληρονομικότητας (default) Complete: Απαγόρευση περαιτέρω εξειδίκευσης των κλάσεων Incomplete: Άδεια περαιτέρω εξειδίκευσης των κλάσεων (default) 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
Γενίκευση: Αναπαράσταση περιορισμών Κλάση Α Κλάση Α {περιορισμός 1, περιορισμός2..} { περιορισμός1, περιορισμός2, ... } Κλάση Β Κλάση Γ Κλάση Δ Κλάση Β Κλάση Γ Κλάση Δ ΤΡΟΠΟΣ Α ΤΡΟΠΟΣ Β 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΕΠΙΚΑΛΥΨΗ ΚΑΙ ΜΗ ΣΥΝΕΝΩΣΗ (Overlapping and disjoint) ΕΠΙΚΑΛΥΨΗ ΚΑΙ ΜΗ ΣΥΝΕΝΩΣΗ (Overlapping and disjoint) Ζώο {overlapping} Θηλαστικό Ψάρι Αμφίβιο Επικάλυψη σημαίνει ότι οι υποκλάσεις επιτρέπεται να εξειδικευτούν σε μια κοινή υποκλάση (πχ Αμφίβιο), ενώ ακριβώς το αντίθετο φανερώνει η μη συνένωση (disjoint) που είναι και το default. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
ΟΛΟΚΛΗΡΩΜΕΝΗ Ή ΜΗ ΟΛΟΚΛΗΡΩΜΕΝΗ ΓΕΝΙΚΕΥΣΗ (Complete or incomplete generalization) Άνθρωπος {ολοκληρωμένη} Άντρας Γυναίκα Όταν σε κάποια γενίκευση υπάρχει ο περιορισμός ολοκληρωμένη, σημαίνει ότι δεν μπορούν να προστεθούν νέες υποκλάσεις. To default είναι η μη ολοκληρωμένη 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
3. Σχέσεις μεταξύ Κλάσεων 3.0 Ορισμοί 3.1 Συσχέτιση (Association) 3.2 Γενίκευση (Generalization) 3.3 Εξάρτηση (Dependency) 3.4 Ανάλυση/Εκλέπτυνση (Refinement) 6/2/2018 Κλάσεις και διαγράμματα κλάσεων
(Dependency relationship) 3.3 ΣΧΕΣΗ ΕΞΑΡΤΗΣΗΣ (Dependency relationship) «φίλη» Κλάση Α Κλάση Β Είναι μία σημαντική συσχέτιση μεταξύ δύο κλάσεων ή πακέτων ή use cases, κλπ. (δηλαδή μεταξύ δύο στοιχείων του μοντέλου UML) Mία αλλαγή στο ανεξάρτητο στοιχείο, επηρεάζει το εξαρτημένο. Παρότι δεν υπάρχει σαφής συσχέτιση μεταξύ των δύο κλάσεων, υπάρχει εξάρτηση Παραδείγματα: Μια κλάση παίρνει το αντικείμενο κάποιας άλλης κλάσης σαν παράμετρο. μια κλάση καλεί μία μέθοδο κλάσης μιας άλλης κλάσης. Όταν χρησιμοποιείται μια ετικέτα όπως στο παράδειγμά μας «φίλη», είναι ένα στερεότυπο που προσδιορίζει το είδος της εξάρτησης. 6/2/2018 Κλάσεις και διαγράμματα κλάσεων