ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ



Σχετικά έγγραφα
Ενδιαφερόμενοι - Stakeholders. Πελάτης Ταμίας υπάλληλος Διαχειριστής Σύστημα εξουσιοδότησης πληρωμής

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

Κλάσεις και Αντικείµενα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

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

Μοντελοποίηση Συστημάτων. Διαγράμματα Κλάσεων ClassDiagrams

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

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

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

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

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Πίνακας Περιεχομένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

Θ.Ε. ΠΛΗ24 ΑΚΑΔ. ΕΤΟΣ ΠΡΩΤΗ ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships)

Ενδεικτικές λύσεις ασκήσεων

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

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

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

Pylon Entry. Πόροι. Στη διαδικασία αυτή περιγράφεται η Δημιουργία- Μεταβολή-Διαγραφή Αναζήτηση Πόρων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΕΙΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ιανουάριος 2007 Οι απαντήσεις να είναι καθαρογραμμένες με ευδιάκριτους όλους του χαρακτήρες.

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 3: Μοντελοποίηση Περιπτώσεων Χρήσης (1ο Μέρος)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

3 Αλληλεπίδραση Αντικειμένων

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Μοντελοποίηση Πεδίου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Οντοκεντρικός Προγραμματισμός

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

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

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

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

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

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

Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών & Δικτύων,

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

Εισαγωγή στα Πληροφοριακά Συστήματα

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Transcript:

Θ.Ε. ΠΛΗ24 ΑΚΑΔ. ΕΤΟΣ 2008-2009 ΠΡΩΤΗ ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ-ΑΠΑΝΤΗΣΕΙΣ Άσκηση 1 Περιπτώσεις χρήσης (ΠΧ) συστήματος Video Club Ένα σύστημα λογισμικού για τη διαχείριση «Video Club» περιλαμβάνει τους ακόλουθους χρήστες: 1. Ταμίας. 2. Πελάτης. 3. Διαχειριστής. 4. Σύστημα εξουσιοδότησης πληρωμής με χρήση πιστωτικής κάρτας. Το σύστημα αυτό θα πρέπει να υποστηρίζει τις ακόλουθες λειτουργίες: 1. Εισαγωγή στο σύστημα (log in). 2. Ενοικίαση (ταινίες, παιχνίδια). 3. Διαχείριση συνδρομών πελατών. 4. Διαχείριση υλικού (ταινίες, παιχνίδια). 5. Διαχείριση χρηστών. 6. Πληρωμή. 7. Πληρωμή με πιστωτική κάρτα. 8. Πληρωμή με μετρητά. 9. Πληρωμή επιβάρυνσης λόγω καθυστέρησης επιστροφής. Όλοι οι χρήστες πρέπει να κάνουν log in πριν χρησιμοποιήσουν οποιαδήποτε άλλη λειτουργία. Οι πελάτες μπορούν να πληρώνουν ή να διαχειριστούν τη συνδρομή τους μόνοι τους ή με τη βοήθεια του ταμία, αλλά δε μπορούν να ενοικιάσουν ταινίες χωρίς τη βοήθεια του ταμία. Για την πληρωμή μπορεί να χρησιμοποιηθεί και ειδικό υπο-σύστημα διαχείρισης πιστωτικών καρτών. Ο διαχειριστής είναι απλά υπεύθυνος για το υλικό και τους χρήστες. α) Με βάση την ανωτέρω περιγραφή, συμπληρώστε κατάλληλα τον ακόλουθο πίνακα που αναγράφει ποιος (χρήστης) κάνει τι (ποια λειτουργία): Χρήστης Ταμίας Ταμίας Λειτουργία Εισαγωγή στο σύστημα (log in).. Απάντηση Στο σύστημα «Video Club» αντιστοιχεί ο ακόλουθος πίνακας χρηστών-λειτουργιών. Χρήστης Όλοι Tαμίας Ταμίας, Πελάτης, Διαχειριστής Διαχειριστής Διαχειριστής Ταμίας, Πελάτης Στόχος Εισαγωγή στο σύστημα (log in) Ενοικίαση (ταινίες, παιχνίδια) Διαχείριση συνδρομών πελατών Διαχείριση υλικού (ταινίες, παιχνίδια) Διαχείριση χρηστών Πληρωμή ΠΛΗ24 Σχεδιασμός Λογισμικού 1

Ταμίας, Πελάτης Ταμίας, Πελάτης, Υπηρεσία Διαχείρισης Πιστωτικών Καρτών Ταμίας, Πελάτης Πληρωμή με μετρητά Πληρωμή με πιστωτική κάρτα Πληρωμή επιβάρυνσης λόγω καθυστέρησης επιστροφής Πρωτεύοντες χρήστες είναι ο Ταμίας, ο Πελάτης και ο Διαχειριστής, ενώ η Υπηρεσία Διαχείρισης Πιστωτικών Καρτών (Credit Authorization service), που αποτελεί το σύστημα εξουσιοδότησης πληρωμής με χρήση πιστωτικής κάρτας, είναι δευτερεύων χρήστης. β) Σχεδιάστε το διάγραμμα περιπτώσεων χρήσης που αντιστοιχεί στην πιο πάνω περιγραφή, τεκμηριώνοντας σε μια παράγραφο την κάθε σχέση ανάμεσα σε περιπτώσεις χρήσης που χρησιμοποιήσατε. Υπόδειξη: H τεκμηρίωση μπορεί να είναι της μορφής Χρησιμοποίησα σχέση include επειδή. Απάντηση Το ζητούμενο διάγραμμα περιπτώσεων χρήσης είναι το ακόλουθο: Ενοικίαση «extend» Πληρωμή καθυστερήσεων: Κατά την έναρξη της ενοικίασης «πυροδοτείται» ο υπολογισμός των πληρωμών λόγω καθυστερήσεων (μόνο εάν υπάρχουν). Ενοικίαση «include» Διαχείριση συνδρομών πελατών: Κατά την έναρξη της πρώτης ενοικίασης, ο Ταμίας δημιουργεί για τον Πελάτη λογαριασμό συνδρομητή ή ενημερώνει τα στοιχεία του. ΠΛΗ24 Σχεδιασμός Λογισμικού 2

Ενοικίαση «include» Πληρωμή: Στο τέλος της ενοικίασης ο πελάτης καλείται να πληρώσει. Πληρωμή «extend» Πληρωμή με μετρητά: Υπάρχει η δυνατότητα η πληρωμή να γίνει με μετρητά Πληρωμή «extend» Πληρωμή με πιστωτική κάρτα: Υπάρχει η δυνατότητα η πληρωμή να γίνει με πιστωτική κάρτα, η οποία ελέγχεται για εγκυρότητα από το εξωτερικό σύστημα της Υπηρεσίας Διαχείρισης Πιστωτικών Καρτών. Πληρωμή καθυστερήσεων «include» Πληρωμή: Για την πληρωμή των καθυστερήσεων υπάρχουν οι ίδιες δυνατότητες που υπάρχουν για την πληρωμή των ενοικιαζόμενων ταινιών και παιχνιδιών. Ο υπολογισμός και πληρωμή των καθυστερήσεων μπορεί να ζητηθεί από τον Ταμία, αλλά και από τον Πελάτη. γ) Δώστε μια αναλυτική περιγραφή της περίπτωσης χρήσης «Ενοικίαση (ταινίες, παιχνίδια)». Απάντηση Περίπτωση Χρήσης ΠΧ1: Ενοικίαση Κύριος χειριστής: Υπάλληλος Προϋποθέσεις: Έχει πιστοποιηθεί η ταυτότητα του υπαλλήλου Υπάρχει πελάτης που περιμένει στο ταμείο με προϊόντα (ταινίες, παιχνίδια) για ενοικίαση. Μετασυνθήκες: Ένα αντικείμενο ενοικίαση έχει καταχωρηθεί, όπως και της πληρωμής. Η Αποθήκη (αποθέματα) έχει(ουν) ενημερωθεί. Εμπλεκόμενοι και τα Ενδιαφέροντά τους: Υπάλληλος: Επιθυμεί ασφαλή και ταχεία εισαγωγή. Πελάτης: Επιθυμεί να ενοικιάσει ταινίες-παιχνίδια, με άμεση εξυπηρέτηση και ελάχιστη προσπάθεια. Λογιστής: Επιθυμεί ακριβή καταχώρηση των κινήσεων. Διαφήμιση: Επιθυμεί να καταγράψει τις συνήθειες των πελατών. Βασική ροή: 1. Ο Υπάλληλος εισάγει τον Κωδικό του Πελάτη. 2. Γίνεται Include της ΠΧ «Διαχείριση συνδρομών πελατών» 3. Το σύστημα εμφανίζει τα στοιχεία του Πελάτη. 4. Ο Υπάλληλος εισάγει τον κωδικό του προϊόντος. 5. Το σύστημα καταχωρεί την γραμμή ενοικίασης προϊόντος και εμφανίζει την περιγραφή του προϊόντος. (Ο Υπάλληλος επαναλαμβάνει τα βήματα 4-5 μέχρι τέλους) 5. Το σύστημα εμφανίζει την συνολική αξία. 6. Γίνεται Include η ΠΧ «Πληρωμή» 7. Ο Υπάλληλος ζητάει έκδοση απόδειξης της ενοικίασης. 8. Το σύστημα εκδίδει την απόδειξη ενοικίασης. Άσκηση 2 Διάγραμμα κλάσεων συστήματος Ξενοδοχείου Με βάση την ακόλουθη προδιαγραφή της περίπτωσης χρήσης «Κράτηση δωματίου» να σχεδιάσετε το αρχικό διάγραμμα κλάσεων (εννοιολογικό μοντέλο ή μοντέλο περιοχής προβλήματος). Να αιτιολογήσετε τις επιλογές σας για τη χρήση συγκεκριμένων κλάσεων, καθώς και για τις σχέσεις ανάμεσά τους. ΠΛΗ24 Σχεδιασμός Λογισμικού 3

ΠΧ05: Κράτηση Δωματίου Κύριος χρήστης: Υπάλληλος υποδοχής Περιγραφή: Καταχωρείται νέα κράτηση δωματίου Προϋποθέσεις (Preconditions): Ο υπάλληλος θα πρέπει να έχει προηγουμένως ταυτοποιηθεί από το σύστημα (ΠΧ01- Login) Να υπάρχουν διαθέσιμα δωμάτια για την αιτούμενη χρονική περίοδο Μετα-συνθήκες (Postconditions): Δημιουργείται και καταχωρείται μία νέα κράτηση ενός δωματίου Καταχωρείται επίσης η πληρωμή προκαταβολής. Εκδίδεται απόδειξη της κράτησης Βασική ροή 1. Ο υποψήφιος πελάτης έρχεται στην υποδοχή και ζητάει να κάνει μία κράτηση. 2. Ο υπάλληλος πατάει το πλήκτρο «Διαθεσιμότητα» στο κεντρικό μενού και εμφανίζεται η φόρμα UI03-Διαθεσιμότητα 3. Ο υπάλληλος ρωτάει τον πελάτη για το είδος δωματίου (2κλινο, 3κλινο, κλπ) και για την χρονική περίοδο κράτησης που επιθυμεί και εισάγει στην φόρμα τα στοιχεία που του δίνει ο πελάτης 4. Το σύστημα αναζητά δωμάτια με τα ζητούμενα στοιχεία και εμφανίζει όλα τα διαθέσιμα δωμάτια σε πίνακα της ίδιας φόρμας, όπου εμφανίζεται επίσης και η ημερήσια τιμή ενοικίασης [Εναλλακτική ροή Α: δεν υπάρχουν διαθέσιμα δωμάτια της κατηγορίας για την δεδομένη χρονική περίοδο] 5. Ο πελάτης συμφωνεί με ένα από τα διαθέσιμα δωμάτια. 6. Ο υπάλληλος επιλέγει το συγκεκριμένο δωμάτιο και πατάει το πλήκτρο «Κράτηση» 7. Το σύστημα εμφανίζει την φόρμα κράτησης UI07-Κρατήσεις 8. Ο υπάλληλος ενημερώνει τον πελάτη για το συνολικό κόστος της κράτησης και το ποσό της προκαταβολής 9. Ο πελάτης συμφωνεί [Εναλλακτική ροή Β: Ο πελάτης διαφωνεί]. 10. Ο υπάλληλος του ζητάει τον αριθμό ταυτότητας τον οποίο και εισάγει 11. Το σύστημα εμφανίζει τα βασικά στοιχεία του πελάτη [Εναλλακτική ροή Γ: Ο πελάτης δεν υπάρχει στο σύστημα]. 12. Ο πελάτης πληρώνει [Εναλλακτική ροή Δ: Πληρωμή] 13. Το σύστημα εκδίδει μία βεβαίωση συνολικά της κράτησης. 14. Ο πελάτης παίρνει την βεβαίωση και αποχωρεί 15. Η κράτηση έχει ολοκληρωθεί και καταχωρηθεί στο σύστημα. ΠΛΗ24 Σχεδιασμός Λογισμικού 4

Εναλλακτικές ροές Εναλλακτική ροή Α: δεν υπάρχουν διαθέσιμα δωμάτια της κατηγορίας A.1 Το σύστημα ενημερώνει τον υπάλληλο ότι δεν υπάρχουν διαθέσιμα δωμάτια με το μήνυμα «Δεν βρέθηκε διαθέσιμο δωμάτιο». A.2 Ο υπάλληλος ακυρώνει τη διαδικασία κράτησης. A.3 Τέλος περίπτωσης χρήσης. Εναλλακτική ροή Β: Ο πελάτης διαφωνεί Β.1 Ο υπάλληλος ακυρώνει την κράτηση Β.2 Το σύστημα διαγράφει την τρέχουσα κράτηση Εναλλακτική ροή Γ: Ο πελάτης δεν υπάρχει στο σύστημα Γ.1 Το σύστημα εμφανίζει μήνυμα ότι ο πελάτης δεν είναι καταχωρημένος στη βάση. Γ.2 Καλείται «include» η ΠΧ02-Εισαγωγή-Πελάτη. Εναλλακτική ροή Δ: Πληρωμή (μετρητοίς ή με πιστωτική κάρτα) Δ.1 Ο Πελάτης πληρώνει μετρητοίς. Το σύστημα επιστρέφει τα ρέστα από την διαφορά της αξίας κράτησης. Δ.2 Ο Πελάτης πληρώνει με πιστωτική κάρτα. Καλείται «include» η ΠΧ14-Πληρωμή- Με-Πιστωτική-Κάρτα. Απάντηση Για να προσδιορίσουμε τις εννοιολογικές κλάσεις, διατρέχουμε το κείμενο της ΠΧ στο βασικό σενάριο και στα εναλλακτικά σενάρια, σημειώνοντας τα ουσιαστικά (Έννοια, Χαρακτηριστικό). Θεωρούμε ένα ουσιαστικό ως Έννοια, με γνώμονα τρία κριτήρια - εάν έχει: 1. Ταυτότητα. 2. Κατάσταση (περιέχει περισσότερα από ένα χαρακτηριστικά με τιμή). 3. Συμπεριφορά. Με βάση τα ανωτέρω κριτήρια, δίνοντας περισσότερο έμφαση στο κριτήριο της συμπεριφοράς, καταλήγουμε στις ακόλουθες έννοιες: Πελάτης, κάνει κρατήσεις. Κράτηση, αποτελεί κεντρική έννοια της περιοχής του προβλήματος. Υπάλληλος, κάνει κρατήσεις και πληρωμές. Δωμάτιο, αποτελεί κεντρική έννοια της περιοχής του προβλήματος. Πληρωμή, έννοια που συνοδεύει μία κράτηση. Πληρωμή μετρητοίς, έννοια που συνοδεύει μία κράτηση. ΠΛΗ24 Σχεδιασμός Λογισμικού 5

Πληρωμή με πιστωτική κάρτα, έννοια που συνοδεύει μία κράτηση. Βεβαίωση, έννοια που αποτελεί αποδεικτικό στοιχείο μιας κράτησης. Επομένως, το ζητούμενο αρχικό διάγραμμα κλάσεων είναι το ακόλουθο: ΠΛΗ24 Σχεδιασμός Λογισμικού 6

Αιτιολόγηση των σχέσεων μεταξύ των Εννοιών: Πελάτης, ζητάει να κάνει κράτηση από τον Υπάλληλο. Υπάλληλος, αναζητά διαθέσιμα Δωμάτια. Δωμάτιο, συνοδεύεται από το Ημερολόγιό του, ώστε να ελέγχεται η διαθεσιμότητά του. Η σχέση αυτή ορίζεται ως σύνθεση (composition), επειδή ένα Ημερολόγιο θεωρούμε ότι ανήκει αποκλειστικά στο Δωμάτιό του και όποια αναφορά σ αυτό γίνεται μέσω του Δωματίου. Αν το Δωμάτιο «καταστραφεί» (αλλάξει χρήση, γίνει π.χ. Αποθήκη), τότε και το Ημερολόγιο θα πρέπει να «καταστραφεί», γιατί δεν έχει λόγο ύπαρξης. Υπάλληλος, κάνει Κρατήσεις. Πελάτης, ζητάει/κάνει Κρατήσεις. Δωμάτιο, δεσμεύεται από Κράτηση, μετά από αίτηση ενός Πελάτη. Κράτηση, διεκπεραιώνεται με μια Πληρωμή. Πληρωμή, συνοδεύεται από Βεβαίωση. Πληρωμή, μπορεί να «είναι του είδους» (ειδίκευση), Μετρητοίς ή Με πιστωτική κάρτα. Οι κλάσεις ΠληρωμήΜετρητοίς και ΠληρωμήΠιστωτική είναι υποκλάσεις της κλάσης Πληρωμή διότι ισχύουν τα δύο κριτήρια της κληρονομικότητας: (α) «είναι είδος της» και (β) Κληρονομεί το 100% των μελών (χαρακτηριστικά, μεθόδους, συσχτίσεις) της υπερκλάσης Πληρωμή. Πληρωμή με πιστωτική κάρτα, γίνεται μόνο με τη χρέωση του λογαριασμού της Πιστωτικής κάρτας. Άσκηση 3 Διάγραμμα ακολουθίας συστήματος Ξενοδοχείου Να σχεδιάσετε το διάγραμμα ακολουθίας για τη βασική ροή της ανωτέρω περίπτωσης χρήσης «Κράτηση Δωματίου». Δώστε ιδιαίτερη προσοχή ώστε το διάγραμμα ακολουθίας να είναι συνεπές ως προς την περιγραφή της περίπτωσης χρήσης. Εάν αυτό δεν είναι εφικτό, τότε να διορθώσετε ως απαιτείται την περίπτωση χρήσης. Απάντηση Εξετάζουμε τη βασική ροή της περίπτωσης χρήσης «Κράτηση Δωματίου»: ΠΧ05: Κράτηση Δωματίου Βασική ροή 1. Ο υποψήφιος πελάτης έρχεται στην υποδοχή και ζητάει να κάνει μία κράτηση. 2. Ο υπάλληλος πατάει το πλήκτρο «Διαθεσιμότητα» στο κεντρικό μενού και εμφανίζεται η φόρμα UI03-Διαθεσιμότητα Υλοποιείται από τα σημεία 1 και 2 του Διαγράμματις Ακολουθίας (Δ.Α.), όπου το Μενού δημιουργεί το αντικείμενο της φόρμας UI03-Διαθεσιμότητα 3. Ο υπάλληλος ρωτάει τον πελάτη για το είδος δωματίου (2κλινο, 3κλινο, κλπ) και για την χρονική περίοδο κράτησης που επιθυμεί και εισάγει στην φόρμα τα στοιχεία που του δίνει ο πελάτης Υλοποιείται από τα σημεία 3-5 του Δ.Α. ΠΛΗ24 Σχεδιασμός Λογισμικού 7

4. Το σύστημα αναζητά δωμάτια με τα ζητούμενα στοιχεία και εμφανίζει όλα τα διαθέσιμα δωμάτια σε πίνακα της ίδιας φόρμας, όπου εμφανίζεται επίσης και η ημερήσια τιμή ενοικίασης Η μέθοδος αναζήτηση() εξετάζει την διαθεσιμότητα του κάθε Δωματίου (*επανάληψη) και επιστρέφει κατάλογο με τα διαθέσιμα δωμάτια 5. Ο πελάτης συμφωνεί με ένα από τα διαθέσιμα δωμάτια. 6. Ο υπάλληλος επιλέγει το συγκεκριμένο δωμάτιο και πατάει το πλήκτρο «Κράτηση» Η μέθοδος 9.κράτησηΔωματίου(Δωμάτιο), καλεί στο Δωμάτιο την 10.κράτηση() το οποίο δημιουργεί ένα αντικείμενο Κράτησης και το μεταβιβάζει στο αντικείμενο Ημερολόγιο 12.ενημέρωση() Η μέθοδος 13.δώσεΚόστος() επιστρέφει το υπολογισθέν κόστος και την προκαταβολή, και δημιουργεί επίσης ένα αντικ. της φόρμας UI07-Κρατήσεις 7. Το σύστημα εμφανίζει την φόρμα κράτησης UI07-Κρατήσεις 8. Ο υπάλληλος ενημερώνει τον πελάτη για το συνολικό κόστος της κράτησης και το ποσό της προκαταβολής 9. Ο πελάτης συμφωνεί [Εναλλακτική ροή Β: Ο πελάτης διαφωνεί]. 10. Ο υπάλληλος του ζητάει τον αριθμό ταυτότητας τον οποίο και εισάγει Η μέθοδος 16.εισαγωγή( ) εισάγει στην φόρμα, και αυτή στο αντικείμενο Κράτηση, τα στοιχεία του Πελάτη, τον οποίον ανακτά και τον προσθέτει στην Κράτηση, 11. Το σύστημα εμφανίζει τα βασικά στοιχεία του πελάτη [Εναλλακτική ροή Γ: Ο πελάτης δεν υπάρχει στο σύστημα]. εμφανίζοντας στην φόρμα και τα στοιχεία του 12. Ο πελάτης πληρώνει [Εναλλακτική ροή Δ: Πληρωμή] Η μέθοδος 21.κάνεΠληρωμή(ποσό), της φόρμας, ενημερώνει την Κράτηση, η οποία δημιουργεί το αντικείμενο Πληρωμή 13. Το σύστημα εκδίδει μία βεβαίωση συνολικά της κράτησης. Η Πληρωμή δημιουργεί το αντικείμενο Βεβαίωση 14. Ο πελάτης παίρνει την βεβαίωση και αποχωρεί 15. Η κράτηση έχει ολοκληρωθεί και καταχωρηθεί στο σύστημα. Επομένως, το ζητούμενο διάγραμμα ακολουθίας είναι το ακόλουθο: ΠΛΗ24 Σχεδιασμός Λογισμικού 8

Άσκηση 4 Διάγραμμα κλάσεων για εταιρεία λεωφορείων Δίνονται οι ακόλουθες απαιτήσεις: Μια εταιρεία λεωφορείων πραγματοποιεί έναν αριθμό από διαδρομές σε μια ευρεία γεωγραφική περιοχή, χρησιμοποιώντας λεωφορεία κανονικού μεγέθους (full-sized buses) και λεωφορεία μικρού μεγέθους (mini-buses). Η οργάνωση του χρονοδιαγράμματος αναχωρήσεων και αφίξεων γίνεται σε εβδομαδιαία βάση. Πολλά ταξίδια πραγματοποιούνται σε κάθε διαδρομή κατά τη διάρκεια μιας ΠΛΗ24 Σχεδιασμός Λογισμικού 9

εβδομάδας και για καθένα από τα ταξίδια αυτά απαιτείται ένα λεωφορείο. Ορισμένα από τα ταξίδια επιδοτούνται από μία ή περισσότερες τοπικές αρχές των περιοχών από τις οποίες διέρχονται, καθώς διαφορετικά δεν θα ήταν οικονομικά βιώσιμη η πραγματοποίησή τους. Στα επιδοτούμενα ταξίδια χρησιμοποιούνται πάντοτε λεωφορεία κανονικού μεγέθους. Να σχεδιάσετε ένα διάγραμμα κλάσεων που θα απεικονίζει την κατανομή λεωφορείων σε ταξίδια και θα περιλαμβάνει (τουλάχιστον) κλάσεις, σχέσεις ανάμεσα σε κλάσεις και προσδιοριστές πολλαπλότητας. Επεξηγήστε τις επιλογές σας. Απάντηση Για τη σχεδίαση του ζητούμενου διαγράμματος κλάσεων, από το κείμενο των απαιτήσεων που δίνεται στην εκφώνηση της άσκησης, χρησιμοποιείται αυτό που σχετίζεται με την κατανομή των λεωφορείων σε ταξίδια. Πιο συγκεκριμένα, από την πρώτη πρόταση των απαιτήσεων είναι φανερό (εξετάζοντας τα ουσιαστικά της πρότασης) ότι θα χρησιμοποιηθούν δύο κλάσεις: Μία για το λεωφορείο ( Λεωφορείο ) και μία για τη διαδρομή ( Διαδρομή ). Στην ίδια πρόταση αναφέρεται ότι γίνεται χρήση δύο κατηγοριών λεωφορείων, δηλαδή λεωφορείων κανονικού μεγέθους (full-sized buses) και λεωφορείων μικρού μεγέθους (mini-buses). Επομένως, θα χρησιμοποιηθούν δύο ακόμη κλάσεις: Μία για τα λεωφορεία κανονικού μεγέθους ( Λεωφορείο Κανονικού Μεγέθους ) και μία για τα λεωφορεία μικρού μεγέθους ( Λεωφορείο Μικρού Μεγέθους ). Οι κλάσεις αυτές θα συνδέονται με σχέση κληρονομικότητας με την κλάση Λεωφορείο. Σε αυτή την ιεραρχία κληρονομικότητας, η κλάση Λεωφορείο είναι η υπερκλάση (για το λόγο αυτό το τριγωνικό βέλος που χρησιμοποιείται για την απεικόνιση της κληρονομικότητας δείχνει προς αυτή), ενώ οι κλάσεις Λεωφορείο Κανονικού Μεγέθους και Λεωφορείο Μικρού Μεγέθους είναι υποκλάσεις. Η δεύτερη πρόταση των απαιτήσεων δίνει πληροφορίες για την οργάνωση του χρονοδιαγράμματος αναχωρήσεων και αφίξεων και επομένως δε σχετίζεται άμεσα με την κατανομή των λεωφορείων σε ταξίδια. Για το λόγο αυτό, η συγκεκριμένη πρόταση δε λαμβάνεται υπόψη στη σχεδίαση του ζητούμενου διαγράμματος κλάσεων. Εξετάζοντας την τρίτη πρόταση των απαιτήσεων προκύπτει η ανάγκη χρήσης μιας κλάσης για την απεικόνιση των ταξιδιών ( Ταξίδι ). Από τη στιγμή που πραγματοποιούνται πολλά ταξίδια σε κάθε διαδρομή, μια διαδρομή αποτελείται από πολλά ταξίδια. Επομένως, ανάμεσα στην κλάση Διαδρομή και στην κλάση Ταξίδι υπάρχει μια σχέση σύνθεσης (composition), στα πλαίσια της οποίας η κλάση Διαδρομή είναι μια σύνθετη κλάση (για το λόγο αυτό το σύμβολο του διαμαντιού πρέπει να είναι προσαρτημένο στην κλάση αυτή), η οποία περικλείει την απλούστερη (συνιστώσα) κλάση Ταξίδι. Επισημαίνεται ότι δεν χρησιμοποιείται σχέση συναρμολόγησης (aggregation) γιατί θεωρείται ότι η απλούστερη κλάση έχει διάρκεια ζωής που συμπίπτει με αυτή της σύνθετης κλάσης (καθώς ένα ταξίδι γίνεται πάντοτε στα πλαίσια μιας διαδρομής). Στη συνέχεια της τρίτης πρότασης των απαιτήσεων αναφέρεται ότι για καθένα από τα ταξίδια απαιτείται ένα λεωφορείο. Επομένως, ανάμεσα στις κλάσεις Λεωφορείο και Ταξίδι πρέπει να υπάρχει μια (απλή) συσχέτιση. Στην τέταρτη πρόταση των απαιτήσεων αναφέρεται ότι ορισμένα από τα ταξίδια επιδοτούνται. Με τον τρόπο αυτό υποδηλώνεται ότι υπάρχουν δύο κατηγορίες ταξιδιών τα επιδοτούμενα και τα μη επιδοτούμενα. Επομένως, θα πρέπει να χρησιμοποιηθούν για την απεικόνισή τους στο διάγραμμα κλάσεων δύο αντίστοιχες κλάσεις ( Επιδοτούμενο Ταξίδι και Μη Επιδοτούμενο Ταξίδι ), οι οποίες θα συνδέονται με την κλάση Ταξίδι με σχέση κληρονομικότητας. Σε αυτή την ιεραρχία ΠΛΗ24 Σχεδιασμός Λογισμικού 10

κληρονομικότητας, η κλάση Ταξίδι είναι η υπερκλάση (για το λόγο αυτό το τριγωνικό βέλος που χρησιμοποιείται για την απεικόνιση της κληρονομικότητας δείχνει προς αυτή), ενώ οι κλάσεις Επιδοτούμενο Ταξίδι και Μη Επιδοτούμενο Ταξίδι είναι υποκλάσεις. Στη συνέχεια της τέταρτης πρότασης των απαιτήσεων αναφέρεται ότι τα επιδοτούμενα ταξίδια επιδοτούνται από μία ή περισσότερες τοπικές αρχές των περιοχών από τις οποίες διέρχονται. Επομένως, είναι αναγκαία η χρήση μιας κλάσης για την απεικόνιση των τοπικών αρχών ( Τοπική Αρχή ), η οποία θα πρέπει να συνδέεται με την κλάση Επιδοτούμενο Ταξίδι με την απλή συσχέτιση επιδοτεί. Στα πλαίσια αυτής της συσχέτισης, η πολλαπλότητα από την πλευρά της κλάσης Τοπική Αρχή είναι 1..*, γιατί ένα επιδοτούμενο ταξίδι μπορεί να επιδοτείται από μία ή περισσότερες τοπικές αρχές, ενώ η πολλαπλότητα από την πλευρά της κλάσης Επιδοτούμενο Ταξίδι είναι 0..* (ή απλά *), γιατί μία τοπική αρχή είναι δυνατό να επιδοτεί κανένα, ένα ή περισσότερα ταξίδια. Σύμφωνα με την τελευταία πρόταση των απαιτήσεων στα επιδοτούμενα ταξίδια χρησιμοποιούνται πάντοτε λεωφορεία κανονικού μεγέθους. Επομένως, η κλάση Λεωφορείο Κανονικού Μεγέθους θα πρέπει να συνδέται με την κλάση Επιδοτούμενο Ταξίδι με τη συσχέτιση πραγματοποιεί. Στα πλαίσια αυτής της συσχέτισης, η πολλαπλότητα από την πλευρά της κλάσης Λεωφορείο Κανονικού Μεγέθους είναι 1, γιατί ένα επιδοτούμενο ταξίδι πραγματοποιείται από ένα λεωφορείο κανονικού μεγέθους, ενώ η πολλαπλότητα από την πλευρά της κλάσης Επιδοτούμενο Ταξίδι είναι 1..*, γιατί ένα λεωφορείο κανονικού μεγέθους μπορεί να πραγματοποιεί ένα ή περισσότερα επιδοτούμενα ταξίδια. Η τελευταία πρόταση των απαιτήσεων υποδηλώνει ότι για τα μη επιδοτούμενα ταξίδια είναι δυνατό να χρησιμοποιηθεί ένα οποιοδήποτε λεωφορείο (είτε κανονικού μεγέθους, είτε μικρού μεγέθους). Επομένως, η κλάση Λεωφορείο θα πρέπει να συνδέεται με την κλάση Μη Επιδοτούμενο Ταξίδι με τη συσχέτιση διεκπεραιώνει. Στα πλαίσια αυτής της συσχέτισης, η πολλαπλότητα από την πλευρά της κλάσης Λεωφορείο είναι 1, γιατί ένα μη επιδοτούμενο ταξίδι πραγματοποιείται από ένα μόνο λεωφορείο κανονικού μεγέθους, ενώ η πολλαπλότητα από την πλευρά της κλάσης Μη Επιδοτούμενο Ταξίδι είναι 1..*, γιατί ένα λεωφορείο μπορεί να διεκπεραιώνει ένα ή περισσότερα επιδοτούμενα ταξίδια. Επισημαίνεται ότι η χρήση των συσχετίσεων πραγματοποιεί και διεκπεραιώνει καθιστά περιττή τη χρήση συσχέτισης ανάμεσα στις κλάσεις Λεωφορείο και Ταξίδι. Επομένως, για την απεικόνιση της ανάθεσης λεωφορείων σε ταξίδια μπορεί να χρησιμοποιηθεί το ακόλουθο διάγραμμα κλάσεων: ΠΛΗ24 Σχεδιασμός Λογισμικού 11

Λεωφορείο 1 διεκπεραιώνει Διαδρομή Λεωφορείο Κανονικού Μεγέθους 1 Λεωφορείο Μικρού Μεγέθους 1..* Ταξίδι Τοπική Αρχή πραγματοποιεί 1..* επιδοτεί 1..* 0..* Επιδοτούμενο Ταξίδι Μη Επιδοτούμενο Ταξίδι 1..* Άσκηση 5 Διάγραμμα συνεργασίας για κινητό τηλέφωνο Δίνεται το ακόλουθο διάγραμμα συνεργασίας σχετικά με τον τρόπο λειτουργίας ενός κινητού τηλεφώνου κυψελοειδούς τεχνολογίας: ΠΛΗ24 Σχεδιασμός Λογισμικού 12

α) Να σχεδιάσετε το αντίστοιχο διάγραμμα ακολουθίας επεξηγώντας συνοπτικά τα βασικά συστατικά του μέρη. β) Τι συμπεράσματα εξάγετε αν συγκρίνετε τα δύο διαγράμματα; Απάντηση Το διάγραμμα ακολουθίας που αντιστοιχεί στο διάγραμμα συνεργασίας που δίνεται στην εκφώνηση της άσκησης αποτελείται από τα ακόλουθα δύο τμήματα: ΠΛΗ24 Σχεδιασμός Λογισμικού 13

Το πρώτο τμήμα του πιο πάνω διαγράμματος ακολουθίας απεικονίζει τις ενέργειες που πραγματοποιούνται όταν ο χρήστης ενός κινητού τηλεφώνου πατήσει στο πληκτρολόγιο της συσκευής του ένα κουμπί (button) που αντιστοιχεί σε αριθμό / ψηφίο (digit). Το δεύτερο τμήμα του πιο πάνω διαγράμματος ακολουθίας απεικονίζει τις ενέργειες που πραγματοποιούνται όταν ο χρήστης του κινητού τηλεφώνου πατήσει στο πληκτρολόγιο της συσκευής του το κουμπί (button) που χρησιμοποιείται για την πραγματοποίηση μιας κλήσης (κουμπί send). Tα δύο αυτά τμήματα μπορεί να θεωρηθούν ως ξεχωριστά διαγράμματα ακολουθίας. Η χρήση τους είναι αναγκαία, καθώς το διάγραμμα συνεργασίας απεικονίζει δύο διαφορετικές ροές / ακολουθίες γεγονότων / ενεργειών. Όπως θα παρατηρήσατε στο μήνυμα 1 του αρχικού διαγράμματος υπάρχει ένα *, που υποδηλώνει την επαναληπτική του εκτέλεση. Για το λόγο αυτό στο αντίστοιχο διάγραμμα ακολουθίας υπάρχει ο επαναληπτικός βρόγχος, ο οποίος αναπαριστάται με ορθογώνιο παραλληλόγραμμο ενώ επιγράφεται με «for each digit». Στο πάνω μέρος και των δύο διαγραμμάτων ακολουθίας απεικονίζονται τα αντικείμενα που χρησιμοποιούνται μέσα σε παραλληλόγραμμα. Όπως συμβαίνει και στα διαγράμματα συνεργασίας, το όνομα των αντικειμένων είναι υπογραμμισμένο, ώστε να διαφοροποιούνται από τις κλάσεις. Επίσης, το όνομα του αντικειμένου διαχωρίζεται από το όνομα της κλάσης με το σύμβολο :. Ορισμένα αντικείμενα (όπως το :Dialer ) δεν έχουν κάποιο συγκεκριμένο όνομα (το :Dialer είναι απλά ένα ανώνυμο αντικείμενο τύπου Dialer ) και για το λόγο αυτό το σύμβολο : προηγείται του ονόματος της κλάσης, χωρίς να υπάρχει πριν από αυτό κάποιο όνομα αντικειμένου. Κάτω από το παραλληλόγραμμο που απεικονίζει κάθε αντικείμενο υπάρχει μια διακεκομμένη γραμμή που απεικονίζει τη γραμμή ζωής (lifeline) του κάθε αντικειμένου. Οι γραμμές αυτές ορίζουν τον άξονα του χρόνου στο διάγραμμα, στο οποίο θεωρείται ότι ο χρόνος αυξάνεται προς τα κάτω. Οι γραμμές ζωής των αντικειμένων απεικονίζουν το χρονικό διάστημα ύπαρξης των αντίστοιχων αντικειμένων. Στα πιο πάνω διαγράμματα ακολουθίας οι γραμμές ζωής των αντικειμένων εκτείνονται από το πάνω μέρος των διαγραμμάτων μέχρι το κάτω μέρος τους. Αυτό φανερώνει ότι τα αντικείμενα που απεικονίζονται στα συγκεκριμένα διαγράμματα ακολουθίας έχουν δημιουργηθεί πριν από την έναρξη του χρόνου που απεικονίζεται στα διαγράμματα και η ύπαρξη τους συνεχίζεται και μετά το τέλος του χρόνου που απεικονίζεται στα διαγράμματα. Οι γραμμές με τα βέλη ανάμεσα στις γραμμές ζωής των αντικειμένων απεικονίζουν μηνύματα που ανταλλάσσονται ανάμεσα στα αντικείμενα. Η αρίθμηση των μηνυμάτων δεν είναι αναγκαία, καθώς ο χρόνος αυξάνεται προς τα κάτω. Τα λευκά παραλληλόγραμμα στα οποία σταματούν τα βέλη των μηνυμάτων ονομάζονται ενεργοποιήσεις (activations) και φανερώνουν τη χρονική διάρκεια εκτέλεσης μιας μεθόδου ως απόκριση της λήψης ενός μηνύματος. Οι μέθοδοι υπονοείται ότι επιστρέφουν στο αντικείμενο που τις κάλεσε στο τέλος της ενεργοποίησης. Αυτού του είδους οι επιστροφές είναι δυνατό να απεικονιστούν με μια διακεκομμένη γραμμή με βέλος χωρίς ετικέτα, η οποία ξεκινάει από το κάτω μέρος μιας ενεργοποίησης και επιστρέφει στη γραμμή ζωής του αντικειμένου που κάλεσε την αρχική μέθοδο. Τέλος, επισημαίνεται ότι το μεγάλο παραλληλόγραμμο που περικλείει τα μηνύματα στο πρώτο διάγραμμα ακολουθίας ορίζει ένα βρόχο που εκτελείται επαναληπτικά. Η συνθήκη που προσδιορίζει τη διάρκεια της επανάληψης απεικονίζεται στο κάτω μέρος του παραλληλόγραμμου. β) Από τη σύγκριση του διαγράμματος συνεργασίας της εκφώνησης της άσκησης και του σύνθετου διαγράμματος ακολουθίας της απάντησης στο προηγούμενο ερώτημα προκύπτει ότι και τα δύο διαγράμματα απεικονίζουν ακριβώς την ίδια πληροφορία, χρησιμοποιώντας σημαντικά διαφορετικούς τρόπους παράστασης. Το διάγραμμα ακολουθίας χρειάζεται περισσότερο χώρο από το ΠΛΗ24 Σχεδιασμός Λογισμικού 14

διάγραμμα συνεργασίας, αλλά είναι πιο εύκολη η κατανόηση του αλγόριθμου (της λογικής) που μοντελοποιεί. Από την άλλη πλευρά, το διάγραμμα συνεργασίας είναι περισσότερο πυκνό στην απεικόνιση της συνεργασίας των αντικειμένων, αλλά απαιτεί μεγαλύτερη προσπάθεια η κατανόηση του αλγόριθμου (της λογικής) που μοντελοποιεί. Άσκηση 6 Εφαρμογή Java με αυτοκίνητο Δίδεται το ακόλουθο διάγραμμα κλάσεων: α) Υλοποιήστε σε Java το περίγραμμα των κλάσεων του διαγράμματος. Σε κάθε περίγραμμα θα πρέπει να εμφανίζονται όλα τα χαρακτηριστικά και οι αντίστοιχες μέθοδοι. β) Γράψτε τον κώδικα του κατασκευαστή της κλάσης Car που παίρνει δύο παραμέτρους και πέρα από την αρχικοποίηση των πεδίων του χρώματος και του μοντέλου, δημιουργεί ένα κινητήρα ιπποδύναμης 120 ίππων και 4 ρόδες αλουμινίου 16 ιντσών. Απάντηση ΠΛΗ24 Σχεδιασμός Λογισμικού 15

α) Πρέπει να δοθεί προσοχή στο ότι οι σχέσεις ανάμεσα στις κλάσεις ορίζουν χαρακτηριστικά των κλάσεων, τα οποία είναι αναγκαία για την υλοποίηση των σχέσεων. Έτσι, θα πρέπει να δημιουργηθεί από ένα χαρακτηριστικό για κάθε σχέση, με όνομα μεταβλητής το όνομα της σχέσης. import java.awt.color; public class Car private Color colour; private String model; private Engine eng; private Wheel[] wheels; public Car () public Car (Color c, String m) public Color getcolour () public void setcolour (Color val) public String getmodel () public void setmodel (String val) public class Engine private float power; public Engine () public float getpower () public void setpower (float val) public class Wheel private int size; private boolean alloy; ΠΛΗ24 Σχεδιασμός Λογισμικού 16

public Wheel (int s, boolean isalloy) public boolean getalloy () public void setalloy (boolean val) public int getsize () public void setsize (int val) β) Προσέξτε ότι η δημιουργία πίνακα δεν σημαίνει και δημιουργία των αντίστοιχων αντικειμένων. Ο ζητούμενος δημιουργός είναι ο ακόλουθος: public Car (Color c, String m) colour=c; model = m; eng = new Engine(); eng.setpower(120); wheels = new Wheel[4]; for (int i=0;i<wheels.length;i++) wheels[i] = new Wheel(16, true); Άσκηση 7 Εφαρμογή java με μηχανικό παιχνίδι Έστω η παρακάτω κλάση που μοντελοποιεί ένα παιχνίδι - σκύλο. public class Dog protected String name; public Dog( ) public String sayname( ) public String moveforward( ) public String movebackward( ) public String moveleft( ) public String moveright( )...... Ο σκύλος μπορεί να λέει το όνομά του, όταν το παιδί πατά στο χειριστήριο το αντίστοιχο πλήκτρο. Επίσης μπορεί να κινείται προς τέσσερεις κατευθύνσεις: Μπροστά (Μ), Πίσω (Π), Αριστερά (Α), Δεξιά (Δ). Η κίνηση προς την κατεύθυνση αντιστοιχεί στις μεθόδους moveforward, movebackward, κ.λπ. Επιπλέον, η διάρκεια πατήματος του πλήκτρου κατεύθυνσης αντιστοιχεί στην απόσταση που θα ΠΛΗ24 Σχεδιασμός Λογισμικού 17

πρέπει να διανυθεί σε μέτρα. Το πάτημα του πλήκτρου στο χειριστήριο αντιστοιχεί στην κλήση της αντίστοιχης μεθόδου. Α) Συμπληρώστε/τροποποιήστε την κλάση Dog. B) Φτιάξτε την κλάση Μain και κινήστε το σκύλο Α-10, Π-20, Α-15, Μ-20, Δ-10, Δ-11. Γ) Υπολογίστε τη συνολική απόσταση που έχει διανύσει ο σκύλος. Δ) Κάντε το σκύλο να πει το όνομά του (τυπώστε το όνομά του στην οθόνη). Σημείωση: Α-10 σημαίνει αριστερά 10 μέτρα. Υπόδειξη: Ο υπολογισμός της απόστασης που έχει διανύσει ο σκύλος θα γίνει με την υλοποίηση σχετικής μεθόδου. Απάντηση package dog; /** * * @author fitsilis */ public class Main /** * @param args the command line arguments */ public static void main(string[] args) Dog bulldog; bulldog = new Dog("bobo"); System.out.println(bulldog.moveLeft(10)); System.out.println(bulldog.moveBackward(20)); System.out.println(bulldog.moveLeft(15)); System.out.println(bulldog.moveForward(20)); System.out.println(bulldog.moveRight(10)); System.out.println(bulldog.moveRight(11)); System.out.println("H απόσταση που διανύθηκε είναι: "+bulldog.getdistancecovered()); System.out.println(bulldog.sayName()); package dog; /** ΠΛΗ24 Σχεδιασμός Λογισμικού 18

* * @author fitsilis */ public class Dog protected String name; protected int distancecovered = 0; public Dog(String name) this.name = name; public String sayname() return("το όνομά μου είναι: "+name); public String moveforward(int distance) calculatedistancecovered(distance); return("κινούμαι εμπρός: "+distance); public String movebackward(int distance) calculatedistancecovered(distance); return("κινούμαι πίσω: "+distance); public String moveleft(int distance) calculatedistancecovered(distance); return("κινούμαι αριστερά: "+distance); public String moveright(int distance) calculatedistancecovered(distance); return("κινούμαι δεξιά: "+distance); private void calculatedistancecovered(int distance) distancecovered = distancecovered+distance; ΠΛΗ24 Σχεδιασμός Λογισμικού 19

public int getdistancecovered() return distancecovered; Άσκηση 8 Εφαρμογή Java με Fast Food Είστε πελάτης σε ένα fast food όπου μπορείτε να παραγγείλετε hamburger και pizza. Φτιάξτε μια εφαρμογή στη οποία: 1) Θα ορίζεται τις κλάσεις hamburger και pizza μαζί με τις απαραίτητες μεθόδους: a. Το hamburger κοστίζει 1.5 ΕΥΡΟ. i. Σε περίπτωση που ο πελάτης ζητήσει να έχει και τυρί, τότε η τιμή του είναι 20% μεγαλύτερη. ii. Επίσης υπάρχει και σε μεγάλο μέγεθος. Το μεγάλο μέγεθος κοστίζει 20% περισσότερο. b. Αντίστοιχα, η πίτσα διατίθεται σε τρία μεγέθη, ατομική, οικογενειακή και γίγας με τιμές 5, 7.5 και 10 ΕΥΡΟ αντίστοιχα. 2) Την κλάση Μain η οποία a. Θα ζητά από τον πελάτη την παραγγελία του (πόσα hamburger και/ή πόσες πίτσες) καθώς και τα επιμέρους στοιχεία (μέγεθος, κ.λπ.). b. Θα υπολογίζει την τιμή της παραγγελίας. c. Θα τυπώνει (στην οθόνη του υπολογιστή) την απόδειξη. Υπόδειξη: 1) Τόσο ο υπολογισμός της παραγγελίας, όσο και η εκτύπωση της απόδειξης θα πρέπει να υλοποιηθούν σε ξεχωριστές μεθόδους της κλάσης Μain. Απάντηση package fastfood; import java.util.*; import java.io.*; /** * * @author fitsilis */ public class Main public static void main(string[] args) Vector<Pizza> orderedpizza; Vector<Hamburger> orderedhamburger; Scanner keyboard; BufferedReader br; int nopizza =0; int nohamburger =0; double totalorderprice = 0; orderedpizza = new Vector(); orderedhamburger = new Vector(); //instantiate a keyboard reader object (used for integers) keyboard = new Scanner(System.in); br = new BufferedReader(new InputStreamReader(System.in)); ΠΛΗ24 Σχεδιασμός Λογισμικού 20