Θ.Ε. ΠΛΗ24 ΑΚΑΔ. ΕΤΟΣ 2007-2008 ΠΡΩΤΗ ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Άσκηση 1 Διαχείριση τηλεφωνικού καταλόγου Να σχεδιάσετε ένα διάγραμμα περιπτώσεων χρήσης που να παριστάνει τις δυνατότητες που προσφέρει ένα σύγχρονο κινητό τηλέφωνο στο χρήστη του αναφορικά με τη διαχείριση του τηλεφωνικού καταλόγου που περικλείει. Να λάβετε υπόψη σας ότι ο χρήστης μπορεί να εισάγει επαφές (contacts), να διαγράψει επαφές, να αναζητήσει επαφές, να τροποποιήσει επαφές, να συσχετίσει με αυτές (αν το επιθυμεί) κάποια φωτογραφία ή κάποιον ήχο, ενώ έχει στη διάθεσή του και μια σειρά από ρυθμίσεις βασικών χαρακτηριστικών του τηλεφωνικού καταλόγου. Μπορείτε να κάνετε (αν το επιθυμείτε) και επιπρόσθετες υποθέσεις σχετικά με τις δυνατότητες που προσφέρει ο τηλεφωνικός κατάλογος. Σε κάθε περίπτωση όμως, προσπαθήστε να χρησιμοποιήσετε κατάλληλες σχέσεις ανάμεσα στις περιπτώσεις χρήσης που θα προσδιορίσετε, αν φυσικά αυτό είναι εφικτό. 1
Άσκηση 2 Αεροπορικές πτήσεις Δίνονται οι παρακάτω απαιτήσεις: 1. Μια αεροπορική εταιρεία εκτελεί πτήσεις. 2. Η αεροπορική εταιρεία «ανοίγει» μια πτήση για κρατήσεις θέσεων ή την «κλείνει» σύμφωνα με τις ανάγκες της. 3. Ένας πελάτης μπορεί να κάνει κρατήσεις για μια ή περισσότερες πτήσεις και για έναν ή περισσότερους επιβάτες. 4. Μια κράτηση αφορά μια πτήση και έναν επιβάτη. 5. Μια κράτηση μπορεί να ακυρωθεί ή να επιβεβαιωθεί. 6. Μια πτήση ξεκινάει από ένα αεροδρόμιο αναχώρησης και καταλήγει σε ένα αεροδρόμιο άφιξης. 7. Μια πτήση χαρακτηρίζεται από συγκεκριμένη ημερομηνία και χρόνο αναχώρησης και άφιξης. 8. Μια πτήση μπορεί να έχει ενδιάμεσες στάσεις. 9. Μια ενδιάμεση στάση χαρακτηρίζεται από συγκεκριμένη ημερομηνία και χρόνο αναχώρησης και άφιξης. 10. Κάθε αεροδρόμιο εξυπηρετεί μια ή περισσότερες πόλεις. 2
Να σχεδιάσετε το αντίστοιχο διάγραμμα κλάσεων (στο επιτρεπόμενο από τις διαθέσιμες πληροφορίες επίπεδο λεπτομέρειας). Εξηγήστε τον τρόπο με τον οποίο ικανοποιείται από το διάγραμμά σας η καθεμία από τις πιο πάνω απαιτήσεις. Υπόδειξη: Η χρήση ρημάτων στην περιγραφή των απαιτήσεων δεν υπονοεί απαραίτητα την ύπαρξη συγκεκριμένων σχέσεων στο διάγραμμα κλάσεων που θα σχεδιάσετε. Νο Απαίτησης Α1 Α2 Α3 Α4 Α5 Α6 Α7 Α8 Α9 Α10 Ικανοποίηση απαίτησης Σχέση 1 προς πολλά μεταξύ Αεροπορικής Εταιρείας και Πτήσης Μέθοδοι άνοιγμα() & κλείσιμο() στην κλάση Πτήση Σχέση 1 προς 1 ως πολλά μεταξύ Πελάτη και Κράτησης Σχέση 1 προς 1 μεταξύ Επιβάτη και Κράτησης και Σχέση 1 προς 1 μεταξύ Πτήσης και Κράτησης Μέθοδοι επιβεβαίωση() & ακύρωση() στην κλάση Κράτηση Σχέσεις «Προσγειώνεται σε» και «Απογειώνεται από» μεταξύ Πτήσης και Αεροδρομίου Πεδία της κλάσης Πτήση: ημερομηνία, χρόνοςαναχώρησης και χρόνοςαφιξης Η Ενδιάμεση Στάση ως Κλάση Συχέτισης μεταξύ Πτήσης και Αεροδρομίου Πεδία της κλάσης Ενδιάμεση Στάση: ημερομηνία, χρόνοςαναχώρησης και χρόνοςαφιξης Σχέση 1 προς 1 έως πολλά μεταξύ Αεροδρομίου και Πόλης 3
Άσκηση 3 Επεξεργασία παραγγελιών Να σχεδιάσετε ένα διάγραμμα δραστηριοτήτων για τη διαδικασία επεξεργασίας παραγγελιών που περιγράφεται στην παράγραφο που ακολουθεί. Όταν λαμβάνεται μια παραγγελία γίνεται έλεγχος κάθε γραμμής της παραγγελίας για να διαπιστωθεί αν υπάρχει απόθεμα στην αποθήκη για το προϊόν που αναφέρεται σε αυτή τη γραμμή (δηλαδή για να διαπιστωθεί αν είναι δυνατή η πώληση του συγκεκριμένου προϊόντος). Αν υπάρχει απόθεμα για το συγκεκριμένο προϊόν, τότε το προϊόν αυτό καταχωρείται στην παραγγελία. Αν μετά την καταχώρηση η διαθέσιμη ποσότητα του υπό εξέταση προϊόντος στην αποθήκη είναι μικρότερη από κάποιο επιθυμητό επίπεδο, τότε γίνεται παραγγελία του συγκεκριμένου προϊόντος στον κατάλληλο προμηθευτή. Όσο γίνεται η εξέταση του αποθέματος γίνεται συγχρόνως και έλεγχος του τρόπου πληρωμής της παραγγελίας. Αν ο τρόπος πληρωμής είναι αποδεκτός, αλλά δεν υπάρχει κάποιο από τα προϊόντα που αναφέρονται στην παραγγελία, τότε η παραγγελία παραμένει σε εκκρεμότητα. Αν ο τρόπος πληρωμής δεν είναι αποδεκτός, τότε η παραγγελία ακυρώνεται. 4
Άσκηση 4 Ξυπνητήρι Έστω ένα ξυπνητήρι, το οποίο έχει την ακόλουθη συμπεριφορά: 1) To ξυπνητήρι μπορεί να είναι ανοικτό ή κλειστό. 2) Όταν φτάσει η ώρα για την οποία έχει ρυθμιστεί, κουδουνίζει. 3) Το ξυπνητήρι σταματά να κουδουνίζει όταν το σταματήσουμε ή όταν περάσει ένα ορισμένο χρονικό διάστημα. (α) Να σχεδιάσετε το αντίστοιχο διάγραμμα καταστάσεων. (β) Να δημιουργήσετε μια κλάση που να βρίσκεται σε συμφωνία με το διάγραμμα καταστάσεων που σχεδιάσατε. α) Θεωρούμε ότι το ξυπνητήρι δεν έχει τελική κατάσταση, παρά μόνο εάν καταστραφεί. β) 5
Άσκηση 5 Ηλεκτρονικά παιχνίδια περιπέτειας Τα ηλεκτρονικά παιχνίδια περιπέτειας (adventure games) συχνά βασίζονται στη χρήση γράφων. Οι κόμβοι ενός τέτοιου γράφου παριστάνουν θέσεις, ενώ υπάρχει και ένα σύνολο κατευθύνσεων (π.χ. Βοράς, Νότος, Ανατολή, Δύση). Για κάθε κόμβο n και κατεύθυνση d, υπάρχει το πολύ ένας κόμβος στον οποίο μπορούμε να φθάσουμε αν ακολουθήσουμε την κατεύθυνση d από τον κόμβο n. (α) Να σχεδιάσετε ένα διάγραμμα κλάσεων για την αναπαράσταση γράφων, όπως αυτοί που περιγράφονται στην προηγούμενη παράγραφο. Να προσδιορίσετε την πολλαπλότητα σε όλες τις συσχετίσεις που θα επιλέξετε να χρησιμοποιήσετε. (β) Να τροποποιήσετε το προηγούμενο διάγραμμα κλάσεων ώστε αυτό να επιτρέπει την καταχώριση γράφων με απεριόριστο πλήθος δυνατών κατευθύνσεων. Να σχολιάσετε σύντομα τις σχεδιαστικές επιλογές που κάνατε σε κάθε περίπτωση. α) Ο κάθε γράφος αποτελείται από κόμβους. Ο κάθε κόμβος συνδέεται με το πολύ ένα κόμβο (1 προς 0..1), μέσω μιας κατεύθυνσης (κλάση συσχέτισης). β) Ο κάθε γράφος αποτελείται από κόμβους. Ο κάθε γράφος έχει πολλές κατευθύνσεις. Άσκηση 6 Διαδικασία πληρωμής Έστω μια ταμειακή μηχανή σε ένα super market. H διαδικασία πληρωμής που ακολουθεί ένας πελάτης είναι συνήθως η ακόλουθη: 1. Ο πελάτης φτάνει στο ταμείο με το καρότσι. 6
2. Ο ταμίας, με τη χρήση του αναγνώστη γραμμικού κώδικα (bar code reader), σαρώνει τους κωδικούς των προϊόντων που έχει αγοράσει ο πελάτης. 3. H ταμειακή μηχανή παρουσιάζει την τιμή και την περιγραφή του κάθε προϊόντος που σαρώνει ο ταμίας. 4. Εάν υπάρχουν εκπτωτικά κουπόνια αυτά αφαιρούνται από το λογαριασμό. 5. Με το τέλος της σάρωσης προϊόντων παρουσιάζεται ο συνολικός λογαριασμός. 6. Ο πελάτης επιλέγει τρόπο πληρωμής (μετρητά, πιστωτική κάρτα, επιταγή). 7. Ο ταμίας δίνει τα ρέστα, καθώς και την απόδειξη. (α) Να σχεδιάσετε ένα διάγραμμα περιπτώσεων χρήσης για την πιο πάνω διαδικασία πληρωμής. Να αιτιολογήσετε όλες τις σημαντικές αποφάσεις / επιλογές σας, όπως, για παράδειγμα, ποιοι είναι οι χειριστές, αν είναι πρωτεύοντες ή δευτερεύοντες, γιατί χρησιμοποιήθηκαν σχέσεις μεταξύ των περιπτώσεων χρήσης που επιλέξατε, κ.λπ. (β) Με βάση την πιο πάνω διαδικασία πληρωμής, να περιγράψετε λεπτομερώς (αναλυτική περιγραφή με κείμενο) την περίπτωση χρήσης που περιγράφει τη διαδικασία πώλησης προϊόντων. (γ) Να σχεδιάσετε το διάγραμμα ακολουθίας που αντιστοιχεί στην περίπτωση χρήσης που περιγράφει τη διαδικασία πώλησης προϊόντων. α) Πρωτεύοντες Χειριστές: Ταμίας Δευτερεύοντες Χειριστές: Πελάτης, Συστημα Πιστωτικής Καρτας Ο Ταμίας συνδέεται με την ΠΧ «ΠΛΗΡΩΜΗ», η οποία περιλαμβάνει την ΠΧ «ΕΠΕΞΕΡΓΑΣΙΑ ΠΛΗΡΩΜΗΣ» 7
Ο Χρήστης συνδέεται με τις ΠΧ «ΠΛΗΡΩΜΗ» και «ΕΠΕΞΕΡΓΑΣΙΑ ΠΛΗΡΩΜΗΣ», η οποία αποτελεί γενίκευση των ΠΧ «ΠΛΗΡΩΜΗ ΜΕ ΚΑΡΤΑ», «ΠΛΗΡΩΜΗ ΜΕ ΕΠΙΤΑΓΗ» και «ΠΛΗΡΩΜΗ ΜΕ ΜΕΤΡΗΤΑ», διότι ισχύει για κάθε μία η σχέση «είναι-ένα». Η ΠΧ «ΠΛΗΡΩΜΗ ΜΕ ΚΑΡΤΑ» περιλαμβάνει την ΠΧ «ΕΛΕΓΧΟΣ ΚΑΡΤΑΣ», η οποία γίνεται από το Σύστημα Πιστωτικής κάρτας. β) γ) I. Βασικά στοιχεία 1. Τίτλος: Πληρωμή 2. Περίληψη: Πελάτης στο ταμείο με καλάθι με είδη. Ταμίας καταγράφει είδη και ποσότητες. Επιλέγεται τρόπος πληρωμής. Με την πληρωμή, εκδίδεται απόδειξη και ενημερώνεται υπόλοιπο. 3. Συμμετέχοντες δράστες: Ταμίας, πελάτης, Σύστημα Πιστωτικής II. Ροή συμβάντων 1. Προαπαιτήσεις: η ταμειακή μηχανή είναι αναμμένη. Ο ταμίας έχει πιστοποιηθεί. 2. Κύριο σενάριο επιτυχίας: 1. Ο ταμίας βγάζει το σύνολο 2. O πελάτης επιλέγει τρόπο πληρωμής 3. Ο πελάτης πληρώνει με τον επιλεγμένο τρόπο 4. Ο ταμίας του παραδίδει την απόδειξη αγοράς μαζί με τα ρέστα 3. Εναλλακτικές ακολουθίες: 1.1 Άγνωστος γραμμωτός κώδικας 3.1 Πελάτης δεν μπορεί να πληρώσει 4.1 Ταμίας δεν έχει να δώσει ρέστα 4. Μετα-συνθήκες Έκδοση απόδειξης Άσκηση 7 Βιβλιοθήκη 8
Δίνεται το ακόλουθο διάγραμμα κλάσεων, το οποίο χρησιμοποιείται στα πλαίσια της μοντελοποίησης των λειτουργιών μιας βιβλιοθήκης: Έστω ότι ο βιβλιοθηκάριος επιθυμεί να γνωρίζει: (α) Πόσα βιβλία έχει δανειστεί κάθε πελάτης ανά κατηγορία, δηλαδή επιθυμεί την παραγωγή καταστάσεων της μορφής: Α/Α Ονοματεπώνυμο Φιλοσοφία Επιστημονική Φαντασία 1 Αχιλλέας Καμέας 5 12 (β) Το πλήθος των εμπρόθεσμων και εκπρόθεσμων επιστροφών ανά χρήστη, δηλαδή επιθυμεί την παραγωγή καταστάσεων της μορφής: Α/Α Ονοματεπώνυμο Εμπρόθεσμες Εκπρόθεσμες Επιστροφές Επιστροφές 1 Τάκης Αλεφραγκής 25 10 Θεωρώντας το παραπάνω διάγραμμα κλάσεων, να σχεδιάσετε διαγράμματα ακολουθίας που να περιγράφουν τις πιο πάνω επαναληπτικές διαδικασίες που επιθυμεί ο βιβλιοθηκάριος. Αρχικά να προσδιορίσετε αλγοριθμικά την επαναληπτική διαδικασία (με όποιον τρόπο επιθυμείτε) και έπειτα να σχεδιάσετε το κατάλληλο διάγραμμα ακολουθίας. Υπόδειξη: Για την καλύτερη κατανόηση της άσκησης μπορείτε να συμβουλευτείτε και την υποδειγματική απάντηση στην άσκηση 7 της πρώτης γραπτής εργασίας του ακαδημαϊκού έτους 2006-2007. 9
Καταρχήν, επειδή το ΔΚ είναι ημιτελές, ειδικότερα όσο αφορά την κλάση Borrower, υποθέτουμε την ύπαρξη των εξής μεθόδων ανά κλάση: Borrower: +getborrower(): Borrower, +print(copiesnum:int, category:string):void, +increasedelayedcopies():void, +increasenondelayedcopies():void, +getdelayedcopies():int, +getnondelayedcopies():int Copy: +getcopies():copy, +increasecopies(category:string):void Book: +getcategory():string και τα εξής πεδία ανά κλάση: Borrower: -copiesnum:int Book: -category:string Copy: -returndate:date α) Ο αλγόριθμος έχει ως εξής: Για κάθε Borrower φέρε τη λίστα των Copy που έχει δανειστεί Για κάθε Copy φέρε το Book στο οποίο αναφέρεται καθώς και την κατηγορία στην οποία ανήκει Για κάθε Book αύξησε τον αριθμό των δανεισμένων κατά ένα στη σχετική κατηγορία β) Ο αλγόριθμος έχει ως εξής: Για κάθε Borrower φέρε τη λίστα των Copy που έχει δανειστεί Για κάθε Copy έλεγξε αν το duedate<returndate Αν το duedate<returndate αύξησε τον αριθμό των εκπρόθεσμων, ειδάλλως αύξησε τον αριθμό των εμπρόθεσμων Για τα εκπρόθεσμα: 10
Για τα εμπρόθεσμα: Θα μπορούσε το β) να απεικονιστεί και σε ένα διάγραμμα (με if/else) αλλά χάριν απλότητας δημιουργήσαμε ένα για κάθε περίπτωση. Άσκηση 8 Συσκευή αναπαραγωγής δίσκων DVD Να σχεδιάσετε το διάγραμμα καταστάσεων που περιγράφει τις λειτουργίες της πιο κάτω κονσόλας που βρίσκεται στην μπροστινή μεριά μιας τυπικής συσκευής αναπαραγωγής δίσκων DVD (DVD player). I/O Προσπαθήστε να δώσετε ένα πλήρες διάγραμμα καταστάσεων. Βεβαιωθείτε ότι δεν ξεχάσατε κάτι δοκιμάζοντας να χρησιμοποιήσετε ένα πραγματικό DVD player. 11
Άσκηση 9 Διαχείριση αρχείων Να σχεδιάσετε ένα διάγραμμα κλάσεων για τη διαχείριση αρχείων σε ένα λειτουργικό σύστημα με τις παρακάτω απαιτήσεις: 1. Υπάρχουν τριών ειδών αντικείμενα: Αρχεία (files), συντομεύσεις (shortcuts) και κατάλογοι (directories). 2. Όλα τα αντικείμενα έχουν όνομα. 3. Όλα τα αντικείμενα βρίσκονται σε ένα κατάλογο. 4. Μια συντόμευση μπορεί να αφορά κατάλογο ή αρχείο. 5. Όλα τα αντικείμενα ενός καταλόγου έχουν διαφορετικό όνομα. Υπόδειξη: Θα πρέπει στο διάγραμμα κλάσεων που θα σχεδιάσετε να χρησιμοποιήσετε προσδιοριστές (qualifiers) και περιορισμούς (constraints). 12
Ο προσδιοριστής Object.name είναι μοναδικός (Unique). Δηλαδή για κάθε αντικείμενο του καταλόγου υπάρχει ένα μοναδικό όνομα αντικειμένου (Object.name) Ο περιορισμός έγκειται στο ότι μια συντόμευση αφορά ή {or} ένα αρχείο ή ένα κατάλογο. Άσκηση 10 Λειτουργία παραθύρων σε λειτουργικό σύστημα Να σχεδιάσετε ένα διάγραμμα καταστάσεων που να περιγράφει τον τρόπο λειτουργίας ενός παραθύρου ελαχιστοποίηση (minimization), μεγιστοποίηση (maximization), επαναφορά (restoration) στο λειτουργικό σύστημα Windows (1 ο διάγραμμα). Να εξετάσετε όλες τις ακόλουθες διαφορετικές περιπτώσεις: 1. Τι συμβαίνει όταν το παράθυρο λάβει ένα γεγονός Restore, ενώ βρίσκεται στην κατάσταση Minimized ή Maximized (2 ο διάγραμμα). 2. Τι συμβαίνει όταν το παράθυρο λάβει ένα γεγονός Minimize, ενώ βρίσκεται στην κατάσταση Restored ή Maximized (3 ο διάγραμμα). 3. Τι συμβαίνει όταν το παράθυρο λάβει ένα γεγονός Maximize, ενώ βρίσκεται στην κατάσταση Restored ή Minimized (4 ο διάγραμμα). Επίσης, να λάβετε υπόψη σας τι συμβαίνει όταν το παράθυρο: 4. Είναι στην κατάσταση Restored ή Maximized και γίνεται επανασχεδίαση ( Redraw ) (5 ο διάγραμμα). 5. Όταν γίνει Minimized το παράθυρο, το λειτουργικό σύστημα μειώνει την προτεραιότητα της εφαρμογής με τη χρήση της ενέργειας LowPriority (χαμηλή προτεραιότητα). Η ενέργεια 13
απαιτεί το πέρασμα της παραμέτρου ApplicationID (αναγνωριστικό εφαρμογής) στο λειτουργικό σύστημα (6 ο διάγραμμα). Nα σχεδιάσετε βήμα-βήμα το ζητούμενο διάγραμμα καταστάσεων, προσδιορίζοντας το (ενδιάμεσο) διάγραμμα καταστάσεων που αντιστοιχεί στο κάθε βήμα. Επομένως, θα πρέπει να σχεδιάσετε 6 (ενδιάμεσα) διαγράμματα καταστάσεων και ένα τελικό. 1. Τι συμβαίνει όταν το παράθυρο λάβει ένα γεγονός Restore, ενώ βρίσκεται στην κατάσταση Minimized ή Maximized (2 ο διάγραμμα). 2. Τι συμβαίνει όταν το παράθυρο λάβει ένα γεγονός Minimize, ενώ βρίσκεται στην κατάσταση Restored ή Maximized (3 ο διάγραμμα). 14
3. Τι συμβαίνει όταν το παράθυρο λάβει ένα γεγονός Maximize, ενώ βρίσκεται στην κατάσταση Restored ή Minimized (4 ο διάγραμμα). Επίσης, να λάβετε υπόψη σας τι συμβαίνει όταν το παράθυρο: 4. Είναι στην κατάσταση Restored ή Maximized και γίνεται επανασχεδίαση ( Redraw ) (5 ο διάγραμμα). 15
5. Όταν γίνει Minimized το παράθυρο, το λειτουργικό σύστημα μειώνει την προτεραιότητα της εφαρμογής με τη χρήση της ενέργειας LowPriority (χαμηλή προτεραιότητα). Η ενέργεια απαιτεί το πέρασμα της παραμέτρου ApplicationID (αναγνωριστικό εφαρμογής) στο λειτουργικό σύστημα (6 ο διάγραμμα). 16
Γενικές Υποδείξεις 1) Οι φοιτητές θα πρέπει να χρησιμοποιήσουν υποχρεωτικά το εργαλείο Visual Paradigm. 2) Τα διαγράμματα θα πρέπει να ενσωματωθούν μέσα στο αρχείο Word της πρώτης εργασίας. 3) O κάθε φοιτητής θα πρέπει να στείλει 1 συμπιεσμένο αρχείο ΠΛΗ24_ΕΡΓ1_ΟΝΟΜΑ_ ΦΟΙΤΗΤΗ.zip που θα περιέχει (α) Ένα αρχείο word με όνομα ΠΛΗ24_ΕΡΓ1_ΟΝΟΜΑ_ ΦΟΙΤΗΤΗ.doc και (β) Αρχείο (ή αρχεία) Visual Paradigm. Ασκήσεις Αξιολόγηση Ερώτηση Περιγραφή Ποσοστό Βαθμός 1 Διαχείριση τηλεφωνικού καταλόγου 10 2 Αεροπορικές πτήσεις 10 3 Επεξεργασία παραγγελιών 10 4 Ξυπνητήρι 10 5 Ηλεκτρονικά παιχνίδια περιπέτειας 10 6 Διαδικασία πληρωμής 10 7 Βιβλιοθήκη 10 8 Συσκευή αναπαραγωγής δίσκων DVD 10 9 Διαχείριση αρχείων 10 10 Λειτουργία παραθύρων σε λειτουργικό σύστημα 10 100 17