1 Ελληνικό Ανοικτό Πανεπιστήµιο Κανόνες για ανάπτυξη διαγραµµάτων κλάσεων ρ. Πάνος Φιτσιλής
2 Περιεχόµενα Προσδιορισµός κλάσεων Πως να ονοµάσουµε τις κλάσεις; Που να τις βρούµε; Τι να κοιτάξουµε; Τι να σκεφτείτε; Προσδιορισµός πεδίων, µεθόδων, σχέσεων Παραδείγµατα
3 Οι κλάσεις Έχουνε κεντρικό ρόλο στην αντικειµενοστρεφή ανάπτυξη συστηµάτων είχνει τη στατική δοµή του συστήµατος Τύπο (!) των αντικειµένων Στατικές σχέσης Σύνδεση (Association) (π.χ.: µια εταιρεία έχει πολλούς εργαζόµενους) Γενίκευση (Generalization) (π.χ.: ένας εργαζόµενος είναι µια κατηγορία ατόµων) Αλληλεξάρτηση (Dependencies) (π.χ.: µια εταιρεία χρησιµοποιεί φορτηγά για να διακινεί προϊόντα)
4 Πως να ονοµάσουµε µια κλάση... Το όνοµα µια κλάσης είναι Ουσιαστικό στον ενικό Επίθετο και ουσιαστικό Πελάτης όχι πελάτες Παραγγελία όχι παραγγελίες Χρησιµοποιούµε ονόµατα απότοπεδίοτουπροβλήµατος Από την ορολογία και το λεξιλόγια του πελάτη Χρησιµοποιούµε στάνταρτ ονοµατολογία Χρήση µικρών κεφαλαίων Χρήση κενών
Που να κοιτάξουµε για να βρούµε κλάσεις... Παρατήρηση του προβλήµατος Συνοµιλία µε του ειδικούς του πεδίου προβλήµατος Αναζήτηση παλιότερων αποτελεσµάτων από αντίστοιχα συστήµατα Μελέτη υπαρχόντων αντίστοιχων συστηµάτων Μελέτη των προδιαγραφών, της προκήρυξης κ.λπ. Μελέτη βιβλιογραφίας, σχετικών επιστηµονικών περιοδικών κ.λπ. 5
6 Για τι ψάχνουµε... οµές, σχέσεις αντικειµένων Άλλα συστήµατα Συσκευές (devices) Πράγµατα ή γεγονότα Ρόλους ιαδικασίες Οργανωτικές µονάδες Τόπους
7 Πως βρίσκουµε δοµές... Για κάθε πράγµα/έννοια/διαδικασία ρωτάµε Από τι αποτελείται (σχέση συναρµολόγησης); Τι περιέχει (σχέση σύνθεσης) Χρειάζεται να ξέρω περισσότερα για τα συστατικά; Με ενδιαφέρει να ξέρω περισσότερες λεπτοµέρειες Με τι µοιάζει (σχέση γενίκευσης) Ποια είναι τα κοινά Χαρακτηριστικά, δεδοµένα, συµπεριφορά Ποιες είναι οι διαφορές
8 Εύρεση συστηµάτων, συσκευών Το σύστηµα θα αλληλεπιδρά µε άλλα συστήµατα Τι είδους θα είναι η αλληλεπίδραση Ηλεκτρονική Σύγχρονη, ασύγχρονη Ποιος την ξεκινά Αλληλεπίδραση ανθρώπου-υπολογιστή Ποια θα είναι η διαπροσωπία χρήστη Αλληλεπιδρά το σύστηµα µε συσκευές Μας ενδιαφέρει η συµπεριφορά τους ή ενσωµατώνεται στην συµπεριφορά τον αντικειµένων Πληκτρολόγιο Αισθητήρας θερµοκρασίας
Πράγµατα ή γεγονότα Προσπαθούµε ναβρούµε αν υπάρχουν Ιστορικά δεδοµένα που πρέπει να χρησιµοποιηθούν και να καταγραφούν Πράγµατα που πρέπει να θυµόµαστε Γεγονότα, ηµεροµηνίες που πρέπει να θυµόµαστε 9
Ποιοι είναι οι ρόλοι των χρηστών στο σύστηµα Ποιος είναι ο ρόλος των ανθρώπων στο σύστηµα Έχουν ήδη καταγραφεί στην ανάλυση των περιπτώσεων χρήσης ως χειριστές Πρέπει επιπλέον να προσδιορίσουµετους διακριτούς τους ρόλους Υπάρχουν διάφορα είδη ανθρώπων Οι χρήστες του συστήµατος (χρησιµοποιούν τις οθόνες του συστήµατος για την καθηµερινή εργασίας) Οι άνθρωποι για τους οποίους φτιάχνετε το σύστηµα (δεν είναι απαραίτητο να το χρησιµοποιούν) Οι άνθρωποι οι οποίοι χρηµατοδοτούν το σύστηµα (διοίκηση ή µέτοχοι) και χρειάζονται να γνωρίζουν την πρόοδο των εργασιών 10
11 Λειτουργικές διαδικασίες και οργανωτικές µονάδες Ποιες είναι οι λειτουργικές-επιχειρηµατικές διαδικασίες που πρέπει να υποστηρίζει το σύστηµα Πρέπει το σύστηµα να διαχειρίζεται τα βήµατα της διαδικασίας ένα προς ένα (workflow) Χρειάζεται το σύστηµα νακαταγράφειτην οργανωτική δοµή της επιχείρησης Χρειάζεται το σύστηµα να καταγράφει τις διαδικασίες που ο κάθε εργαζόµενος της επιχείρησης µπορεί να εκτελέσει Χρειάζεται το σύστηµα να έχει γνώση γεωγραφικών χαρακτηριστικών Για παράδειγµα που βρίσκεται µια αποθήκη Πόσο χρόνος χρειάζεται για τη µεταφορά των προϊόντων Η επιχείρηση είναι εγκατεστηµένη σε ένα κτήριο/µια πόλη/µια χώρα κ.λπ.
Για κάθε κλάση που εντοπίσαµε εξετάζουµε Για κάθε κλάση εξετάζουµε Τι χρειάζεται να θυµόµαστε Ποια είναι η απαιτούµενη συµπεριφορά Υπάρχουν ένα ή περισσότερα πεδία σε κάθε κλάση ένα πεδίο σηµαίνει ότι έχουµε πάεισε µεγάλη λεπτοµέρεια Υπάρχουν πεδία που πάντα έχουν τιµή αν υπάρχουν πεδία που δεν έχουν πάντα τιµές πιθανόν να χρειαζόµαστε σχέση γενίκευσης 12
Για κάθε κλάση που εντοπίσαµε εξετάζουµε (συνέχεια) Για κάθε κλάση εξετάζουµε Υπάρχουν µέθοδοι που χρησιµοποιούνται πάντα αν υπάρχουν µέθοδοι που δεν χρησιµοποιούνται συχνά χρειαζόµαστε σχέση γενίκευσης Υπάρχουν πεδία τα οποία µπορούν να υπολογισθούν από άλλα πεδία 13
Πως προσδιορίζουµε ταπεδία Τα πεδία περιγράφουν µια ιδιότητα του αντικειµένου (π.χ. Χρώµα µέγεθος) Ένα χαρακτηριστικό του πεδίου προβλήµατος (π.χ. ο κωδικός προϊόντος) Υπευθυνότητες του αντικειµένου Το όνοµα του πεδίου είναι ένα ουσιαστικό όσοτοδυνατόνπιοσυγκεκριµένο Προσδιορίζουµε τον τύπο των πεδίων 14
15 Πως προσδιορίζουµε τιςµεθόδους Οι µέθοδοι περιγράφουν τη συµπεριφορά των αντικειµένων Υπάρχουν οι αλγοριθµικά απλές και οι αλγοριθµικά σύνθετες µέθοδοι Αλγοριθµικά απλές είναι τεσσάρων ειδών Create ηµιουργεί ένα καινούργιο αντικείµενο Connect Συνδέει ένα αντικείµενο από ένα άλλο Access Προσπελαύνει τα δεδοµένα ενός αντικειµένου Release Αποσυνδέει ένα αντικείµενο από ένα άλλο ή καταστρέφει ένα αντικείµενο
Πως προσδιορίζουµε τιςµεθόδους (συνέχεια) Οι αλγοριθµικά σύνθετες µέθοδοι είναι δύο ειδών Compute Υπολογισµός της τιµής πεδίων βάση αλγορίθµου Monitoring Παρακολούθηση λειτουργίαςεκτέλεσης συστήµατος, λογισµικού, συσκευής κ.λπ. Ονοµατολογία µεθόδων Ρήµα ενεργητικής φωνής Ονοµατολογία που χρησιµοποιείται στην Java createaccount calculatepriceofproduct Μικρό γράµµα Κεφαλαίο γράµµα 16
17 Ένα παράδειγµα: Σηµείο πώλησης Point Of Sale (POS) Ένα σύστηµα POS είναι ένα σύστηµα υποστήριξης πωλήσεων σαν αυτά που συναντά κανείς στα supermarket Αποτελείτε από ταµειακή µηχανή, Bar code, υπολογιστή, λογισµικό κ.λπ.
18 Ένα παράδειγµα: Σηµείο πώλησης Point Of Sale (POS) (συνέχεια) Περίπτωση Χρήσης: Αγορά Προϊόντος 1. Ο πελάτης φτάνει στο POS µε ταπροϊόντα στο καλάθι 2. Ο ταµίας χρησιµοποιώντας το bar code καταγράφει τα προϊόντα 3. Το σύστηµα βρίσκει τις τιµές των προϊόντων και προσθέτει τη τιµή στολογαριασµό 4. Εάν υπάρχουν πολλά προϊόντα του ιδίου είδους, ο ταµίας µπορεί να εισάγει επίσης την ποσότητα 5. Η σύντοµη περιγραφή και η τιµή του προϊόντος εµφανίζεται στην οθόνη της ταµειακής µηχανής 6....
Κλάσεις που εντοπίσθηκαν 19
20 Εύρεση συνδέσεων Ο προσδιορισµός των συνδέσεων γίνεται µε Προσδιορισµό ρηµάτων και ουσιαστικών που ορίζουν ενέργεια ή διαδικασία Προσδιορισµό τωνσυνδεόµενων κλάσεων Προτιµούµε τις δυαδικές συνδέσεις (δύο κλάσεις) Κατηγοριοποιούµε τις συνδέσεις Ενέργεια (οδηγεί, αγοράζει) Επικοινωνία (µιλάει µε) Ιδιότητα (έχει) Απόσταση (είναι κοντά σε) Γενικής µορφής (εξαρτάται από, είναι παντρεµένος µε)
21 Εύρεση συνδέσεων (συνέχεια) Προσδιορίζουµε τις συνδέσεις Στις περισσότερες περιπτώσεις οι συνδέσεις υπονοούνται από τις κλάσεις Για τον καλύτερο ορισµό χρειάζεται ορισµός Ονόµατος Ρόλου και στα δυο άκρα της σχέσης Πολλαπλότητας (multiplicity) Τίτλου της σχέσης
22 Ορισµός πολλαπλότητας Είναι η σχέση υποχρεωτική; Όταν το αντικείµενο δηµιουργείται πρέπει να δηµιουργηθεί και το άλλο αντικείµενο Πολλαπλότητα = 1 Είναι προαιρετική; Το συνδεόµενο αντικείµενο µπορεί να δηµιουργηθεί οποτεδήποτε Πολλαπλότητα = 0 Είναι ο µέγιστος αριθµός σταθερός ή µεταβλητός; Αν σταθερός τότε Π.χ. πολλαπλότητα = 2 Αν είναι µεταβλητός τότε πολλαπλότητα = n Υπάρχουν ειδικές συνθήκες; Μονός αριθµός αντικειµένων, ελάχιστο κάτω όριο
ιαχωρισµός των σχέσεων σε συνδέσεις (association) και σε συναρµολόγηση (aggregation) 23 Μπορεί η σχέση να περιγραφεί µε τους όρους Γενίκευση ειδίκευση Ολόκληρο τµήµα Οµάδα -µέλη Αποτελείται από Είναι η πολλαπλότητα από τη µια πλευρά της σχέσης 1 ή 0..1 Είναι η διάρκεια ζωής των αντικειµένων η ίδια Μπορούν να υπάρχουν ανεξάρτητα τα αντικείµενα
24 Πίνακας κατάταξης Όταν έχω Οικογένεια/κατηγορία πραγµάτων Ένα όνοµα, ένα ουσιαστικό µε επιθετικό προσδιορισµό Ιδιότητα αντικειµένου Τιµή αντικειµένου Μια συνθήκη Ρήµα ενεργητικής φωνής µετά από αντικείµενο Γεγονός, χρόνος, συµβάν Παράδειγµα Άτοµο, λογιστής, όχηµα, τιµολόγιο, προϊόν Γιώργος, µεγαλύτερο όχηµα, πρώτο τιµολόγιο Ηλικία, Χρώµα 27 ετών, κίτρινο Ηλικία > Γιώργος δίνει αναφορά. Γιώργος αποθηκεύει Χτύπηµα τηλέφωνο, Πάρτι Γενέθλιων Τι µπορεί να είναι Κλάση Αντικείµενο Πεδίο κλάσης Τιµή πεδίου Κατάσταση αντικειµένου Μέθοδος κλάσης Μέθοδος κλάσης, Συνεργασία αντικειµένων
25 Συµπερασµατικά Τα διαγράµµατα κλάσεων είναι η ραχοκοκαλιά της αντικειµενοστρεφούς ανάπτυξης Κατάτηνανάπτυξητουµοντέλου δεν πρέπει να ξεχνάµε: H UML έχει πλούσιο ρεπερτόριο. εν είναι ανάγκη να το χρησιµοποιήσουµε όλο Χρησιµοποιείστε προηγµένα χαρακτηριστικά µόνο όταν δεν γίνεται αλλιώς Ξεκινήστε µε ένα απλό µοντέλο και εµπλουτίστε το στην πορεία Ξεκινήστε να φτιάχνεται το µοντέλο των κλάσεων όσο το δυνατόν πιο γρήγορα Μην ξεχνάτε τις βασικές αρχές της αντικειµενοστρεφούς ανάπτυξης Αφαίρεση (abstraction) Κελυφοποίηση (encapsulation) οµικότητα (modularity) Ιεραρχία (hierarchy)
Όταν ξεκινάτε να φτιάξετε ένα διάγραµµα Ξεκινήστε απλά και γρήγορα Στη συνέχεια προσθέστε Πεδία Σχέσεις, πολλαπλότητα Υπηρεσίες Υπευθυνότητες, ρόλους 26