Φροντιστήριο 5. Ημερομηνία: 01/12/2006 Θεματική Ενότητα: Μοντελοποίηση Συμπεριφοράς Θέμα: Διαγράμματα αλληλεπίδρασης και καταστάσεων



Σχετικά έγγραφα
Περιεχόμενα και Διάρθρωση. Interaction Diagrams

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

Περίπτωση Χρήσης Use case

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

Ανάλυση Περιπτώσεων Χρήσης

ιαγράµµατα Αλληλεπίδρασης ιαγράµµατα Ακολουθίας ιαγράµµατα Επικοινωνίας

UML: Unified modelling language

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

UML

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

περιεχόμενα παρουσίασης

09 Η γλώσσα UML II. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Φροντιστήριο 3. <logo image> Ημερομηνία: Παρασκευή 10/11/2006 Θεματική Ενότητα: Activity Diagrams

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 8 ο & 9 ο Εργαστήριο -

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 7 ο Εργαστήριο -

Διαγράμματα Κλάσεων στη Σχεδίαση

ΠΑΡΑΔΕΙΓΜΑΤΑ USE CASE DIAGRAMS CLASS DIAGRAMS

Διαχείριση Πληροφοριακών Συστημάτων

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Φροντιστήριο 7. Ημερομηνία: 15/12/2006 Θεματική Ενότητα: OCL

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης

Τεχνολογία Λογισμικού

Δομές ελέγχου ροής προγράμματος

Περιεχόμενο του μαθήματος

Μέθοδοι μοντελοποίησης

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Συνεργασίας. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Διάλεξη 11: Αντικειμενοστρεφής Σχεδιασμός ΙII

Διάγραμμα Κλάσεων. Class Diagram

. Μεθοδολογία Προγραμματισμού. UML Διαγράμματα. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ

Η γλώσσα μοντελοποίησης UML. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

Μοντελοποίηση ροών εργασίας

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 7: Διαγράμματα Καταστάσεων

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 6: Διαγράμματα Κλάσης (2ο Μέρος)

ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ. Άσκηση 1 Εφαρµογή Web

Διάλεξη 5η: Εντολές Επανάληψης

02 Αντικειμενοστρεφής Προγραμματισμός

Μάθημα «Υπηρεσίες Ηλεκτρονικής Υγείας»

Διάθρωση. HΥ351 Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων Information Systems Analysis and Design

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 8: Διαγράμματα Δραστηριοτήτων

Αντικειμενοστρεφής Προγραμματισμός

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 2: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (2ο Μέρος)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

Τεχνολογία Λογισμικού

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Βασικές Δομές μοντέλων Petri Nets. C.A. Petri

ΟΔΗΓΙΕΣ ΓΙΑ ΧΡΗΣΗ ΤΟΥ ΕΡΓΑΛΕΙΟΥ RATIONAL ROSE

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Εννοιολογικό Μοντέλο. Conceptual Model

Αντικειμενοστρεφής Προγραμματισμός

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 5 ο Εργαστήριο -

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 28/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Δομές Δεδομένων (Data Structures)

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων κλάσης (2 ο Μέρος)

Προγραµµατισµός Η/Υ. Μέρος2

Εισαγωγή στη UML. Περιεχόμενα. Γενικά χαρακτηριστικά. Στοιχεία μοντέλων. Συσχετίσεις. Διαγράμματα. Παραδείγματα. Γλώσσες Προδιαγραφής 1

Ηλεκτρονικό Κατάστημα

Τεχνολογία Λογισμικού

Φροντιστήριο 2. Ημερομηνία: 03/10/2006 Θεματική Ενότητα: CASE TOOLS Use Cases & Use Case Diagrams

ΠΕΡΙΠΤΩΣΕΙΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΤΑΞΙΔΙΩΤΙΚΟΥ ΠΡΑΚΤΟΡΕΙΟΥ

Τεχνολογία Λογισμικού

Από τη UML στον Κώδικα. Μέρος Α

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

Από τη UML στον Κώδικα. Μέρος Β

ΕΚΦΩΝΗΣΗ ΥΠΟΧΡΕΩΤΙΚΗΣ ΕΡΓΑΣΙΑΣ σε UML

Η γλώσσα μοντελοποίησης UML. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 7

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής

Πρόλογος Κεφ.1 Βασικές έννοιες της SDL Κεφ.2 Η SDL ως αντικειμενοστρεφής γλώσσα... 35

Interaction Diagrams Διαγράμματα Αλληλεπίδρασης

Γενικά (για τις γραπτές εξετάσεις)

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Τα διαγράµµατα ακολουθίας

6. Εισαγωγή στη Ενοποιημένη Γλώσσα Μοντελοποίησης UML (Unified Modeling Language)

Σημειογραφία των προτύπων BPMN και UML (Activity Diagrams)

ΚΟΗΑ ΚΥΚΛΟΦΟΡΙΑ ΥΛΙΚΟΥ

ΔΟΜΙΚΗ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΚΑΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΣΥΜΠΕΡΙΦΟΡΑΣ (9)

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 2 ο Εργαστήριο -

ΛΥΚΕΙΟ ΠΑΛΟΥΡΙΩΤΙΣΣΑΣ ΣΧΟΛΙΚΟ ΕΤΟΣ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΙΟΥ-ΙΟΥΝΙΟΥ 2014 ΟΝΟΜΑ:... ΤΜΗΜΑ:... ΑΡ.:...

Transcript:

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Φθινόπωρο 2006 ΗΥ351: Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων Information Systems Analysis and Design Φροντιστήριο 5 Ημερομηνία: 01/12/2006 Θεματική Ενότητα: Μοντελοποίηση Συμπεριφοράς Θέμα: Διαγράμματα αλληλεπίδρασης και καταστάσεων

Περιεχόμενα και Διάρθρωση Εισαγωγή Διαγράμματα αλληλουχίας Διαγράμματα επικοινωνίας Διαγράμματα κατάστασης Κανόνες σχεδίασης διαγραμμάτων συμπεριφοράς Παραδείγματα χρήσης διαγραμμάτων αλληλεπίδρασης και κατάστασης Υλοποίηση διαγραμμάτων κατάστασης σε C++ Υλοποίηση με χρήση Προτύπου Σχεδίασης Καταστάσεων CS-351 U. of Crete, Fall 2005-2006 2

Μοντελοποίηση στην Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων Λειτουργική Μοντελοποίηση Περιπτώσεων Χρήσης (Use Case), Δραστηριοτήτων (Activity) Δομική Μοντελοποίηση Κλάσεων (Class), Αντικειμένων (Object), Πακέτων (Package), Παράταξης (Deployment), Εξαρτημάτων (Component), Σύνθετης Δομής (Composite Structure) Μοντελοποίηση Συμπεριφοράς Sequence (Αλληλουχίας), Επικοινωνίας (Communication), Καταστάσεων (State), Χρονισμού (Timing), Interaction Overview, Protocol State Machine CS-351 U. of Crete, Fall 2005-2006 3

Διαγράμματα αλληλεπίδρασης (Interaction Diagrams) Περιγράφουν το πώς αλληλεπιδρούν τα διάφορα αντικείμενα μεταξύ τους για την εκπλήρωση κάποιου στόχου Ένα διάγραμμα αλληλεπίδρασης στην ουσία συλλαμβάνει την συμπεριφορά μιας περίπτωσης χρήσης Ποια μηνύματα ανταλλάσσονται κατά την εκτέλεση μιας περίπτωσης χρήσης μεταξύ των αντικειμένων που συμμετέχουν και με ποια χρονική σειρά. Η UML ορίζει δύο είδη διαγραμμάτων αλληλεπίδρασης: Διαγράμματα αλληλουχίας (Sequence diagrams): Παρουσιάζουν τις αλληλοεπιδράσεις μεταξύ αντικειμένων με έμφαση στη χρονική σειρά των ενεργειών που συμβαίνουν Διαγράμματα επικοινωνίας (Communication diagrams): Παρουσιάζουν τις αλληλοεπιδράσεις και την επικοινωνία μεταξύ αντικειμένων με έμφαση στις ενέργειες που συμβαίνουν CS-351 U. of Crete, Fall 2005-2006 4

Διαγράμματα αλληλουχίας (Sequence diagrams) Τα βασικά στοιχεία που ορίζονται στα διαγράμματα αλληλουχίας είναι: Αντικείμενα τα οποία έχουν κάποιο κύκλο ζωής (Lifelines) Μηνύματα που ανταλλάσσονται μεταξύ των αντικειμένων (Messages) Συνθήκες αποστολής μηνυμάτων μεταξύ των αντικειμένων (Guards) Στοιχεία ομαδοποίησης μηνυμάτων (Combined Fragments) UML2 Εναλλακτικές λύσεις (Alternatives): χρησιμοποιείται για να μοντελοποιήσει τη διαδικασία επιλογής μεταξύ δύο ή περισσότερων ακολουθιών από μηνύματα (if then else) Επιλογή (Option): χρησιμοποιείται για να μοντελοποιήσει τη διαδικασία επιλογής εκτέλεσης μιας ακολουθίας μηνυμάτων με βάση κάποια συνθήκη (if then) Βρόγχοι (Loops): χρησιμοποιείται για να μοντελοποιήσει τη διαδικασία επαναληπτικής εκτέλεσης μιας ακολουθίας μηνυμάτων με βάση κάποια συνθήκη (while) CS-351 U. of Crete, Fall 2005-2006 5

Παράδειγμα χρήσης εναλλακτικών λύσεων (alt) Διάγραμμα αλληλουχίας για την περίπτωση χρήσης «Εξόφληση επιταγής» Η τράπεζα ελέγχει αν τα χρήματα στον λογαριασμό επαρκούν οπότε και προχωράει στη δέσμευση των χρημάτων Σε διαφορετική περίπτωση επιστρέφει πίσω την επιταγή CS-351 U. of Crete, Fall 2005-2006 6

Παράδειγμα χρήσης επιλογής (opt) Διάγραμμα αλληλουχίας για την περίπτωση χρήσης «Χρέωση και εγγραφή σε τάξη» Ελέγχεται αν ο μαθητής χρωστάει χρήματα από περασμένα χρόνια Αν όχι τότε εγγράφεται στην τάξη και χρεώνεται για την εγγραφή του. CS-351 U. of Crete, Fall 2005-2006 7

Παράδειγμα χρήσης βρόγχων (loop) Διάγραμμα αλληλουχίας για την περίπτωση χρήσης «Λήψη διαθέσιμων αναφορών» Αρχικά γίνεται πιστοποίηση της ταυτότητας του αναλυτή Αν έχει εξουσιοδότηση τότε γίνεται η λήψη όλων των διαθέσιμων μη προστατευμένων αναφορών Στη συνέχεια εξετάζεται ο βαθμός ασφαλείας κάθε προστατευμένης αναφοράς ώστε να διαπιστωθεί αν ο αναλυτής έχει εξουσιοδότηση Αν έχει τότε η αναφορά επιστρέφεται μαζί με τις μη προστατευμένες Αυτή η διαδικασία επαναλαμβάνεται έως ότου εξαντληθούν όλες οι προστατευμένες αναφορές CS-351 U. of Crete, Fall 2005-2006 8

Παράδειγμα χρήσης βρόγχων (loop) (συνέχεια) CS-351 U. of Crete, Fall 2005-2006 9

Διαγράμματα επικοινωνίας (Communication diagrams) Τα βασικά στοιχεία που ορίζονται στα διαγράμματα επικοινωνίας είναι: Αντικείμενα (Objects) Συνδέσεις μεταξύ των αντικειμένων (Links) Μηνύματα που ανταλλάσσονται μεταξύ των αντικειμένων (Messages) πολλαπλά μηνύματα ανταλλάσσονται μέσω της ίδιας σύνδεσης και προς τις δύο κατευθύνσεις κάποια μηνύματα μπορεί να περιέχουν μια συνθήκη αποστολής τους (if then) κάποια μηνύματα μπορεί να περιέχουν μια συνθήκη αποστολής τους με μια εναλλακτική (if then else) κάποια μηνύματα μπορεί να περιέχουν μια συνθήκη επαναληπτικής αποστολής τους (while) Ακολουθιακή αρίθμηση των μηνυμάτων που ανταλλάσσονται (Sequential Numbering) CS-351 U. of Crete, Fall 2005-2006 10

Παράδειγμα χρήσης μηνυμάτων συνθήκης Αν ισχύει η συνθήκη color=red τότε μόνο θα αποσταλεί το μήνυμα 1 από τo αντικείμενο Foo στο αντικείμενο Bar CS-351 U. of Crete, Fall 2005-2006 11

Παράδειγμα χρήσης μηνυμάτων συνθήκης με εναλλακτική Αν η συνθήκη test1 είναι αληθείς τότε θα αποσταλεί το μήνυμα 1α από το αντικείμενο Α στο Β Διαφορετικά θα αποσταλεί το μήνυμα 1b CS-351 U. of Crete, Fall 2005-2006 12

Παράδειγμα χρήσης μηνυμάτων συνθήκης επανάληψης Το μήνυμα 1 θα αποστέλλεται από το αντικείμενο Simulator στο αντικείμενο Random έωςότουισχύειησυνθήκη Το μήνυμα 1 θα αποσταλεί συνολικά n φορές CS-351 U. of Crete, Fall 2005-2006 13

Διαγράμματα Κατάστασης Παρουσιάζουν τις διάφορες καταστάσεις και τους τρόπους αλλαγών της κατάστασης ενός αντικειμένου Τα βασικά στοιχεία που ορίζονται στα διαγράμματα κατάστασης είναι: Καταστάσεις ενός αντικειμένου σε διάφορες χρονικές στιγμές Ειδικούς συμβολισμούς έχουν η αρχική και τελική κατάσταση ενός αντικειμένου Μεταβάσεις μεταξύ των καταστάσεων ενός αντικειμένου Συνθήκες μετάβασης μεταξύ των καταστάσεων Γεγονότα και ενέργειες που προκαλούν τις μεταβάσεις Ομαδοποίηση καταστάσεων προς σύνθεση μεγαλύτερων CS-351 U. of Crete, Fall 2005-2006 14

Παράδειγμα ομαδοποίησης καταστάσεων Δημιουργήστε ένα διάγραμμα καταστάσεων το οποίο να μοντελοποιεί τον κύκλο ζωής ενός σεμιναρίου από τη στιγμή που θα προταθεί η διενέργειά του μέχρι τη στιγμή που θα ολοκληρωθεί CS-351 U. of Crete, Fall 2005-2006 15

Παράδειγμα ομαδοποίησης καταστάσεων CS-351 U. of Crete, Fall 2005-2006 16

Παράδειγμα ομαδοποίησης καταστάσεων CS-351 U. of Crete, Fall 2005-2006 17

Κανόνες σχεδίασης διαγραμμάτων αλληλουχίας Η τοποθέτηση των αντικειμένων που αλληλεπιδρούν γίνεται στην κορυφή του διαγράμματος κατά μήκος του Χ-άξονα Τα αντικείμενα που ξεκινούν την αλληλεπίδραση τοποθετούνται αριστερά και βαθμιαία τοποθετούνται δεξιά τα υπόλοιπα με βάση το χρόνο εμπλοκής τους στην αλληλεπίδραση Η τοποθέτηση των μηνυμάτων που αποστέλλονται μεταξύ των αντικειμένων γίνεται κατά μήκος του Υ-άξονα Τα μηνύματα που αποστέλλονται πρώτα βρίσκονται υψηλότερα και ακολουθούν με χρονική σειρά τα υπόλοιπα CS-351 U. of Crete, Fall 2005-2006 18

Κανόνες σχεδίασης διαγραμμάτων επικοινωνίας Τα αντικείμενα που συμμετέχουν στην αλληλεπίδραση τοποθετούνται ως κορυφές ενός γράφου Οι συνδέσεις μεταξύ των αντικειμένων αποτελούν τις ακμές του γράφου Πάνω στις ακμές γίνεται η τοποθέτηση των μηνυμάτων που ανταλλάσσουν τα αντικείμενα μεταξύ τους CS-351 U. of Crete, Fall 2005-2006 19

Κανόνες σχεδίασης διαγραμμάτων κατάστασης Εξετάστε όλες τις πιθανές καταστάσεις στις οποίες μπορεί να βρεθούν τα αντικείμενα μιας κλάσης Οι διάφορες καταστάσεις που μπορεί να βρεθούν τα αντικείμενα τοποθετούνται ως κορυφές ενός γράφου Εξετάστε πώς γίνεται η μετάβαση μεταξύ των καταστάσεων ως αποτέλεσμα των γεγονότων που διαχειρίζεται το αντικείμενο Οι μεταβάσεις μεταξύ των καταστάσεων αποτελούν τις ακμές του βρόγχου Πάνω στις ακμές γίνεται η τοποθέτηση των συνθηκών μετάβασης από τη μια κατάσταση στην άλλη CS-351 U. of Crete, Fall 2005-2006 20

Παραδείγματα χρήσης διαγραμμάτων αλληλεπίδρασης και κατάστασης CS-351 U. of Crete, Fall 2005-2006 21

Παράδειγμα 1 - Αλλαγή Ώρας Πτήσης Δράστες: ταξιδιώτης, βάση δεδομένων, σύστημα κράτησης θέσεων Αεροπορικής Εταιρίας Προαπαιτούμενα (Preconditions): Ο Ταξιδιώτης έχει ήδη εγγραφεί στο σύστημα και έχει επιλέξει «αλλαγή ταξιδιού» Βασική Ροή της Περίπτωσης Χρήσης Το σύστημα ανακτά τις πληροφορίες του λογαριασμού και τη πτήση (πτήσεις) του ταξιδιώτη από τη βάση δεδομένων Το σύστημα ρωτά τον ταξιδιώτη να επιλέξει κάποιο συγκεκριμένη πτήση. Ο ταξιδιώτης επιλέγει συγκεκριμένη πτήση. Το σύστημα ρωτά τον ταξιδιώτη για την προτεινόμενη νέα ώρα αναχώρησης. Ο ταξιδιώτης δίνει την συγκεκριμένη πληροφορία. Εάν η πτήση είναι διαθέσιμη... Το σύστημα παρουσιάζει τη περίληψη της συναλλαγής. Εναλλακτικές Ροές της Περίπτωσης Χρήσης Εάν η πτήση δεν είναι διαθέσιμη τότε CS-351 U. of Crete, Fall 2005-2006 22

Διάγραμμα αλληλουχίας Αλλαγή Ώρας Πτήσης Traveler change flight itinerary : Booking System get customer account Client Account DBMS Airline Reservation System present itinerary get itinerary select segment present detailed info update information available flight : : CS-351 U. of Crete, Fall 2005-2006 23

Διάγραμμα αλληλουχίας Αλλαγή Ώρας Πτήσης 1: change flight itinerary 5: select segment 7: update information 2: get customer account 3: get itinerary : Booking System Traveler 4: present itinerary 6: present detailed info Client Account DBMS 8: available flight Airline Reservation System CS-351 U. of Crete, Fall 2005-2006 24

Παράδειγμα 2: Λειτουργίες Βιβλιοθήκης Το παρακάτω διάγραμμα κλάσεων μοντελοποιεί μια βιβλιοθήκη CS-351 U. of Crete, Fall 2005-2006 25

Παράδειγμα 2 : Λειτουργίες Βιβλιοθήκης Σχεδιάσετε διαγράμματα αλληλουχίας για την υλοποίηση των εξής περιπτώσεων χρήσης: (α) δανεισμός, (β) κράτηση, (γ) επιστροφή, (δ) ανανέωση βιβλίου και (ε) εύρεση των κρατήσεων Κατόπιν σχεδιάσετε το διάγραμμα επικοινωνίας για τη λειτουργία της επιστροφής βιβλίου (για την αρίθμηση των μηνυμάτων χρησιμοποιήσετε την εμφωλευμένη μορφή -nested numbering). CS-351 U. of Crete, Fall 2005-2006 26

Παράδειγμα 2 : Λειτουργία Δανεισμού Για να δανειστεί κάποιος ένα αντίγραφο ενός βιβλίου θα πρέπει να υπάρχει τουλάχιστον ένα αντίγραφο αυτού του βιβλίου για το οποίο κάποιος δεν έχει κάνει κράτηση. CS-351 U. of Crete, Fall 2005-2006 27

Παράδειγμα 2: Λειτουργία Κράτησης Για να γίνει μια κράτηση θα πρέπει να υπάρχει τουλάχιστον ένα αντίγραφο ενός βιβλίου για το οποίο κάποιος δεν έχει κάνει κράτηση CS-351 U. of Crete, Fall 2005-2006 28

Παράδειγμα 2 : Λειτουργία Επιστροφής Για να γίνει επιστροφή ενός βιβλίου θα πρέπει να βρεθεί το αντίγραφο το οποίο έχει δανειστεί ο δανειζόμενος και να επιστραφεί. CS-351 U. of Crete, Fall 2005-2006 29

Παράδειγμα 2 : Λειτουργία Ανανέωσης Γιαναγίνειηανανέωσηθαπρέπειναβρούμετοαντίγραφοτου βιβλίου το οποίο έχει δανειστεί ο δανειζόμενος και να το ανανεώσουμε. CS-351 U. of Crete, Fall 2005-2006 30

Παράδειγμα 2 : Λειτουργία Εύρεσης Κρατήσεων Για να βρούμε τις κρατήσεις ξεκινάμε από το βιβλίο και ζητάμε τις κρατήσεις CS-351 U. of Crete, Fall 2005-2006 31

Παράδειγμα 2 : Λειτουργία Επιστροφής βιβλίου CS-351 U. of Crete, Fall 2005-2006 32

Παράδειγμα 2 Εκτέλεση Σύνθετων Λειτουργιών Έστω ότι ο βιβλιοθηκάριος θέλει: να γνωρίζει πόσα βιβλία έχει δανειστεί κάθε πελάτης ανά κατηγορία να γνωρίζει το πλήθος των εμπρόθεσμων και εκπρόθεσμων επιστροφών ανά χρήστη Σχεδιάσετε τα διαγράμματα αλληλουχίας που περιγράφουν τις παραπάνω επαναληπτικές διαδικασίες. Σε πρώτη φάση σχεδιάστε αλγοριθμικά την επαναληπτική διαδικασία και έπειτα το διάγραμμα ακολουθίας CS-351 U. of Crete, Fall 2005-2006 33

Παράδειγμα 3 Εκτέλεση Σύνθετων Λειτουργιών Βρες όλες τις κατηγορίες Βρες όλους όσους έχουν δανειστεί σε κάθε κατηγορία Για κάθε κατηγορία Για κάθε δανειζόμενο Πάρε το όνομα της κατηγορίας που ανήκει και το πλήθος των δανεισμών που έχει κάνει Αποθήκευσε τα δεδομένα επόμενος δανειζόμενος επόμενη κατηγορία τύπωσε αποτελέσματα CS-351 U. of Crete, Fall 2005-2006 34

Παράδειγμα 3 Εκτέλεση Σύνθετων Λειτουργιών CS-351 U. of Crete, Fall 2005-2006 35

Παράδειγμα 3 Εκτέλεση Σύνθετων Λειτουργιών Βρες όλους τους δανειζόμενους Για κάθε δανειζόμενο Βρες τα αντίτυπα που έχει δανειστεί Για κάθε αντίτυπο αν είναι εμπρόθεσμη αύξησε τα εμπρό8εσμα αλλιώς αύξησε τα εκπρόθεσμα επόμενο αντίτυπο αποθήκευσε τα δεδομένα επόμενος δανειζόμενος τύπωσε αποτελέσματα CS-351 U. of Crete, Fall 2005-2006 36

Παράδειγμα 3 Εκτέλεση Σύνθετων Λειτουργιών CS-351 U. of Crete, Fall 2005-2006 37

Παράδειγμα 4 Μοντελοποίηση τηλεφωνικής κλήσης Ο χρήστης σηκώνει το ακουστικό οπότε η γραμμη άπο ανενεργή να γίνει ενεργή Η κατάσταση ενεργή είναι μια σύνθετη κατάσταση μέσα στην οποία εκτελούνται ένα πλήθος από μεταβάσεις μεταξύ υποκαταστάσεων Αν υπάρξει τόνος τότε μεταβαίνουμε στην κατάσταση κλήσης του αριθμού Σε περίπτωση σύνδεσης το τηλέφωνο μπορεί να είναι είτε κατειλημμένο είτε ελεύθερο οπότε και θα πραγματοποιηθεί η συνομιλία Όταν τελειώσει η συνομιλία τότε η γραμμή γίνεται και πάλι ανενεργή CS-351 U. of Crete, Fall 2005-2006 38

Παράδειγμα 4 Μοντελοποίηση τηλεφωνικής κλήσης CS-351 U. of Crete, Fall 2005-2006 39

Υλοποίηση διαγραμμάτων κατάστασης σε C++ CS-351 U. of Crete, Fall 2005-2006 40

Διάγραμμα κατάστασης CS-351 U. of Crete, Fall 2005-2006 41

Υλοποίηση διαγράμματος κατάστασης enum State {Locked, Unlocked}; enum Event {Pass, Coin}; void Unlock(); void Lock(); void Thankyou(); void Alarm(); inner switch case 1 switch(e){ case Coin: s = Unlocked; Unlock(); break; case Pass: Alarm(); void Transition(Event e){ break;} static State s = Locked; switch(s){ case Locked: switch(e){ case Coin: inner switch case 1; Thankyou(); break; inner switch case 2 break; case Unlocked: inner switch case 2; break; }} case Pass: s = Locked; Lock(); break;} CS-351 U. of Crete, Fall 2005-2006 42

Πρότυπο Σχεδίασης Καταστάσεων Επιτρέπει σε ένα αντικείμενο να ειδοποιεί για τη συμπεριφορά του όταν αλλάζει η εσωτερική του κατάσταση Χρησιμοποιείται οποτεδήποτε: Η συμπεριφορά ενός αντικειμένου εξαρτάται από την κατάστασή στην οποία βρίσκεται και πρέπει να αλλάξει την συμπεριφορά του σε χρόνο εκτέλεσης (run time) με βάση τη νέα του κατάσταση Πλεονεκτήματα χρήσης: Τοποθετεί όλη τη συμπεριφορά που σχετίζεται με κάποια κατάσταση μέσα σε ένα αντικείμενο κατάστασης Επιτρέπει την ενσωμάτωση λογικών μεταβάσεων κατάστασης μέσα σε ένα αντικείμενο κατάστασης Βοηθάει στην αποφυγή μη συνεπών καταστάσεων εφόσον οι αλλαγές στις καταστάσεις πραγματοποιούνται με χρήση ενώ μονάχα αντικειμένου κατάστασης CS-351 U. of Crete, Fall 2005-2006 43

Πρότυπο Σχεδίασης Καταστάσεων Αντικείμενο Αντικείμενο Κατάστασης Συμπεριφορά Αντικειμένου Ειδοποίηση Αλλαγής Κατάστασης Design Patterns In Java - Bob Tarr CS-351 U. of Crete, Fall 2005-2006 44

Παράδειγμα Χρήσης Προτύπου Σχεδίασης Καταστάσεων Θεωρήστε μία κλάση η οποία έχει δύο μεθόδους, push() και pull(), των οποίων η συμπεριφορά αλλάζει ανάλογα την κατάσταση που βρίσκεται το αντικείμενο Οι καταστάσεις που μπορεί να βρεθεί το αντικείμενο είναι μαύρο, κόκκινο, μπλε και πράσινο CS-351 U. of Crete, Fall 2005-2006 45

Παράδειγμα Χρήσης Προτύπου Σχεδίασης Καταστάσεων CS-351 U. of Crete, Fall 2005-2006 46

Παράδειγμα Χρήσης Προτύπου Σχεδίασης Καταστάσεων public abstract class State { public abstract void handlepush(contextc); public abstract void handlepull(context c); public abstract Color getcolor(); } public class BlackState extends State { public void handlepush(contextc) { c.setstate(new RedState()); } public void handlepull(contextc) { c.setstate(new GreenState()); } public Color getcolor(){ return(color.black); } } CS-351 U. of Crete, Fall 2005-2006 47

Παράδειγμα Χρήσης Προτύπου Σχεδίασης Καταστάσεων Οι μέθοδοι pull() και push() εκτελούν διαφορετικές ενέργειες ανάλογα την κατάσταση του αντικειμένου Με χρήση του προτύπου σχεδίασης καταστάσεων εξουσιοδοτούμε αυτή τη συμπεριφορά στο αντικείμενο κατάστασης public class Context { private State state = null; public Context(State state) {this.state = state;} public Context() {this(new RedState());} public State getstate() {return state;} public void setstate(state state) {this.state = state;} public void push() {state.handlepush(this);} public void pull() {state.handlepull(this);} } CS-351 U. of Crete, Fall 2005-2006 48