Μεθοδολογίες Προγραμματισμού ΙΙ Διαγράμματα Κλάσεων Παναγιώτης Σφέτσος, PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παραγγελία προϊόντων μέσω καταλόγου (Order) – 1 Για οποιοδήποτε πλήθος: Παραγγελία (Order) από τον Customer Υλοποιείται από τον Employee Πληρώνεται μέσω της PaymentMethod Υλοποιείται μέσω μιας Address που ανήκει σε ένα Customer. - Αποτελείται από OrderItems Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παραγγελία προϊόντων μέσω καταλόγου (Order) – 2 H PaymentMethod έχει τρεις διαφορετικούς τρόπους πληρωμής που μπορεί να χρησιμοποιεί. (Γενίκευση – Κληρονομικότητα) Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παραγγελία προϊόντων μέσω καταλόγου (Order) – 3 Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στόχοι Διαγράμματα Αλληλεπίδρασης και Κλάσεις Τα μηνύματα καλούν μεθόδους στις κλάσεις. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στόχοι Προσανατολισμός – Πλοήγηση - 1 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στόχοι Προσανατολισμός – Πλοήγηση - 2 Η κλάση Register έχει το χαρακτηριστικό currentSale που δείχνει αντικείμενο της Sale. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στόχοι Προσανατολισμός – Πλοήγηση - 3 Εξαρτήσεις: H Register ξέρει ένα προϊόν από την Catalog, ενώ η Sale λαμβάνει ένα ProductSpecification στο μήνυμα makeLineItem . Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στόχοι Δημιουργία μεθόδων από τα Διαγράμματα Αλληλεπίδρασης - 1 Από το διάγραμμα enterItem: Μήνυμα enterItem , καλεί μέθοδο στην κλάση Register Μήνυμα getProductDescription στέλνεται στην ProductCatalog για να πάρουμε ProductDescription Μήνυμα makeLineItem, καλεί μέθοδο στην κλάση Sale Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στόχοι Δημιουργία μεθόδων από τα Διαγράμματα Αλληλεπίδρασης - 2 Καλούμε την ProductCatalog για ProductDescription, και την makeLineItem για την τρέχουσα πώληση Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στόχοι Δημιουργία μεθόδων από τα Διαγράμματα Αλληλεπίδρασης - 3 Κλήση στην ProductDescription της ProductCatalog για να πάρουμε ProductDescription Κλήση στην makeLineItem για της Sale Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Στόχοι Δημιουργία μεθόδων από τα Διαγράμματα Αλληλεπίδρασης - 4 Προσέξτε τον δομητή SalesLineItem(). Προέρχεται από το μήνυμα create(desc, qty) στην SalesLineItem από το διάγραμμα Αλληλεπίδρασης enterItem (βλέπε προηγ. διαφάνεια). Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Σύνθεση vs. Συσσωμάτωση Composition - Aggregation Στόχοι Σύνθεση: Το τμήμα (π.χ. Square) πρέπει να ανήκει σε ένα όλο (Board) (δεν υπάρχουν ελεύθερα Squares) Το τμήμα (π.χ. Square) ανήκει μόνο σε ένα όλο (τρέχον Board) Το όλο είναι υπεύθυνο για την δημιουργία και διαγραφή των τμημάτων Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Σύνθεση vs. Συσσωμάτωση Παράδειγμα Στόχοι Συσσωμάτωση: Η Account χρησιμοποιεί την AddressBook, μπορεί να χρησιμοποιηθεί και από άλλες κλάσεις. Σύνθεση: Η AddressBook αποτελείται από τις υποκλάσεις ή εμπεριέχει τις υποκλάσεις : Contact και ContactGroup. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Κλάσεις στο παράδειγμα ΑΤΜ – 1/4 Στόχοι Κλάσεις στο παράδειγμα ΑΤΜ – 1/4 Ξεχωρίστε τις κλάσεις του Συστή- ματος και επεξηγήστε τις επιλογές… Η κλάση ΑΤΜ χειρίζεται το Startup και Shutdown για αυτό δεν χρειάζονται ξεχωριστά αντικείμενα Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Κλάσεις στο παράδειγμα ΑΤΜ – 2/4 Στόχοι Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Κλάσεις στο παράδειγμα ΑΤΜ – 3/4 Στόχοι Κλάσεις στο παράδειγμα ΑΤΜ – 3/4 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Κλάσεις στο παράδειγμα ΑΤΜ – 4/4 Στόχοι Κλάσεις στο παράδειγμα ΑΤΜ – 4/4 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ
Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ class School { Name name; String address; Number phone; void addStudent() {} void removeStudent() {} void getStudent() {} void getAllStudents() {} void addDepartment() {} void removeDepartment() {} void getDepartment() {} void getAllDepartments() {} } class Department { void addInstructor() {} void removeInstructor() {} void getInstructor() {} void getAllInstructors() {} } class Student { Number studentID;} class Course { Number courseID; } class Instructor { Name name;} Στόχοι has 1..* Member * Student composed 1..* has 1..* Department AssignedTo 1..* Instructor assoc 1..* - 1..* Course assoc 0..* - "0..1 chairperson" Instructor assoc * Attends * Course assoc 1..* Teaches * Course Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ