Ανάλυση και Σχεδιασμός ΠΣ Σχεδίαση: Σχεδίαση Κλάσεων και Μεθόδων Καθ. Κωνσταντίνος Ταραμπάνης, kat@uom.gr Αν. Καθ. Ευθύμιος Ταμπούρης, tambouris@uom.gr 1
Πρόγραμμα Παραδόσεων 1. Φάσεις ΑΣΠΣ και η Φάση Προετοιμασίας 2. Μεθοδολογίες Ανάπτυξης ΠΣ 3. Ανάλυση: Επιχειρηματική μοντελοποίηση - activity diagrams 4. Ανάλυση: Προσδιορισμός Απαιτήσεων - use case diagrams 5. Ανάλυση: Λειτουργική μοντελοποίηση - use case descriptions και διεπαφές 6. Ανάλυση: Λειτουργική μοντελοποίηση - use case points 7. Ανάλυση: Δομική Μοντελοποίηση - class/object diagrams 8. Σχεδίαση: Στρατηγικές, Ανάλυση ευρωστίας - robustness diagrams 9. Σχεδίαση: Μοντελοποίηση Συμπεριφοράς - sequence & state diagrams 10. Σχεδίαση: Σχεδίαση κλάσεων και μεθόδων - class diagrams 11. Σχεδίαση: Διαγράμματα Φυσικής Αρχιτεκτονικής - deployment diagrams 12. Υλοποίηση: Μετατροπή UML σε Java Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 2
Μαθησιακά Αποτελέσματα Στο τέλος του μαθήματος, οι φοιτητές θα είναι σε θέση να: ερμηνεύουν τις βασικές αρχές της αντικειμενοστρέφειας και τις σχέσεις μεταξύ των κλάσεων εξετάζουν τις σχέσεις μεταξύ των κλάσεων και των συστατικών τους εφαρμόζουν τις αρχές των διαγραμμάτων κλάσεων ερμηνεύουν τα διαγράμματα κλάσεων και τις σχέσεις μεταξύ των κλάσεων δημιουργούν διαγράμματα κλάσεων προδιαγράφουν περιορισμούς, συμβόλαια και προδιαγραφές μεθόδων Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 3
Εισαγωγή Το σημαντικότερο βήμα του σχεδιασμού είναι ο σχεδιασμός των επιμέρους κλάσεων και μεθόδων Παρά την ύπαρξη βιβλιοθηκών και έτοιμων έτοιμου κώδικα σε μορφή components, ο λεπτομερής σχεδιασμός είναι κρίσιμη δραστηριότητα Ο λεπτομερής σχεδιασμός βασίζεται στην Ανάλυση Ο λεπτομερής σχεδιασμός όλων των υπολοίπων επιπέδων βασίζεται στο σχεδιασμό του επιπέδου του problem domain Ε. 4 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιεχόμενα Βασικά Χαρακτηριστικά Αντικειμενοστρέφειας Διαγράμματα Κλάσεων: Γνωρίσματα, Λειτουργίες και Σχέσεις Διαγράμματα Κλάσεων: Πολλαπλότητα Διαγράμματα Κλάσεων: Προχωρημένες έννοιες Δραστηριότητες Σχεδίασης Αντικειμένων Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Προδιαγραφή Μεθόδων Περίληψη Ε. 5 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Επίπεδα Αφαίρεσης (Levels of Abstraction) A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 6 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Στοιχεία Αντικειμενοστρέφειας Κλάσεις (Classes): ορίζουν τα δεδομένα και τις λειτουργίες που περιέχει κάθε αντικείμενο Αντικείμενα (Objects): instances από κλάσεις Γνωρίσματα (Attributes): περιγράφουν τα δεδομένα του αντικειμένου Καταστάσεις (States): ορίζονται από τις τιμές των γνωρισμάτων και τις σχέσεις με άλλα αντικείμενα μια δεδομένη στιγμή Μέθοδοι (Methods): ορίζουν τι λειτουργίες μπορεί να κάνει ένα αντικείμενο Μηνύματα (Messages): είναι ουσιαστικά μια κλήση συνάρτησης ή ρουτίνας από ένα αντικείμενο προς ένα άλλο Ε. 7 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Ενθυλάκωση (Encapsulation) και Απόκρυψη Πληροφοριών Είναι ο μηχανισμός που συνενώνει τις λειτουργίες και τα δεδομένα σε ένα αντικείμενο Το περιεχόμενο (δεδομένα) ενός αντικειμένου είναι κρυμμένα και άρα μη γνωστά και μη προσπελάσιμα από τον εξωτερικό κόσμο Η επικοινωνία γίνεται μόνο μέσω των μεθόδων του αντικειμένου Αποτελεί κλειδί για την επαναχρησιμοποίηση (reusability) Ε. 8 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Πολυμορφισμός (Polymorphism) Είναι η δυνατότητα να έχει κάποιος διαφορετικές μορφές Το ίδιο μήνυμα εκκινεί διαφορετικές μεθόδους σε διαφορετικά αντικείμενα Η δυναμική σύνδεση (dynamic binding) σημαίνει πως διαφορετικοί μέθοδοι επιλέγονται σε χρόνο εκτέλεσης (run time) Π.χ. Μέθοδος «compute payment» για μόνιμους και ωρομίσθιους Η υλοποίηση του dynamic binding εξαρτάται από τη γλώσσα προγραμματισμού Απαιτείται προσοχή: πολλά λάθη συμβαίνουν μόνο κατά την εκτέλεση (είναι run time errors) Επίσης απαιτείται προσοχή στη διασφάλιση της εννοιολογικής συνέπειας (semantic consistency) Π.χ. Όλες οι μέθοδοι με το ίδιο όνομα πρέπει να υλοποιούν την ίδια γενική λειτουργία όχι compute payment για υπαλλήλους και πελάτες Ε. 9 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Κληρονομικότητα (Inheritance) Απλή κληρονομικότητα μια κλάση γονέας Πολλαπλή κληρονομικότητα πολλές κλάσεις γονείς Υπάρχει δυνατότητα να επανακαθοριστούν κάποια ή όλα από τα γνωρίσματα (attributes) και/ή τις μεθόδους (methods) της υπερκλάσης (superclass) Προσοχή στις διενέξεις κληρονομικότητας (inheritance conflicts) Οι περισσότερες διενέξεις είναι λόγω κακής κατηγοριοποίησης Ε. 10 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Rumbaugh s Rules Οι λειτουργίες ερωτημάτων (Query operations) δεν πρέπει να επανακαθορίζονται Οι μέθοδοι που επανακαθορίζουν κληρονομημένες μεθόδους θα πρέπει μόνο να περιορίζουν τη σημασιολογία των κληρονομημένων Η σημασιολογία των κληρονομημένων μεθόδων δεν θα πρέπει να αλλάζει ποτέ Η υπογραφή - signature (δηλαδή η λίστα παραμέτρων - argument list) των κληρονομημένων μεθόδων δεν θα πρέπει να αλλάζει ποτέ Ε. 11 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Επιπλέον διενέξεις από πολλαπλή κληρονομικότητα Δύο κληρονομημένα γνωρίσματα ή μέθοδοι έχουν το ίδιο όνομα και σημασιολογία Δύο κληρονομημένα γνωρίσματα ή μέθοδοι έχουν διαφορετικό όνομα αλλά ίδια σημασιολογία (συνώνυμα) Δύο κληρονομημένα γνωρίσματα ή μέθοδοι έχουν ίδιο όνομα αλλά διαφορετική σημασιολογία (ομώνυμα) Ε. 12 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Διενέξεις κληρονομικότητας από πολλαπλή κληρονομικότητα Ίδιο όνομα, ίδια σημασιολογία Διαφορετικό όνομα, πιθανώς ίδια σημασιολογία Χρόνος που τρέχει 1 km Χρόνος μεταξύ checkup A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010??? Ε. 13 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιεχόμενα Βασικά Χαρακτηριστικά Αντικειμενοστρέφειας Διαγράμματα Κλάσεων: Γνωρίσματα, Λειτουργίες και Σχέσεις Διαγράμματα Κλάσεων: Πολλαπλότητα Διαγράμματα Κλάσεων: Προχωρημένες έννοιες Δραστηριότητες Σχεδίασης Αντικειμένων Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Προδιαγραφή Μεθόδων Περίληψη Ε. 14 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Δομικά Μοντέλα Ένα δομικό μοντέλο structural model περιγράφει την δομή των δεδομένων που υποστηρίζει τις διαδικασίες μιας επιχείρησης ή ενός οργανισμού Η δομή αυτή των δεδομένων αναπαρίσταται με Διαγράμματα κλάσεων - Class diagrams Διαγράμματα αντικειμένων - Object diagrams Αναπαράσταση πραγμάτων, εννοιών, προσώπων, τοποθεσιών του πεδίου εφαρμογής και πώς σχετίζονται μεταξύ τους σε εννοιολογικό και όχι φυσικό επίπεδο σε αυτό το στάδιο της ανάλυσης Στο στάδιο του σχεδιασμού μετεξέλιξη του εννοιολογικού μοντέλου σε μοντέλο σχεδιασμού Π.χ. Πώς θα αποθηκευθούν Π.χ. Programming objects έτσι δημιουργείται ένα λεξιλόγιο για τους αναλυτές και τους χρήστες και μειώνεται το «εννοιολογικό χάσμα» μεταξύ του πραγματικού κόσμου και του χώρου του λογισμικού Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 15
Διάγραμμα Κλάσεων Class Diagrams Περιέχει για τις κλάσεις στοιχεία κατάστασης με βάση τα γνωρίσματα και συμπεριφοράς με βάση τις λειτουργίες καθώς και τις σχέσεις μεταξύ των κλάσεων Είναι ένα στατικό μοντέλο δεν μεταβάλλεται στο χρόνο Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 16
Απεικόνιση των Κλάσεων A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Systems Analysis and Design with UML,Dennis, Wixom, Tegarden Ε. 17 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Απεικόνιση των Κλάσεων Μια κλάση (class): Αναπαριστά ένα είδος ατόμου, μέρους ή πράγματος για το οποίο το σύστημα πρέπει να συγκεντρώσει ή να αποθηκεύσει πληροφορίες Έχει ένα όνομα, μια λίστα γνωρισμάτων και μια λίστα λειτουργιών Ένα γνώρισμα ή ιδιότητα (attribute): Αναπαριστά ιδιότητες που περιγράφουν την κατάσταση ενός αντικειμένου Μπορεί να εξαχθεί από άλλα γνωρίσματα (οπότε χρησιμοποιούμαι /) Μια λειτουργία (operation): Αναπαριστά τις ενέργειες ή τις λειτουργίες που μπορεί να εκτελέσει η κλάση Περιέχει παρενθέσεις που μπορεί να περιέχουν παραμέτρους ή πληροφορίες που χρειάζονται για να εκτελεστεί η λειτουργία Μια σχέση (association) Αναπαριστά μια συσχέτιση μεταξύ πολλαπλών κλάσεων ή μιας κλάσης και του εαυτού της Έχει όνομα μια φράση με ρήμα ή όνομα που υποδηλώνει έναν ρόλο Μπορεί να υπάρχει μεταξύ μιας ή περισσοτέρων κλάσεων Περιέχει σύμβολα που περιέχουν τον ελάχιστο και το μέγιστο αριθμό που τα στιγμιότυπα μιας κλάσης μπορούν να συσχετιστούν με το σχετικό στιγμιότυπο της κλάσης Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 18
Γνώρισμα ή Ιδιότητα ορατότητα όνομα : τύπος = προκαθορισμένη_τιμή Η ορατότητα μπορεί να λάβει τις τιμές: δημόσια (public) συμβολίζεται με (+), προστατευμένη (protected) συμβολίζεται με (#) ιδιωτική (private) συμβολίζεται με (-). - μία ιδιότητα με δημόσια ορατότητα είναι απευθείας προσπελάσιμη από άλλες κλάσεις (και αντικείμενα) - μία ιδιότητα με ιδιωτική ορατότητα είναι προσπελάσιμη μόνο από την ίδια την κλάση - μία ιδιότητα με προστατευμένη ορατότητα είναι προσπελάσιμη μόνο από την ίδια την κλάση και τις υποκείμενες κλάσεις της. Α. Χατζηγεωργίου, ΠΛΣ61, Πληροφοριακά Συστήματα, ΕΑΠ. Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Λειτουργίες ΔΠΜΣ στα Πληροφοριακά Συστήματα Οι λειτουργίες των κλάσεων προσδιορίζονται με τον ακόλουθο συμβολισμό: ορατότητα όνομα (λίστα παραμέτρων) : επιστρεφόμενος_τύπος παράμετροι 1,2,, n Αριθμός Μητρώου Όνομα Εύρεση ονόματος φοιτητή επιστρεφόμενος τύπος αλφαριθμητικό Α. Χατζηγεωργίου, ΠΛΣ61, Πληροφοριακά Συστήματα, ΕΑΠ. Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παραδείγματα - όνομα : string - ΑΜ : string - Ημ.Γεν. : Date Φοιτητής E m p lo y e e - N a m e : S trin g - ID : In te g e r - S a la ry : In te g e r + εγγραφήσεμάθημα(μάθημα x) : boolean + άφησεμάθημα() + εκτύπωσεονομα() + p rin ts a la ry (ID : In te g e r) + p rin tn a m e (ID : In te g e r) Γενικά δεν είναι πρακτικό να αναπαριστώνται όλες οι ιδιότητες και κυρίως όλες οι λειτουργίες. Έτσι οι λειτουργίες get() και set() δεν φαίνονται συνήθως σε διαγράμματα κλάσεων Α. Χατζηγεωργίου, ΠΛΣ61, Πληροφοριακά Συστήματα, ΕΑΠ. Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 21
Σχέσεις - Relationships Κατηγορίες σχέσεων Γενίκευση - Generalization a-kind-of Δίδει την δυνατότητα κληρονομικότητας των γνωρισμάτων και των λειτουργιών και μείωσης του πλεονασμού στον ορισμό των κλάσεων Συνάθροιση - Aggregation Συσχετίζει τα μέρη με το όλον A-part-of, has-parts π.χ. the door is a-part-of a car, an employee is a-part-of a department, department is a-part-of an organization Σχέση ή Συσχέτιση - Association Άλλες σχέσεις μεταξύ κλάσεων Ασθενέστερη μορφή σχέσης συνάθροισης Π.χ. A patient schedules an appointment Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 22
Γενίκευση - Generalization Δίδει την δυνατότητα κληρονομικότητας των γνωρισμάτων και των λειτουργιών και μείωσης του πλεονασμού στον ορισμό των κλάσεων Υπερκλάση που περιέχει τα βασικά γνωρίσματα και τις λειτουργίες που θα χρησιμοποιηθούν σε διάφορες υποκλάσεις Οι υποκλάσεις θα περιέχουν τα μοναδικά για αυτές γνωρίσματα και λειτουργίες Σχέση a-kind-of Η άλλη όψη: ειδίκευση specialization Γενίκευση ειδίκευση σε πολλαπλά επίπεδα - hierarchies Άτομο -Όνομα -Επίθετο -Διεύθυνση Υπάλληλος -ΑΦΜ Πελάτης -Ασφάλεια Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 23
Συνάθροιση ή Συναρμολόγηση (aggregation) Συσχετίζει τα μέρη με το όλον A-part-of, has-parts, a-member-of, contained-in, related-to, associated-with Μπορεί να γίνει σε πολλαπλά επίπεδα hierarchies Η άλλη όψη: κατάτμηση - decomposition Όχημα Μηχανή Σκελετός Ρόδες Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 24
Σχέση ή Συσχέτιση - Association Οι διάφορες άλλες σχέσεις μεταξύ κλάσεων Δεν ανήκουν στις άλλες δύο κατηγορίες Παίκτης Παίζει σε Ομάδα Όταν μια κλάση συσχετίζεται με μια άλλη, συνήθως η καθεμιά παίζει κάποιο ρόλο στα πλαίσια αυτής της συσχέτισης Π.χ. στη συσχέτιση του παίκτη με την ομάδα του, εάν είναι επαγγελματική, η ομάδα είναι εργοδότης και ο παίκτης ο εργαζόμενος. Παίκτης Παίζει σε Ομάδα Εργαζόμενος Εργοδότης Παίκτης Παίζει σε Έχει προσλάβει Ομάδα Unified Modeling Language", Ν. Σπ. Βώρος & Α. Σπ. Βώρος Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 25
Αυτόσυσχέτιση Σχέση μεταξύ διαφορετικών αντικειμένων της ίδιας κλάσης προαπαιτούμενο Μάθημα Α. Χατζηγεωργίου, ΠΛΣ61, Πληροφοριακά Συστήματα, ΕΑΠ. Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 26
Περιορισμοί σχέσεων Μερικές φορές μια συσχέτιση μεταξύ δυο κλάσεων πρέπει να υπακούει σε κάποιο κανόνα Καθορίζουμε τον κανόνα βάζοντας ένα περιορισμό (constraint) δίπλα στη γραμμή συσχέτισης Τραπεζικός Εξυπηρετεί Πελάτης {αριθμημένος} Ένας άλλος τύπος περιορισμού είναι η σχέση είτε, που παριστάνεται σαν {είτε} σε μια διακεκομμένη γραμμή που συνδέει δυο γραμμές συσχέτισης Παράδειγμα: ένας μαθητής λυκείου επιλέγει μια ακαδημαϊκή σχολή είτε την αγορά εργασίας Μαθητής Λυκείου Επιλέγει {είτε} Επιλέγει Πανεπιστήμιο/ΤΕΙ ΑγοράΕργασίας Unified Modeling Language", Ν. Σπ. Βώρος & Α. Σπ. Βώρος Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 27
Κλάση Συσχέτισης - Association class Μερικές φορές μία ιδιότητα αναγνωρίζεται ως σημαντική για το μοντέλο, ωστόσο δεν εντοπίζεται ότι ανήκει με ιδανικό τρόπο σε κάποια κλάση. Έστω για παράδειγμα η περίπτωση μιας συσχέτισης μεταξύ ενός Φοιτητή και ενός Μαθήματος που παρακολουθεί: π α ρ α κ ο λ ο υ θ εί Φο ιτ η τή ς * * Μάθημα Τ ά ξη Στο τέλος κάθε εξαμήνου, ο φοιτητής λαμβάνει τη βαθμολογία για το μάθημα που παρακολούθησε. Ωστόσο, που ανήκει η ιδιότητα Βαθμός; Δεν πρόκειται για ιδιότητα της κλάσης Φοιτητής διότι ένας φοιτητής δεν λαμβάνει ένα συγκεντρωτικό βαθμό για όλα τα μαθήματα που παρακολούθησε αλλά ένα διαφορετικό βαθμό για κάθε μάθημα. Δεν πρόκειται για ιδιότητα της κλάσης Μάθημα διότι οι φοιτητές που παρακολουθούν ένα μάθημα δεν λαμβάνουν τον ίδιο βαθμό. Α. Χατζηγεωργίου, ΠΛΣ61, Πληροφοριακά Συστήματα, ΕΑΠ. Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Κλάση Συσχέτισης - Association class Εξετάζοντας μία τέτοια κατάσταση, καταλήγουμε στο ότι ο βαθμός είναι στην πραγματικότητα μία ιδιότητα της συσχέτισης μεταξύ ενός αντικειμένου Φοιτητής και ενός αντικειμένου Μάθημα. Στη UML, για τη φιλοξενία ιδιοτήτων που ανήκουν στη συσχέτιση δημιουργούμε μία ξεχωριστή κλάση, γνωστή ως κλάση συσχέτισης (association class), η οποία συμβολίζεται ως εξής: Φο ιτ η τή ς π α ρ α κ ο λ ο υ θ εί * * Τ ά ξη Μάθημα Β α θ μ ο λο γία - Β α θμ ό ς : in t Α. Χατζηγεωργίου, ΠΛΣ61, Πληροφοριακά Συστήματα, ΕΑΠ. Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Κλάση Συσχέτισης - Association class Ωστόσο, κάθε φορά που εντοπίζεται μία κλάση συσχέτισης σε ένα διάγραμμα κλάσεων, θα πρέπει να είναι γνωστό ότι υπάρχει εναλλακτική δυνατότητα αναπαράστασης της ίδιας κατάστασης χωρίς τη χρήση κλάσης συσχέτισης. Στην περίπτωση μιας συσχέτισης πολλά-προς-πολλά στην οποία εμπλέκεται και μία κλάση συσχέτισης, η συσχέτιση μπορεί να διασπαστεί σε δύο ένα-προςπολλά συσχετίσεις, εισάγοντας την κλάση που προηγουμένως ήταν η κλάση συσχέτισης ως 'κανονική' κλάση μεταξύ των δύο άλλων. Φ ο ιτ η τ ή ς 1 λ α μ β ά ν ει * Β α θ μ ο λο γία - Β α θ μ ό ς : in t * κ α τα χ ω ρ εί 1 Τ ά ξη Μάθημα π α ρ α κ ο λ ο υ θ εί Α. Χατζηγεωργίου, ΠΛΣ61, Πληροφοριακά Συστήματα, ΕΑΠ. Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Κλάση Συσχέτισης - Association class Μια σχέση μπορεί να έχει γνωρίσματα και λειτουργίες όπως μια κλάση Η απεικόνιση γίνεται με ένα πλαίσιο συνδεδεμένο με διακεκομμένη γραμμή με την σχέση Παίκτης Ομάδα {εργαζόμενος} {εργοδότης} Συμβόλαιο Μάνατζερ Διαπραγματεύεται Unified Modeling Language", Ν. Σπ. Βώρος & Α. Σπ. Βώρος Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki 31
Κλάση Συσχέτισης - Association class A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιεχόμενα Βασικά Χαρακτηριστικά Αντικειμενοστρέφειας Διαγράμματα Κλάσεων: Γνωρίσματα, Λειτουργίες και Σχέσεις Διαγράμματα Κλάσεων: Πολλαπλότητα Διαγράμματα Κλάσεων: Προχωρημένες έννοιες Δραστηριότητες Σχεδίασης Αντικειμένων Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Προδιαγραφή Μεθόδων Περίληψη Ε. 33 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Πολλαπλότητα - Multiplicity Πολλαπλότητα (multiplicity) είναι ο αριθμός των αντικειμένων από μία κλάση που σχετίζονται με ένα αντικείμενο σε μία συσχετισμένη κλάση A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 34 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Πολλαπλότητες Κάποιες πολλαπλότητες είναι πιθανά «καθολικές» για όλες τις εφαρμογές σε ένα πεδίο προβλήματος Π.χ. Όταν μιλάμε για 4τροχα αυτοκίνητα, τότε ένα αυτοκίνητο έχει 4 τροχούς ανεξάρτητα από την εφαρμογή που θα δημιουργήσουμε Κάποιες άλλες ωστόσο εξαρτώνται από τη συγκεκριμένη εφαρμογή Π.χ. Σε μια εφαρμογή για ένα πανεπιστήμιο μπορεί ο αριθμός φοιτητών ανά τάξη να είναι 1-60 ενώ σε μια άλλη εφαρμογή για ένα άλλο πανεπιστήμιο να είναι 1-30 (π.χ. διότι έχει μικρότερες αίθουσες ή διότι επιθυμεί πιο ποιοτική εκπαίδευση) Συνεπώς, πολλές φορές οι πολλαπλότητες εξαρτώνται από το υπό ανάπτυξη σύστημα και για το λόγο αυτό απαιτούν ιδιαίτερη προσοχή και κατανόηση των απαιτήσεων (καθώς είναι στενά συνδεδεμένες με τις απαιτήσεις) Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παραδείγματα Συσχέτισης με Πολλαπλότητα 1 Ένα τιμολόγιο σχετίζεται με μία μόνο παραγγελία. Ωστόσο, μια παραγγελία μπορεί να συσχετίζεται με 0 ή και πολλά τιμολόγια (δεν υπάρχει άνω όριο) Να σχεδιαστεί το domain model A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παραδείγματα Συσχέτισης με Πολλαπλότητα Ποια είναι η σχέση μεταξύ ενός πιλότου και ενός αεροσκάφους; Να σχεδιαστεί το domain model (πόσο σημαντική είναι η πολιτική της εταιρίας; Και τελικά οι απαιτήσεις από το νέο σύστημα; Μπορούμε να διαχωρίσουμε πολλαπλότητες που είναι καθολικές για όλο το πεδίο και άλλες που διαφέρουν ανάλογα με τις απαιτήσεις του υπό ανάπτυξη συστήματος;) A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παραδείγματα Συσχέτισης με Πολλαπλότητα Ποια είναι η σχέση μεταξύ ρεζέρβας και πορτμπαγκάζ; Να σχεδιαστεί το domain model A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παράδειγμα Συνάθροισης με Πολλαπλότητα 1 Ένα αυτοκίνητο έχει 4 τροχούς. http://www.ibm.com/developerworks/rational/library/content/rationaledge/sep04/bell/ Ε. 39 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παράδειγμα Συνάθροισης με Πολλαπλότητα 2 Το τμήμα της Ιστορίας αποτελείται από πολλούς φοιτητές. http://tcle.wordpress.com/2008/05/20/aggregation-vs-composition-a-review-on-uml/ Τι πρόβλημα έχει η παραπάνω λύση; Ε. 40 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παράδειγμα Συνάθροισης με Πολλαπλότητα 3 Μια παραγγελία περιλαμβάνει ένα ή περισσότερα προϊόντα. http://www.visualcase.com/tutorials/class-diagram.htm Τι πρόβλημα βλέπουμε σε αυτή τη λύση; Ε. 41 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παραδείγματα Συνάθροισης με Πολλαπλότητα 4 Ποια είναι η σχέση μεταξύ τροχού και οχήματος; Τι ισχύει; Ένας τροχός μπορεί να είναι μέρος ενός μόνο οχήματος. Ωστόσο ένα όχημα μπορεί να περιέχει ένα ή περισσότερους τροχούς. Το διάγραμμα είναι: A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παραδείγματα Συνάθροισης με Πολλαπλότητα 5 Ποια είναι η σχέση μεταξύ υπαλλήλου και τμήματος; Τι ισχύει; Ένας υπάλληλος ανήκει σε ένα ή περισσότερα τμήματα. Κάθε τμήμα έχει τουλάχιστον ένα υπάλληλο. Το διάγραμμα είναι: A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παραδείγματα Συνάθροισης με Πολλαπλότητα 6 Ποια είναι η σχέση μεταξύ φωριαμού και επαγγελματικού χώρου; Τι ισχύει; Ένας επαγγελματικός χώρος περιέχει μηδέν ή κάποιους φωριαμούς. Ωστόσο, ένας φωριαμός ανήκει σε έναν μόνο επαγγελματικό χώρο. Το διάγραμμα είναι: A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιεχόμενα Βασικά Χαρακτηριστικά Αντικειμενοστρέφειας Διαγράμματα Κλάσεων: Γνωρίσματα, Λειτουργίες και Σχέσεις Διαγράμματα Κλάσεων: Πολλαπλότητα Διαγράμματα Κλάσεων: Προχωρημένες έννοιες Δραστηριότητες Σχεδίασης Αντικειμένων Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Προδιαγραφή Μεθόδων Περίληψη Σημείωση: Οι διαφάνειες αυτής της ενότητας έχουν δημιουργηθεί από τον Α. Χατζηγεωργίου στα πλαίσια του μεταπτυχιακού στα Πληροφοριακά Συστήματα του Ελληνικού Ανοικτού Πανεπιστημίου. Ε. 45 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Πλεονάζουσα Πληροφορία 1 Η ύπαρξη μιας συσχέτισης υπονοεί τη χρήση ιδιοτήτων ως «δείκτες» σε όλες τις συσχετιζόμενες κλάσεις: Μάθημα προσφέρεταιως 1 προσφέρεται ως n Τάξη αντιπροσωπεύει Κίνδυνος διπλής παραγωγής ιδιοτήτων στον κώδικα Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Πλεονάζουσα Πληροφορία 2 Συχνά εισάγεται πλεονάζουσα πληροφορία υπό μορφή ιδιοτήτων: getname( ) Καθηγητής όνομα τίτλος μαθήματα προεδρεύει 1 0..1 Τμήμα όνομα αριθμόςεισακτέων όνομαπροέδρου Η πληροφορία ορθά ενσωματώνεται εδώ Αλλά κακώς επαναλαμβάνεται εδώ Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Πολλαπλή Κληρονομικότητα Αν μία κλάση έχει πολλαπλές γονικές κλάσεις, κληρονομεί την περιγραφή κάθε μίας από αυτές. Οι ιδιότητες και οι λειτουργίες είναι η ένωση των ιδιοτήτων και λειτουργιών των γονικών κλάσεων. Εργαζόμενος - μισθός : Integer + υπολογισμός φόρου() Πολίτης - Αρ.Ταυτότητας : string + φορολογική έκπτωση() Ιδ. Υπάλληλος - εταιρεία : string Η κλάση αυτή κληρονομεί τις ιδιότητες και λειτουργίες και των δύο γονικών κλάσεων Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Γενίκευση με Πολλαπλότητες Δεν είναι λογικό να υπάρχει πολλαπλότητα σε σχέσεις κληρονομικότητας, καθώς η κληρονομικότητα αφορά κλάσεις και όχι αντικείμενα Γονική Κλάση Υποκείμενη Κλάση Υποδηλώνει ότι κάθε αντικείμενο της υποκείμενης κλάσης είναι ταυτοχρόνως και αντικείμενο της γονικής κλάσης Αν θέλουμε να παραστήσουμε κάποιου είδους σχέση μεταξύ αντικειμένων των δύο κλάσεων, μπορούμε να εισάγουμε μία ξεχωριστή συσχέτιση Άτομο 0..1 είναι σύζυγος του 0..1 Φοιτητής Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Κλάσεις Συσχετίσεων Σε περίπτωση που μία κλάση συσχέτισης υπάρχει σε μία συσχέτιση ένα-προς-πολλά όπως στο ακόλουθο παράδειγμα Κ α θ η γη τ ή ς * ερ γ ά ζ ετα ι γ ια 1 Τ μή μ α Σχέση αιτίου- αιτιατού: ο μοναδικός λόγος που ο καθηγητής έχει ένα μισθό, είναι ότι εργάζεται για ένα τμήμα Μ ισ θ ο δ ο σ ία - μ ισ θ ό ς : flo a t οι ιδιότητες της κλάσης συσχέτισης μπορούν, θεωρητικά, να ενσωματωθούν στην κλάση με πολλαπλότητα πολλά Μείωση της πληροφορίας Κ α θ η γη τ ή ς - μ ισ θ ό ς : flo a t * ερ γ ά ζ ετα ι γ ια η γνώση αυτή χάνεται με την απαλοιφή της κλάσης συσχέτισης 1 Τμ ή μ α Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Μίξη Συμβολισμών Πανεπιστήμιο συσχέτιση κλάσεων σε διαφορετικά επίπεδα μιας σύνθεσης Απόγονοι σε μία σχέση τύπου είναι κληρονομούν τις συσχετίσεις, δηλ. ένας φοιτητής μπορεί να εργάζεται για ένα τμήμα 0..1 χρηματοδοτεί R&D 1 1..* Σχολή ένας καθηγητής μπορεί να είναι σύμβουλος ενός Ατόμου (Καθηγητή ή Φοιτητή). τι θα σήμαινε? 1 συμβουλεύει 1..* 1..* Τμήμα απασχολεί Άτομο 0..1 1..* 0..* συμβουλεύει Φοιτητής Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki Καθηγητής +σύμβουλος
Πότε μια κλάση είναι καλή; Η ανάθεση λειτουργιών σε μια κλάση ισοδυναμεί με ανάθεση "προσωπικότητας" Dan Rawsthorne: "Αν θεωρήσετε τα αντικείμενά σας (κλάσεις) ως ανθρώπους, τότε το σύνολο των λειτουργιών που τους έχουν ανατεθεί αποτελούν ένα είδος προσωπικότητας. Πρέπει να προσέχουμε για την ύπαρξη σχιζοφρενικών αντικειμένων (αντικειμένων με πολλαπλές προσωπικότητες), καθώς ένα αντικείμενο πρέπει να εστιάζει σε ένα συνεκτικό σύνολο λειτουργιών" Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Πότε μια κλάση είναι καλή; Μετά το πέρας της σχεδίασης πρέπει να αξιολογηθεί η ποιότητα του σχεδίου Είναι αρκετά δύσκολο να διαπιστωθεί εάν ένα σχέδιο είναι "καλής" ποιότητας Ωστόσο, είναι εύκολο να διαπιστωθεί η "κακή" ποιότητα λόγω των συμπτωμάτων που θα εμφανίζει Αξιολόγηση Σχεδίασης Συμμόρφωση με διαδεδομένες αρχές σχεδίασης Αξιολόγηση με τη χρήση μετρικών λογισμικού Παραβίαση ευρετικών κανόνων Ε. Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιεχόμενα Βασικά Χαρακτηριστικά Αντικειμενοστρέφειας Διαγράμματα Κλάσεων: Γνωρίσματα, Λειτουργίες και Σχέσεις Διαγράμματα Κλάσεων: Πολλαπλότητα Διαγράμματα Κλάσεων: Προχωρημένες έννοιες Δραστηριότητες Σχεδίασης Αντικειμένων Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Προδιαγραφή Μεθόδων Περίληψη Ε. 54 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Δραστηριότητες Σχεδίασης Αντικειμένων Οι δραστηριότητες σχεδιασμού κλάσεων και μεθόδων είναι επέκταση των ενεργειών της ανάλυσης Οι δραστηριότητες που παρουσιάζονται περιλαμβάνουν: Προσθήκη προδιαγραφών για το τρέχον μοντέλο Εύρεση ευκαιριών για επαναχρησιμοποίηση Αναδιάρθρωση (restructuring) του σχεδίου Βελτιστοποίηση του σχεδίου Αντιστοίχηση των κλάσεων του σχεδίου σε μια γλώσσα προγραμματισμού Ε. 55 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Προσθήκη προδιαγραφών Επιβεβαίωση ότι οι κλάσεις είναι επαρκείς και αναγκαίες για το πρόβλημα Τελικός καθορισμός της ορατότητας των γνωρισμάτων και των μεθόδων κάθε κλάσης Καθορισμός της υπογραφής (signature) κάθε μεθόδου της κάθε κλάσης (δηλ. όνομα, λίστα παραμέτρων, τύπο της τιμής που επιστρέφει η μέθοδος) Ορισμός των περιορισμών που πρέπει να ισχύουν για τα αντικείμενα Προσυνθήκες - Pre-conditions Μετασυνθήκες - Post-conditions Αναλλοίωτες συνθήκες - Invariants Χειρισμός εξαιρέσεων exceptions handling Ε. 56 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Προσδιορισμός Ευκαιριών για Επαναχρησιμοποίηση Analysis patterns (μοτίβα ανάλυσης) Design patterns (μοτίβα σχεδιασμού) Χρήσιμη ομαδοποίηση συνεργαζόμενων κλάσεων που παρέχουν λύση σε ένα συνηθισμένο πρόβλημα Frameworks (πλαίσια εργασίας) Ένα σύνολο υλοποιημένων κλάσεων Class Libraries (βιβλιοθήκες κλάσεων) Συνήθως θεματικά εξειδικευμένες Π.χ. Στατιστική, file management, user interface Components (συστατικά στοιχεία) Κομμάτι λογισμικού που παρέχει συγκεκριμένη λειτουργικότητα μέσω συγκεκριμένου API Ε. 57 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παράδειγμα Design Pattern Whole-Part και Command Processor A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2011 Ε. 58 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki To Whole-part υποστηρίζει τις σχέσεις Aggregation και Composition (Apart-of) To Command Processor μας βοηθά να χωρίσουμε το interface ενός αντικειμένου (command) από την εκτέλεση της λειτουργίας (Supplier)
Παράδειγμα Design Pattern Forwarder-Receiver pattern Κάποια patterns υποστηρίζουν διαφορετικές αρχιτεκτονικές To Forward-receiver υποστηρίζει την αρχιτεκτονική peer-to-peer A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 59 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Προσδιορισμός Ευκαιριών για Επαναχρησιμοποίηση Συνήθως χρήση Frameworks για την ανάπτυξη αντικειμένων στις στρώσεις physical architecture, human computer interaction, data management Components για την ανάπτυξη αντικειμένων στις στρώσεις Problem domain Human computer interaction Class libraries για την ανάπτυξη αντικειμένων στη στρώση foundation frameworks και components Ε. 60 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Αναδόμηση του Σχεδιασμού Factoring: η διαδικασία διαχωρισμού πτυχών (aspects) από μια μέθοδο ή κλάση σε μια νέα μέθοδο ή κλάση για την απλοποίηση του συνολικού σχεδίου Normalization: για την εύρεση κλάσεων που λείπουν και για την υλοποίηση των σχέσεων association και aggregation ως γνωρίσματα (attributes) Σχέσεις κληρονομικότητας Έλεγχος για να διασφαλισθεί ότι αντιστοιχούν μόνον σε περιπτώσεις generalization/specialization (Α-kind-of) Ε. 61 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Βελτιστοποίηση του Σχεδιασμού Ως τώρα στόχος του σχεδιασμού ήταν η ευκολία κατανόησης Τώρα αντιμετωπίζουμε και την αποδοτικότητα του σχεδιασμού optimization Παραδείγματα Μήκος διαδρομής access paths για να φθάσει ένα μήνυμα από ένα αντικείμενο σε ένα άλλο Αν είναι μακριά η διαδρομή δημιουργία μιας πλεονάζουσας διαδρομής μέσω ενός νέου γνωρίσματος Είναι σωστή η θέση των γνωρισμάτων της κάθε κλάσης; π.χ. μήπως η θέση του γνωρίσματος είναι σε άλλη κλάση και δεν υπάρχει ανάγκη για επικοινωνία μεταξύ καλούσης και καλούμενης κλάσης; Ε. 62 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Βελτιστοποίηση του Σχεδιασμού Παραδείγματα Μελέτη της εξερχόμενης ροής (fan-out) της κάθε μεθόδου δηλ. του αριθμού των μηνυμάτων που αποστέλλει η ίδια η μέθοδος ή/και οι μέθοδοι που καλούνται στη συνέχεια Μεγάλο fan-out μιας μεθόδου σημαίνει ότι θα ωφελούσε η δημιουργία δεικτών για τα γνωρίσματα που χρησιμοποιούνται για την αποστολή μηνυμάτων Μελέτη της σειράς εκτέλεσης των εντολών για πιθανή βελτιστοποίηση Δημιουργία υπολογιζόμενων γνωρισμάτων για την αποφυγή του επαναϋπολογισμού Ε. 63 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Αντιστοίχηση των αντικειμένων του Problem Domain στην γλώσσα προγραμματισμού Αντιστοίχηση των αντικειμένων σε προγραμματιστικές δομές στην γλώσσα προγραμματισμού που επιλέχθηκε Αν η γλώσσα προγραμματισμού έχει δυνατότητα μόνο απλής κληρονομικότητας - single-inheritance language π.χ. Java, Smalltalk, Visual Basic.net: Rule 1a. Μετατροπή των σχέσεων κληρονομικότητας σε σχέσεις 1:1 και XOR μεταξύ τους ή Rule 1b. Ισοπέδωση της ιεραρχίας κληρονομικότητας με την αντιγραφή των γνωρισμάτων και των μεθόδων των επιπλέον υπερκλάσεων στις υποκλάσεις Προτίμηση της λύσης 1a όταν η υπερκλάση είναι concrete και της λύσης 1b όταν η υπερκλάση είναι abstract Αν η γλώσσα προσφέρει αντικείμενα αλλά όχι κληρονομικότητα - Object-Based Language Εφαρμογή των προηγούμενων κανόνων σε όλες τις υπερκλάσεις του problem domain π.χ. Visual Basic 6 ή προηγούμενες εκδόσεις Ε. 64 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παράδειγμα αν η γλώσσα προσφέρει απλή κληρονομικότητα Rule 1a Rule 1b A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 65 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παράδειγμα αν η γλώσσα προσφέρει αντικείμενα αλλά όχι κληρονομικότητα - Object-Based Language Rule 1a Rule 1b A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 66 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Υλοποίηση σε μια Παραδοσιακή Γλώσσα Προγραμματισμού Δεν είναι καθόλου καλή ιδέα! Εάν πρέπει να γίνει, τότε το σχέδιο θα πρέπει να ξαναγίνει χωρίς τα παρακάτω: Polymorphism Dynamic binding Encapsulation Information hiding Ε. 67 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιεχόμενα Βασικά Χαρακτηριστικά Αντικειμενοστρέφειας Διαγράμματα Κλάσεων: Γνωρίσματα, Λειτουργίες και Σχέσεις Διαγράμματα Κλάσεων: Πολλαπλότητα Διαγράμματα Κλάσεων: Προχωρημένες έννοιες Δραστηριότητες Σχεδίασης Αντικειμένων Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Προδιαγραφή Μεθόδων Περίληψη Ε. 68 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Το συμβόλαιο επισημοποιεί την αλληλεπίδραση μεταξύ ενός αντικειμένου server και ενός client, όπου ο client (consumer) είναι ένα instance μιας κλάσης που στέλνει ένα μήνυμα στον server (supplier) που εκτελεί μια από τις μεθόδους του ως απάντηση στο αίτημα Πρακτικά είναι ένα σύνολο περιορισμών και εγγυήσεων Εάν οι περιορισμοί ισχύουν, το αντικείμενο server εγγυάται κάποια καθορισμένη συμπεριφορά Οι περιορισμοί μπορεί να γραφούν σε φυσική γλώσσα (Ελληνικά, δομημένα Αγγλικά, ψευδοκώδικα κλπ) ή σε μια formal γλώσσα (π.χ. UML Object Constraint Language) Ε. 69 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Είδη Περιορισμών Προσυνθήκες - Pre-Conditions Ένας περιορισμός που πρέπει να ισχύει για να επιτραπεί η εκτέλεση μιας μεθόδου Μετασυνθήκες - Post-condition Ένας περιορισμός που πρέπει να ικανοποιείται μετά την εκτέλεση μιας μεθόδου (αλλιώς το αποτέλεσμα της ακυρώνεται) Π.χ. Τα γνωρίσματα δεν μπορούν να πάρουν κάποιες τιμές. Εάν αυτό γίνει, ένα exception θα δημιουργηθεί και το αποτέλεσμα της μεθόδου θα ακυρωθεί Αναλλοίωτες συνθήκες - Invariants Περιορισμοί που πρέπει να ισχύουν για όλα τα στιγμιότυπα μιας κλάσης Π.χ. Έγκυρες τιμές γνωρισμάτων (συμπεριλαμβανομένων αυτών που μοντελοποιούν σχέσεις association και aggregation) Αναφέρονται σε κλάσεις άρα μπορούν να προστεθούν στις CRC κάρτες Ε. 70 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Αναλλοίωτες συνθήκες - Invariants A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2011 Ε. 71 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Συμβόλαια-Contracts Θεωρητικά ένα συμβόλαιο για κάθε ανταλλαγή μηνύματος Πρακτικά ένα συμβόλαιο για κάθε μέθοδο που είναι ορατή Μέρη συμβολαίου (ενδεικτικά): Λίστα κλάσεων ή μεθόδων που στέλνουν μήνυμα στη μέθοδο (από sequence diagram) Ανεπίσημη περιγραφή του τι θα κάνει η μέθοδος αλλά όχι πώς θα το κάνει Μαζί με το Name αποτελούν το signature της μεθόδου A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2011 Ε. 72 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιεχόμενα Βασικά Χαρακτηριστικά Αντικειμενοστρέφειας Διαγράμματα Κλάσεων: Γνωρίσματα, Λειτουργίες και Σχέσεις Διαγράμματα Κλάσεων: Πολλαπλότητα Διαγράμματα Κλάσεων: Προχωρημένες έννοιες Δραστηριότητες Σχεδίασης Αντικειμένων Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Προδιαγραφή Μεθόδων Περίληψη Ε. 73 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Προδιαγραφή Μεθόδων (method specification) Γενικές πληροφορίες Γεγονότα Events: τα γεγονότα που εκκινούν (trigger) τη μέθοδο. Η πληροφορία μπορεί να βρίσκεται στα state diagrams Ανταλλαγή μηνυμάτων - Message passing: Ποιά μηνύματα στέλνει και δέχεται η μέθοδος. Η πληροφορία βρίσκεται στα sequence και στα collaboration diagrams Προδιαγραφή Αλγορίθμου Δομημένη γλώσσα - Structured English Ψευδοκώδικας - Pseudocode UML activity diagram Ε. 74 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παράδειγμα Structured English A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2011 Ε. 75 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Παράδειγμα Ψευδοκώδικα A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2011 Ε. 76 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Φόρμα Εξειδίκευσης των Μεθόδων A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 77 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
: revised Class Diagram A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 78 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
: Πίσω όψη κάρτας CRC A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 79 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
: Contract για την ΛήψηΚριτικής A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 80 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
: Προδιαγραφή Μεθόδου ΛήψηΚριτικής A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 81 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
: Revised CD Package Diagram A. Dennis, B. H. Wixom, D. Tegarden, Ανάλυση και Σχεδιασμός Συστημάτων με την UML 2.0. Μια αντικειμενοστρεφής Προσέγγιση, 3η έκδοση, (μετάφραση: Γ. Τζίτζικας), Εκδ. Κλειδάριθμος, 2010 Ε. 82 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περιεχόμενα Βασικά Χαρακτηριστικά Αντικειμενοστρέφειας Διαγράμματα Κλάσεων: Γνωρίσματα, Λειτουργίες και Σχέσεις Διαγράμματα Κλάσεων: Πολλαπλότητα Διαγράμματα Κλάσεων: Προχωρημένες έννοιες Δραστηριότητες Σχεδίασης Αντικειμένων Περιορισμοί (Constraints) και Συμβόλαια (Contracts) Προδιαγραφή Μεθόδων Περίληψη Ε. 83 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Περίληψη Είδαμε τα βασικά χαρακτηριστικά της αντικειμενοστρέφειας Τα διαγράμματα κλάσεων και αντικειμένων δείχνουν τη δομή ενός αντικειμενοστραφούς συστήματος. Τα τελικά διαγράμματα κλάσεων προκύπτουν από τα διαγράμματα ακολουθίας Σύμφωνα με τους Dennis et al. για την μετεξέλιξη των μοντέλων της ανάλυσης σε μοντέλα σχεδιασμού, θα πρέπει να επανεξετάζουμε τα μοντέλα ανάλυσης και κατόπιν να προσθέτουμε πληροφορίες για το περιβάλλον του συστήματος. Γνωρίσαμε τις βασικές ενέργειες σχεδιασμού: Προσθήκη προδιαγραφών Εύρεση ευκαιριών για επαναχρησιμοποίηση Αναδιάρθρωση (restructuring) του σχεδίου Βελτιστοποίηση του σχεδίου Αντιστοίχηση των κλάσεων του σχεδίου σε μια γλώσσα προγραμματισμού Κατανοήσαμε τις έννοιες συμβόλαια και περιορισμοί Είδαμε πως γίνεται η εξειδίκευση των προδιαγραφών των μεθόδων Ε. 84 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Διαβάστε: Dennis: chapter 10 Για τη Φάση του Σχεδιασμού θα πρέπει να συμβουλευτείτε ένα καλό βιβλίο της γλώσσας προγραμματισμού που θα χρησιμοποιήσετε στη Φάση της Υλοποίησης Το βιβλίο θα πρέπει να αναφέρεται περιεκτικά στη συγκεκριμένη εταιρία, πακέτο και έκδοση που θα χρησιμοποιήσετε έτσι θα δείτε τις ιδιαιτερότητες της συγκεκριμένης υλοποίησης της γλώσσας Αυτό θα σας δώσει όλες τις πληροφορίες που χρειάζεστε σχετικά με τις ιδιαιτερότητες της γλώσσας και του πακέτου Σχετικά με τη φάση του Σχεδιασμού και την Αντικειμενοστρέφεια δείτε και τις παραπομπές στο βιβλίο του Dennis. Ε. 85 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki
Ανοικτά ερευνητικά θέματα Η αντικειμενοστρέφεια συνεχίζει να εξελίσσεται Μαζί με αυτήν και οι τεχνικές Σχεδίασης για αυτήν Τα μοτίβα Σχεδιασμού (design patterns) επίσης συνεχώς επεκτείνονται σε νέους τομείς Ε. 86 Ταμπούρης & Κ. Ταραμπάνης http://egov.it.uom.gr/wiki