Μεθοδολογία Αντικειμενοστρεφής Σχεδιασμός l Μεθοδολογία (ή μέθοδος):σύνολο από διαδικασίες και ευρετικές προσεγγίσεις που αποσκοπούν στην απλούστευση ενός προγραμματιστικού προβλήματος. Οι Α/Σ μεθοδολογίες βασίζονται στην οπτική ότι τα πάντα είναι αντικείμενα. Επομένως, oι μεθοδολογίες μας βοηθούν να ανακαλύψουμε: Ποια είναι τα αντικείμενα του προβλήματός μας; Ποιές διαπροσωπείες έχουν αυτά τα αντικείμενα; 1 2 Μια απλή Α/Σ Μέθοδος Ανάλυσης και Σχεδιασμού 5 Φάσεις: Φάση 0: Κατάρτιση Σχεδίου. Φάση 1: Τι κατασκευάζουμε; Φάση 2: Πως το κατασκευάζουμε; Φάση 3: Κατασκευή του πυρήνα. Φάση 4: Πρόσθεση των λειτουργιών. Φάση 5: Εξέλιξη l Φάση 0: Κατάρτιση Σχεδίου Έργου Make a Pla: Καταρτίστε το σχέδιο της δουλειάς σας αποφασίστε για τη μεθοδολογία και τα βήματα που θα ακολουθήσετε. Διατυπώσατε την «Αποστολή» σας (missio statemet). Ποιός είναι ο στόχος του έργου, σε 2-3 προτάσεις. 3 4
Φάση 1: Ανάλυση και Προδιαγραφές Φάση 2: Πώς θα το κατασκευάσουμε; l l Ανάλυση Απαιτήσεων (Requiremets Aalysis): τι θέλει ο «πελάτης» Προδιαγραφές Συστήματος (System Specificatio): τι θα κάνει το πρόγραμμα (όχι πως θα το κάνει). Πιο σύντομη προσέγγιση: Ανάπτυξη περιπτώσεων χρήσης (use cases). Αποκαλύπτουν βασικά χαρακτηριστικά του προγράμματος. Αποτελούν περιγραφικές απαντήσεις σε ερωτήσεις όπως: Ποιός θα χρησιμοποιήσει το σύστημα; Τι μπορούν να κάνουν οι χρήστες με το σύστημα; Πως μπορεί αυτός ο χρήστης να κάνει εκείνο με το σύστημα; Πώς αλλιώς θα μπορούσε αυτό να λειτουργήσει αν κάποιος άλλος έκανε εκείνο, ή ο ίδιος χρήστης είχε διαφορετικό στόχο; (reveal variatios) Τι προβλήματα μπορεί να προκύψουν ενώ κάνουμε αυτό με το σύστημα (reveal exceptios). Πρέπει να σχεδιάσουμε τις κλάσεις και την αλληλεπίδρασή τους. Χρήση της τεχνικής των Καρτών CRC. Πέντε στάδια σχεδιασμού αντικειμένων: Ανακάλυψη Αντικειμένου (Object discovery) Συναρμολόγηση Αντικειμένου (Object assembly) Κατασκευή Συστήματος Επέκταση Συστήματος Επαναχρησιμοποίηση κλάσεων 5 6 Φάση 2: Πώς θα το κατασκευάσουμε; Φάση 3: Κατασκευάζοντας τον πυρήνα Κατευθύνσεις για σχεδιασμό των αντικειμένων: Οι κλάσεις προκύπτουν από το πρόβλημα επεκτείνονται και ωριμάζουν καθώς χρησιμοποιούνται για την επίλυση και άλλων προβλημάτων. Το μεγαλύτερο τμήμα του σχεδιασμού σας είναι να ανακαλύψετε τις κλάσεις που σας χρειάζονται. Δεν είναι ανάγκη να προβλέψετε τα πάντα από την αρχή μαθαίνετε καθώς προχωράτε. Ξεκινήστε τον προγραμματισμό νωρίς, ώστε να έχετε κάτι που θα αποδεικνύει την αξία ή απαξία του σχεδιασμού σας. KIS: keep-it-simple. Οι απλές λύσεις είναι συνήθως οι καλύτερες. Φάση της μετατροπής του αρχικού σχεδιασμού σε πρόγραμμα προς μετάφραση και εκτέλεση, Στόχος εδώ είναι να εντοπίσετε το τμήμα που αποτελεί τον πυρήνα του προγράμματός σας, από τον οποίο θα προκύψει το τελικό σύστημα. Ο πυρήνας μπορεί να μην περιέχει τα πάντα, είναι όμως η βάση για το χτίσιμο των λειτουργιών του συστήματός σας. 7 8
Φάση 4: Πρόσθεση Λειτουργιών Φάση 5: Εξέλιξη Μετά το κτίσιμο του πυρήνα, γίνεται η υλοποίηση των λειτουργιών του συστήματος. Κάθε ξεχωριστή λειτουργία αντιπροσωπεύεται στη φάση τού σχεδιασμού από μια αντίστοιχη περίπτωση χρήσης (use case). Η υλοποίηση των διαφορετικών περιπτώσεων χρήσης γίνεται σειριακά σε διαφορετικές επαναλήψεις και μέχρι να ολοκληρωθεί η υλοποίηση τής όλης λειτουργικότητας του συστήματος. Πως δικαιολογείται η «επαναληπτική» προσέγγιση (iteratio over the use cases); Η φάση της εξέλιξης ή συντήρησης του κώδικα: Διόρθωση σφαλμάτων. Αλλαγές στον κώδικα με βάση την εμπειρία χρήσης του. Πρόσθεση νέων λειτουργιών. Καλύτερη ικανοποίηση των απαιτήσεων. 9 10 l Α/Σ Σχεδιασμός και Ευθύνες Πως σχεδιάζουμε αντικειμενοστρεφή προγράμματα; Ο σχεδιασμός Α/ΣΠ εστιάζει στην ανεύρεση των κλάσεων ενός προβλήματος και στην ανάθεση ευθυνών στις κλάσεις και στα αντικείμενά τους. Η ανάθεση ευθυνών συνεπάγεται ανάθεση ανεξαρτησίας. Δημιουργία ανεξάρτητων υποσυστημάτων, τα οποία μπορούν εύκολα να επαναχρησιμοποιηθούν. Use cases - Περιπτώσεις Χρήσης Τεχνική ανάλυσης με την οποία περιγράφουμε, με τρόπο τυπικό, πώς πρέπει να λειτουργήσει ένα πρόγραμμα. Κάθε περίπτωση χρήσης εστιάζει σε ένα συγκεκριμένο σενάριο και περιγράφει τα βήματα που πρέπει να πραγματοποιηθούν για να φέρουν το σενάριο σε επιτυχημένη ολοκλήρωση. Η ολοκλήρωση του σεναρίου πρέπει να αντιστοιχεί στην επίτευξη ενός σημαντικού στόχου του χρήστη του προγράμματος Κάθε βήμα αναπαριστά μια αλληλεπίδραση του προγράμματος με ανθρώπους ή οντότητες εξωτερικές του προγραμματιστικού συστήματος 11 12
Περιπτώσεις Χρήσης Οι περιπτώσεις χρήσης είναι συλλογές από σενάρια τα οποία περιγράφουν πως λειτουργεί το σύστημα σε διάφορες περιπτώσεις. Οι περιπτώσεις χρήσης αποσκοπούν στην αποτύπωση του πώς φαίνεται το σύστημα στους χρήστες του (λειτουργικά) και πρέπει να είναι απλές. Actor Use-cases Περιπτώσεις Χρήσης Στην περίπτωση σχεδιασμού ενός φωνοκιβωτίου, στο οποίο εισάγονται τηλεφωνικά μηνύματα: Η Περίπτωση Χρήσης «Άφησε Μήνυμα» περιγράφει τα βήματα που πρέπει να ακολουθήσει ένας χρήστης ώστε να καλέσει ένα φωνοκιβώτιο και να αφήσει μήνυμα. Η Περίπτωση Χρήσης «Ανάκτησε Μηνύματα» περιγράφει τα βήματα που πρέπει να ακολουθήσει ένας χρήστης ώστε να καλέσει το φωνοκιβώτιο και να ακούσει τα μηνύματά του. Iteractios 13 14 Διαχείριση σφαλμάτων και ΠΧ Περιγραφή Περιπτώσεων Χρήσης Κατά την εκτέλεσή του, ένα σενάριο μπορεί σε κάποιο στάδιο να αποτύχει. Όνομα Περίπτωσης Χρήσης Περιγράφει με συνοπτικό τρόπο την ΠΧ Για παράδειγμα, στις Περιπτώσεις Χρήσης του φωνοκιβωτίου: η εισαγωγή ενός μηνύματος μπορεί να αποτύχει γιατί η ουρά των μηνυμάτων είναι γεμάτη η ανάγνωση των μηνυμάτων μπορεί να αποτύχει γιατί ο ιδιοκτήτης του φωνοκιβωτίου εισήγαγε λάθος κωδικό πρόσβασης Για την κάλυψη των περιπτώσεων αποτυχίας ενός σεναρίου, στην περιγραφή της Περίπτωσης Χρήσης συμπεριλαμβάνεται και η περιγραφή Αποκλίσεων (variatios) Κύρια σειρά δραστηριοτήτων που συμπεριλαμβάνονται στην ΠΧ Αποκλίσεις (όπου αυτό απαιτείται) Οι ΠΧ μπορούν να περιγραφούν με μεγαλύτερη αυστηρότητα απαρίθμηση των ΠΧ ενός προγράμματος καθορισμός των χρηστών αναφορά σε σχετικές ΠΧ κλπ 15 16
Περίπτωση Χρήσης Φωνοκιβωτίου Περίπτωση Χρήσης Φωνοκιβωτίου Άφησε Μήνυμα 1. Ο καλών, σχηματίζει τον αριθμό του τηλεφωνικού κέντρου 2. Το τηλεφωνικό κέντρο απαντά με ανακοίνωση προτροπής (prompt): Eter mailbox umber followed by #. 3. Ο καλών δίνει τον αριθμό φωνοκιβωτίου του παραλήπτη 4. Το τηλεφωνικό κέντρο απαντά με το ακόλουθο μήνυμα: You have reached mailbox xxxx. Please leave a message ow. 5. Ο καλών δίνει το μήνυμά του. 6. Ο καλών κλείνει το τηλέφωνο. 7. Το τηλεφωνικό κέντρο τοποθετεί το καταγεγραμμένο μήνυμα στο φωνοκιβώτιο του παραλήπτη. Απόκλιση 1η: 1. Στο Βήμα 3, ο καλών δίνει λάθος αριθμό φωνοκιβωτίου. 2. Το τηλεφωνικό κέντρο δίνει το ακόλουθο μήνυμα: You have typed a ivalid mailbox umber. 3. Συνέχισε με το Βήμα 2 Απόκλιση 2η: 4. Μετά το Βήμα 4, ο καλών κλείνει το τηλέφωνο αντί να μιλήσει 5. Το τηλεφωνικό κέντρο αγνοεί το άδειο μήνυμα 17 18 Α/Σ Σχεδιασμός και Ευθύνες Η Α/Σ Σχεδίαση είναι παρόμοια με την οργάνωση μιας ομάδας ανθρώπων (π.χ. σε ένα σύνδεσμο, λέσχη κλπ). Βασική οργανωσιακή αρχή: για να πραγματοποιηθεί μια ενέργεια, κάποιος πρέπει να είναι υπεύθυνος γι αυτήν. Στον Α/Σ Προγραμματισμό: βρείτε πρώτα ποιά Δ/Δ είναι υπεύθυνη για κάποια ενέργειαυπολογισμό που πρέπει να πραγματοποιηθεί. Κάρτες CRC (ΚEΣ: ΚΛΑΣΕΙΣ-ΕΥΘΥΝΕΣ-ΣΥΝΕΡΓΑΤΕΣ) 19 Προτάθηκε από τους Cuigham και Beck με βάση τις εμπειρίες που αποκόμισαν από την γλώσσα SMALLTALK. Στη μέθοδο των καρτών CRC προκρίνεται: Η διερεύνηση των «υπευθυνοτήτων» των κλάσεων, αποφύγοντας την περιγραφή δομών δεδομένων και αλγοριθμικών διεργασιών. Η χρήση απλών χάρτινων καρτών Class-Resposibility- Collaboratio (CRC) 10cm x 15cm αντί για διαγράμματα, μοντέλα, ή προσδιορισμό μεθόδων και διαπροσωπειών. Ο συμμετοχικός σχεδιασμός. Υπευθυνότητα είναι μια υψηλού επιπέδου περιγραφή της αποστολής μιας κλάσης. Με μια CRC κάρτα μπορούμε να απεικονίσουμε μια κλάση και τα χαρακτηριστικά της, στη φάση της σχεδίασης. 20
Δομή καρτών CRC CLASS NAME RESPONSIBILITIES Κατάλογος με τις ευθύνες αυτής της κλάσης COLLABORATORS Τα ονόματα των κλάσεων που θα εξυπηρετήσουν αυτή την κλάση 21 22 Περίπτωση Χρήσης Φωνοκιβωτίου (επαν.) Παράδειγμα CRC Άφησε Μήνυμα 1. Ο καλών, σχηματίζει τον αριθμό του τηλεφωνικού κέντρου 2. Το τηλεφωνικό κέντρο απαντά με ανακοίνωση προτροπής (prompt): Eter mailbox umber followed by #. 3. Ο καλών δίνει τον αριθμό φωνοκιβωτίου του παραλήπτη 4. Το τηλεφωνικό κέντρο απαντά με το ακόλουθο μήνυμα: You have reached mailbox xxxx. Please leave a message ow. 5. Ο καλών δίνει το μήνυμά του. 6. Ο καλών κλείνει το τηλέφωνο. 7. Το τηλεφωνικό κέντρο τοποθετεί το καταγεγραμμένο μήνυμα στο φωνοκιβώτιο του παραλήπτη. Mailbox maage passcode maage greetig maage ew ad saved messages MessageQueue 23 24
Παράδειγμα CRC Παράδειγμα CRC MailSystem Order maage mailboxes MessageQueue Check if items i stock Determie price Check for valid paymet Order Lie Customer Dispatch to delivery address 25 26 Αρχές Ονοματολογίας Κλάσεων Κάρτες CRC: Περιγραφή Ευθυνών Πολύ σημαντική η ονοματολογία: διευκολύνει την ανάγνωση και κατανόηση του κώδικα. Βασικές αρχές: χρήση ευανάγνωστων και καλόηχων ονομάτων χρήση κεφαλαίων στην αρχή καινούργιας λέξης, έστω κι αν ενώνουμε δύο ή περισσότερες λέξεις (π.χ. CardReader) προσεκτική χρήση συντομογραφιών για αποφυγή παραξηγήσεων αποφυγή χρήσης αριθμών εντός των ονομάτων κατάλληλη ονομασία λογικών μεταβλητών (π.χ. PriterIsReady - PriterStatus) Ο χώρος των υπευθυνοτήτων είναι το συµβόλαιο με το οποίο καθορίζονται τα χαρακτηριστικά και οι ευθύνες μιας κλάσης. Οι ευθύνες περιγράφουν το πρόβλημα που πρέπει να επιλύει η κλάση: χρησιμοποιώντας σύντομα ρήματα και μικρές εκφράσεις περιγράφοντας το τι πρέπει να γίνει και όχι το πως θα γίνει βασική επεξήγηση: ποιό θα είναι το αποτέλεσμα αν χρησιμοποιηθεί το αντικείμενο κατά τον Α ή Β τρόπο το πολύ µια κάρτα ανά κλάση 27 28
Κάρτες CRC: Περιγραφή Συνεργατών Κατάλογος των κλάσεων με τις οποίες συνεργάζεται η παρούσα κλάση, δηλ. οι κλάσεις, τις οποίες πρέπει να λαμβάνει υπόψη της: Παρέχουν υπηρεσίες στην κλάση ώστε αυτή να μπορεί να διεκπεραιώσει τις ευθύνες της Δευτερευόντως, κλάσεις που χρησιμοποιούν υπηρεσίες της παρούσας κλάσης. Η απόφαση για συμπερίληψη στον κατάλογο συνεργατών καθορίζεται από το βαθμό συνεργασίας μεταξύ δύο κλάσεων. Π.χ., η στοίβα δεν συμπεριλαμβάνει τις κλάσεις που πιθανώς να την χρησιμοποιούν (όχι όμως το αντίστροφο). Ανακαλύπτοντας τις κλάσεις Κατηγορίες Κλάσεων: Διαχειριστές πληροφοριών, δεδομένων και καταστάσεων (Data maagers, Data or state classes). Πηγές ή αποδέκτες πληροφοριών (data sources or siks). Κλάσεις απεικονίσεως ή παρουσιάσεως (view or observer classes) Data Maager Classes: Models Display Classes: Views Βοηθητικές κατηγορίες (facilitator or helper class) 29 30 Σχεδιασμός με Σενάρια Ο σχεδιασμός με κάρτες CRC δεν ακολουθεί ούτε το topdow ούτε το bottom-up μοντέλο σχεδιασμού λογισμικού. Σχεδιασμός με Σενάρια Δοκιμάζονται διαφορετικά σενάρια και δημιουργούνται νέες υπευθυνότητες. Διεργασία σχεδίασης με CRC: από το γνωστό προς το άγνωστο Ξεκινάµε από τις προφανείς κλάσεις κι αυτές που απαιτούνται για το ξεκίνηµα της εφαρµογής Συνεχίζουµε ξετυλίγοντας υποθετικά σενάρια ( what if ) Χρησιµοποιούµε τις κάρτες για να προσοµοιώσουµε την εξέλιξη του προγράµµατος Κάθε ενέργεια που αναγνωρίζεται, καταχωρείται σαν υπευθυνότητα της σχετικής κλάσης Ελέγχονται σενάρια που εμπεριέχουν καταστάσεις σφάλματος, αποκλίσεις ή έκτακτες περιστάσεις. Οι σχεδιαστές ενθαρρύνονται να εργάζονται με το συγκεκριμένο ανά χείρας πρόβλημα και να μην προσπαθούν να προβλέψουν μελλοντικές απαιτήσεις του λογισμικού, οι οποίες δεν προκύπτουν από τα εξεταζόμενα σενάρια. Συχνά, οι υπευθυνότητες αλλάζουν κλάση, καθώς εξελίσσεται η σχεδίαση και εξετάζονται διαφορετικά σενάρια. 31 32
Πλεονεκτήματα των CRC Ως τεχνική σχεδιασμού είναι: απλή φθηνή όι κάρτες αντικαθιστούνται εύκολα εύκολα μεταβάλλονται Με την χρήση και τον έλεγχο σεναρίων βεβαιωνόμαστε ότι το σχέδιο του λογισμικού περιέχει όλες τις πληροφορίες, οι οποίες είναι αναγκαίες για την εκτέλεση και την εκπλήρωση μιας εργασίας. Σχεδιασμός με CRC Η τεχνική CRC χωρίζεται σε δύο μέρη: 1. Το ερευνητικό μέρος (exploratory phase) ανακαλύπτουμε τις κλάσεις που χρειάζονται για την υλοποίηση του προβλήματος καθορίζουμε και αναθέτουμε τις υπευθυνότητες στις διάφορες κατηγορίες αναγνωρίζουμε τη συνεργασία που υπάρχει μεταξύ των διαφόρων κατηγοριών 33 34 Σχεδιασμός με CRC Βασική παρατήρηση Η μεθοδολογία δεν υποκαθιστά τη σκέψη! 2. Το αναλυτικό μέρος (aalysis phase) εκλέπτυνση του σχεδίου που προέκυψε από το ερευνητικό μέρος δημιουργία κλάσεων που περιέχουν κοινές ευθύνες (ιεραρχία) τοποθέτηση σχετικών κλάσεων μαζί 35 36
Σουβλάκι-233 Σουβλάκι233 - η φουκού Θέλουμε να κάνουμε προσομοίωση ενός σουβλατζίδικου take away για να βελτιώσουμε (βελτιστοποιήσουμε) την εξυπηρέτηση των πελατών μας Διαθέτουμε φουκού μήκους x εκατοστών Χρειάζεται χρόνος t για να ανάψουν τα κάρβουνα Ποιές είναι οι αφαιρετικές δομές για να λύσουμε το πρόβλημα; Πώς θα προσθέσουμε λίγο ρεαλισμό; Ουρά Λήψης Παραγγελιών Σταθµός εξυπηρέτησης 37 38 Σουβλάκι233 - τα τηγάνια Σουβλάκι233: πρώτες ύλες Διαθέτουμε Ν τηγάνια Κάθε τηγάνι: έχει χωρητικότητα c μερίδες πατάτες. χρειάζεται χρόνο t για να τηγανίσει το περιεχόμενό του Σουβλάκια: Κάθε σμίλα παίρνει χώρο χ εκατοστά Χοιρινό: ψήνεται σε χρόνο 20-25 λεπτών Κοτόπουλο: ψήνεται σε χρόνο 15-20 λεπτών Σεφταλιά: κάθε σμίλα παίρνει χώρο y εκατοστά ψήνεται σε χρόνο 25 λεπτών Πίττα: ψήνεται σε χρόνο 5 λεπτών 39 40
Σουβλάκι233: τα υλικά Άλλα (σημαντικά) θέματα Τι είναι η παραγγελία; Πώς διαχειριζόμαστε τις παραγγελίες; Με τι αλγόριθμο εκτελούμε τις παραγγελίες; Πώς αξιολογούμε την ικανοποίηση των πελατών μας; Πώς επιτυγχάνουμε την γραφική απεικόνιση της προσομοίωσης; 41 42 Επίλυση Υπολογιστικών Προβλημάτων Αναπαράσταση υπολογιστικών προβλημάτων Θεμελίωση (φορμαλιστική διατύπωση) Προβλήματος: ορισμός και ανάλυση του προβλήματος Ποιά είναι η είσοδος και ποιά η έξοδος; Ποιές άλλες πληροφορίες είναι απαραίτητες για τη λύση; Ποιά είναι η κατάλληλη αναπαράσταση του προβλήµατος; Επινόηση και διατύπωση αλγορίθµου επίλυσης Ποιά είναι τα βήµατα για επίλυση του προβλήµατος; Κωδικοποίηση αλγορίθµου σε πρόγραµµα Μεταγλώττιση, έλεγχος ορθότητας και αποσφαλµάτωση προγράµµατος Τεκµηρίωση και συντήρηση του προγράµµατος Θεμελίωση / επίλυση προβλημάτων με αναπαράσταση χώρου καταστάσεων (state space represetatio): Το πρόβλημα μοντελοποιείται σαν χώρος καταστάσεων - ένα σύνολο όλων των καταστάσεων στις οποίες μπορεί να «βρεθεί» ο αλγόριθμος επίλυσης κατά τη διάρκεια αναζήτησης λύσης Αρχικές καταστάσεις: είσοδος Τελικές καταστάσεις: λύσεις προβλήματος Δύο καταστάσεις είναι συνδεδεμένες μεταξύ τους αν υπάρχει ένα έγκυρο αλγοριθμικό βήμα που μπορεί να μετασχηματίσει τη μια στην άλλη 43 44
Σουβλάκι233 Uified Modelig Laguage - Σύντοµη Ανασκόπηση Άσκηση για το σπίτι: αναλύστε το πρόβλημα και εντοπίστε τις κλάσεις/δομές δεδομένων/μεθόδους που χρειάζονται για την προσομοίωση δουλέψτε σε ομάδες των 3 ατόμων Source: Nelso Padua-Perez &William Pugh Departmet of Computer Sciece Uiversity of Marylad, College Park 45 46 Uified Modelig Laguage Ένα σύνολο από διαγραμματικές συμβάσεις, οι οποίες μπορούν να χρησιμοποιηθούν για την περιγραφή σχεδίων λογισμικού. Υπάρχουν διάφοροι τύποι διαγραμμάτων UML Κάθε τύπος χρησιμοποιείται για περιγραφή διαφορετικών πραγμάτων Πχ: class diagrams, state diagrams, sequece diagrams UML Class Diagrams Represet the (static) structure of the system Geeral I Java Name Name State Data Fields Behavior Methods Methods Attributes (Data fields) 47 48
Relatioships Betwee Classes Multiplicity of Associatios Depedecy - εξάρτηση Temporary, uses a Aggregatio - συνάθροιση Some relatioships may be quatified Multiplicity deotes how may objects the source object ca legitimately referece Compositio - σύνθεση Associatio - συσχέτιση Permaet, structural, has a Solid lie (arrowhead optioal) Iheritace - κληρονομικότητα Iheritace, is a OR Notatio * 0, 1, or more 5 5 exactly 5..8 betwee 5 ad 8, iclusive 5..* 5 or more Solid lie with ope (triagular) arrowhead Implemetatio - υλοποίηση Dotted lie with ope (triagular) arrowhead 49 50 Aggregatio (συνάθροιση) Aggregatio (συνάθροιση): προκύπτει όταν αντικείμενα μιας κλάσης περιέχουν αντικείμενα κάποιας άλλης κλάσης για μια χρονική περίοδο Ειδική κατηγορία συσχέτισης ( has-a ) Ένα πεδίο δεδομένων μιας κλάσης μπορεί να περιγραφεί είτε με συνάθροιση είτε σαν κατηγόρημα (attribute) της κλάσης. Compositio (σύνθεση) Πιό ισχυρή μορφή συνάθροισης τα συναθροιζόμενα αντικείμενα δεν έχουν ανεξάρτητη ύπαρξη έξω από το αντικείμενα που τα συναθροίζει Κάνετε χρήση συνάθροισης ή σύνθεσης μόνο όταν η μια κλάση διαχειρίζεται τα αντικείμενα της άλλης Message Queue 1 * Message Mailbox Message Queue 51 52
Associatio - Συσχέτιση Associatio with Roles More geeral tha aggregatio/compositio Deotes permaet, structural relatioship State of class A cotais class B Represeted by solid lie (arrowhead optioal) Course registers for has as participat Studet Car ad Egie classes kow about each other 53 54 Multiplicity of Associatios Associatios w/ Navigatio Iformatio May-to-oe Bak has may ATMs, ATM kows oly 1 bak Ca idicate directio of relatioship Represeted by solid lie with arrowhead Oe-to-may Ivetory has may items, items kow 1 ivetory Gas Pedal class kows about Egie class Egie class does t kow about Gas Pedal class 55 56
Associatios w/ Navigatio Iformatio Deotes has-a relatioship betwee classes Gas Pedal has a Egie Depedecy Deotes depedece betwee classes Always directed (Class A depeds o B) Represeted by dotted lie with arrowhead A B State of Gas Pedal class cotais istace of Egie class ca ivoke its methods A depeds o B 57 58 Depedecy Depedecy -εξάρτηση Caused by class methods Method i Class A temporarily uses a object of type Class B Chage i Class B may affect class A Depedece may be caused by Local variable Parameter Retur value Example A B A uses object of class B Class A { Class B { B Foo(B x) { B y = ew B(); retur y; 59 60
Depedecy Example Geeralizatio - γενίκευση Deotes iheritace betwee classes Ca view as is-a relatioship Represeted by lie edig i (ope) triagle Class Driver depeds o Class Car Laptop, Desktop, PDA iherit state & behavior from Computers 61 62 Implemetatio - υλοποίηση Deotes class implemets Java iterface Represeted by dotted lie edig i (ope) triagle Sequece Diagrams A «B» Διαγράμματα Ακολουθιών A implemets iterface B 63 64
Διαγράμματα Ακολουθιών Διαγράμματα Ακολουθιών Περιγράφουν την δυναμική εξέλιξη ενός σεναρίου, κατά την εκτέλεση ενός προγράμματος: Χρησιμοποιούνται για να περιγράψουν: τις αλληλεπιδράσεις ανάμεσα σε αντικείμενα Βασική χρησιμότητα: να περιγράψει τα αντικείμενα που εμπλέκονται στην υλοποίηση ενός σεναρίου και την ακολουθία με την οποία επιτελούνται οι κλήσεις των διαφόρων μεθόδων amailbox Όνοµα αντικειµένου (υπογραµµισµένο) add Στήλη ενεργοποίησης (activatio bar) ewmessages : MessageQueue Όνοµα αντικειµένου κλάσης Χρόνος ζωής αντικειµένου (lifelie) 65 66 Διαγράμματα Ακολουθιών :MailSystem :MailSystem State Diagrams locatemailbox <<create>> :Mailbox Διαγράμματα Κατάστασης 67 68
Διαγράμματα κατάστασης Ορισμένα αντικείμενα μπορούν να βρεθούν σε ένα διακριτό σύνολο καταστάσεων - όπου κάθε κατάσταση επηρεάζει την συμπεριφορά τους. Διαγράμματα κατάστασης coected Για παράδειγμα, το σύστημα φωνοκιβωτίων: Εισέρχεται κατάσταση σύνδεσης, όταν ο καλών συνδέεται με το σύστημα. Εισέρχεται στην κατάσταση εγγραφής όταν ο καλών δώσει τον αριθμό του φωνοκιβωτίου στο οποίο θέλει να αφήσει μήνυμα - στην κατάσταση αυτή ο καλών μπορεί να κάνει εγγραφή του μηνύματός του. Όταν ο καλών δώσει κωδικό πρόσβασης, το σύστημα εισέρχεται στην κατάσταση πίνακα επιλογών φωνοκιβωτίου recordig mailbox meu extesio dialed passcode etered 69 70 Σύστημα Φωνοκιβωτίων (Voice mail) Διευκρινίσεις Διατύπωση αποστολής συστήματος (missio statemet) We will desig ad implemet a program that simulates a voice mail system, without creatig a completely realistic workig phoe system. We will simply represet voice mail by text that is etered through the keyboard. We eed to simulate three distict iput evets that occur i a real telephoe system: speakig, pushig a butto o the telephoe touchpad, ad hagig up the telephoe. We use the followig covetio for iput: a iput lie cosistig of a sigle character 1...9 or # deotes a pressed butto o the telephoe touchpad. For example, to dial extesio 13, you eter 1 3 # A iput lie cosistig of the sigle character H deotes hagig up the telephoe. 71 72
Σύστημα Φωνοκιβωτίων (Voice mail) Reach a Extesio Περιπτώσεις Χρήσης 1. User dials the mai umber of the Voice Mail System caller Reach Extesio Leave a Message Log i Retrieve Messages Voice Mail System Chage Greetig Chage Passcode ower 2. The VMS speaks a prompt: Eter mailbox umber followed by the # 3. The user types i the extesio umber of the message recipiet 4. The VMS speaks: You have reached mailbox xxxx. Please leave a message ow. 73 74 Leave a Message 1. The caller carries out Reach a Extesio. 2. The caller speaks the message. 3. The caller hags up. 4. The VMS places the recorded message i the recipiet s mailbox Log i 1. The mailbox ower carries out Reach a Extesio. 2. The mailbox ower types the passcode, followed by the # key. (The default passcode is the same as the mailbox umber. The mailbox ower ca chage it - see Chage the Passcode). 3. The voice mail system plays the mailbox meu: Eter 1 to retrieve your messages Eter 2 to chage your passcode Eter 3 to chage your greetig. 75 76
Retrieve Messages 1. Mailbox ower carries out Log i. 2. The mailbox ower selects the retrieve your messages meu optio 3. The VMS plays the message meu: Eter 1 to liste to the curret message. Eter 2 to save the curret message. Eter 3 to delete the curret message. Eter 4 to retur to the mailbox meu. 4. The mailbox ower selects the liste to the curret message meu optio. 5. The VMS plays the curret ew message, or, if there are o ew messages, the curret old message. Note that the message is played, ot removed from the queue. 6. The VMS plays the message meu. 7. The user selects delete the curret message. The message is 77 Variatio #1: Savig a Message i. Start at Step 6. ii. The user selects save the curret message. The message is removed from its queue ad appeded to the queue of old messages. iii. Cotiue with Step 3. 78 Κάρτες CRC για το Σύστημα Φωνοκιβωτίων Mailbox CRC Προφανείς κλάσεις: Mailbox Βασική λειτουργία του να κρατάει μηνύματα. Πρέπει να διατηρεί πληροφορία για το ποιά μηνύματα είναι νέα και ποιά έχουν διαβαστεί και σωθεί. Τα μηνύματα πρέπει να αποθηκεύονται σε μια δομή δεδομένων με λειτουργικότητα FIFO Πρέπει να διαφοροποιείται η αποθήκευση των νέων και των σωσμένων μηνυμάτων Mailbox keep ew ad saved messages MessageQueue Message MailSystem Διατηρεί και διαχειρίζεται τα φωνοκιβώτια 79 80
MessageQueue CRC MessageQueue add ad remove messages i FIFO order MailSystem CRC MailSystem maage mailboxes Mailbox 81 82 Άλλες κλάσεις Telephoe CRC Ποιός διαχειρίζεται την εισροή δεδομένων από τους χρήστες; Πρέπει να έχουμε μια κλάση η οποία να προσομοιώνει τις τηλεφωνικές συσκευές, οι οποίες λαμβάνουν οδηγίες από τους χρήστες και διαβάζουν τα μηνύματα. Το σύστημα πρέπει να μπορεί να διαχειρίζεται ταυτόχρονη είσοδο και έξοδο προς περισσότερες της μιας τηλεφωνικές συσκευές, οι οποίες συνδέονται μαζί του την ίδια χρονική περίοδο. take user iput from touchpad, microphoe, hagup speak output Telephoe 83 84
Coectio CRC Coectio get iput from telephoe carry out user commads keep track of state Telephoe MailSystem Leave a Message 1. Caller dials extesio. The Telephoe seds the dialed extesio to the Coectio. 2. Coectio asks the MailSystem to fid the Mailbox object with the give extesio umber. 3. Coectio asks the Mailbox object to play the greetig o the speaker. 4. The users speaks the message. The Telephoe asks the Coectio to record it. 5. The caller hags up. The Telephoe otifies the Coectio. 6. Τhe Coectio costructs a Message object that cotais the recorded message. 85 86 Telephoe CRC - updated Coectio CRC - updated Telephoe Coectio take user iput from touchpad, microphoe, hagup Coectio get iput from telephoe carry out user commads Telephoe MailSystem speak output keep track of state MailBox record voice iput Message 87 88
Mailbox CRC - updated Mailbox MessageQueue Message CRC Message keep ew ad saved messages maage greetig maage passcode retrieve, save, delete messages maage message cotets 89 90 Retrieve Messages UML Διαγράμματα Κλάσεων - 1. User types passcode. Telephoe otifies Coectio. 2. Coectio asks Mailbox to check passcode. 3. Assumig the passcode was correct, the Coectio sets the Mailbox as the curret mailbox ad asks the Telephoe to speak the Mailbox meu. Eter 1 to liste to the curret message. Eter 2 to save the curret message. Eter 3 to delete the curret message. Eter 4 to retur to the mailbox meu. 4. Users types i the retrieve messages meu optio. The Telephoe passes it o to the Coectio. 5. The Coectio asks Mailbox to plays the curret ew message, or, if there are o ew messages, the curret old message. Note that the message is played, ot removed from the queue. 6. The VMS plays the message meu. 91 92
UML Διαγράμματα Κλάσεων - Sequece diagrams (Leave a msg) 93 94 Sequece diagrams (Retrieve a msg) Διάγραμμα Κατάστασης (Coectio states) 95 96
UML Examples UML Example Veteriary System Read UML class diagram Try to read & uderstad UML diagram Try to uderstad relatioships Examples Pets & owers Computer disk orgaizatio Bakig system Home heatig system Pritig system 97 98 UML Example Veteriary System UML Example Computer System Try to read & uderstad UML diagram Try to read & uderstad UML diagram 1 or more Pets associated with 1 PetOwer 99 100
UML Example Computer System UML Example Bakig System Try to read & uderstad UML diagram Try to read & uderstad UML diagram 1 CPU associated with 0 or more Cotrollers 1-4 DiskDrives associated with 1 SCSICotroller SCSICotroller is a (specialized) Cotroller 101 102 UML Example Bakig System UML Example Home Heatig System Try to read & uderstad UML diagram 1 Bak associated with 0 or more Accouts Checkig, Savigs, MoeyMarket are Accouts 103 104
UML Example Home Heatig System UML Class Diagrams Java Differet represetatio of same iformatio Name, state, behavior of class Relatioship(s) betwee classes Practice derivig oe from the other Accurately depictig relatioship betwee classes Each Thermostat has 1 Room Each Thermostat associated with 0 or more Heaters ElectricHeater is a specialized Heater AubeTH101D is a specialized Thermostat 105 106 UML Java : Veteriary System UML Java : Veteriary System UML UML Java Java class Pet { PetOwer myower; // 1 ower for each pet class PetOwer { Pet [ ] mypets; // multiple pets for each ower 107 108
Java UML : Veteriary System Java UML : Veteriary System Java class Pet { PetOwer myower; // 1 ower for each pet class PetOwer { Pet [ ] mypets; // multiple pets for each ower Java class Pet { PetOwer myower; // 1 ower for each pet class PetOwer { Pet [ ] mypets; // multiple pets for each ower UML UML 109 110 UML Class Diagrams Java UML Java : Computer System UML UML Java class Pet { PetOwer myower; // 1 ower for each pet class PetOwer { Pet [ ] mypets; // multiple pets for each ower Java 111 112
UML Java : Computer System UML Java : Computer System UML UML Java class Cotroller { class SCSICotroller exteds Cotroller { Java Desig code usig all available iformatio i UML 113 114 UML Java : Computer System Java UML : Pritig System Java class CPU { Cotroller [ ] myctlrs; class Cotroller { CPU mycpu; class SCSICotroller exteds Cotroller { DiskDrive [ ] mydrives = ew DiskDrive[4]; Class DiskDrive { SCSICotroller myscsi; Java class Registry { PritQueue fidqueue(); class PritQueue { List pritjobs; Priter mypriter; Registry myregistry; void ewjob(); it legth(); Resources getresource(); 115 116
Java UML : Pritig System Java UML : Pritig System Java Class Priter { Resources myresources; Job curjob; void prit(); boolea busy(); boolea o(); class Job { Job(Registry r) { 117 118 UML Summary Παράδειγμα Σχεδιασμού με CRC Graphics modelig laguage Visually represets desig of software system We focused o class diagrams Cotets of a class Relatioship betwee classes You should be able to Draw UML class diagram give Java code Write Java code give UML class diagram Σχεδιάστε το λογισμικό για μια Αυτόµατη Μηχανή Συναλλαγών - ΑΤΜ (Automatic Teller Machie). Αλγόριθμος: Εισαγωγή κάρτας Έλεγχος για την αυθεντικότητα λογαριασμού διαμέσου του κρυφού αριθμού (PIN) Εάν όλα είναι ΟΚ, επιτρέπεται η επιλογή ανάμεσα σε: Απόσυρση χρημάτων Κατάθεση Τέλος 119 120
Card Reader Pi Verifier CardReader Collaborators PiVerifier Collaborators Display welcome, wait for card Ask PiVerifier to check validity Call Activity Selector Retur card to user PiVerifier ActivitySelector Get PIN umber from accout maager; retur false if o accout Put up PIN request widow Get PIN umber from user Compare PIN umbers; retur result AccoutMaager 121 122 AccoutMaager Activity Selector AccoutMaager Collaborators ActivitySelector Collaborators Check validity of accout; retur PIN umber Check withdraw/deposit ifo Display activity meu Wait for user selectio Call appropriate trasactio maager DepositMaager WithdrawMaager ReportMaager 123 124
Withdraw Maager Electroic Drawer WithdrawMaager Collaborators ElectroicDrawer Collaborators Ask user for amout to withdraw Verify amout with AccoutMaager Tell cash dispeser to release cash AccoutMaager CashDispeser Issue cash Issue time-stamped deposit evelope Retrieve deposit evelope WithdrawMaager DepositMaager 125 126