Φροντιστήριο 3. Ημερομηνία: 22/11/2006 Θεματική Ενότητα: Δομική Μοντελοποίηση Θέμα: Διαγράμματα Κλάσεων

Σχετικά έγγραφα
ΠΑΡΑΔΕΙΓΜΑΤΑ USE CASE DIAGRAMS CLASS DIAGRAMS

Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών Φθινόπωρο οµική Μοντελοποίηση Class Diagrams

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

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

(Απλή) Κληρονομικότητα

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

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

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

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

Περιεχόμενα και Διάρθρωση. Interaction Diagrams

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

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

UML

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

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

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Μετατροπή Σχήματος Ο/Σ σεσχεσιακό

POINTERS, AGGREGATION, COMPOSITION

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

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Δευτέρα 22 / 11 / 2017 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Μάθημα 1 [3/11/2015].

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

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

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

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

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

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

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

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

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 10 Ο. Δομές Ενώσεις Απαριθμητοί τύποι δεδομένων ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

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

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

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

Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Μετατροπή Σχήματος Ο/Σ σεσχεσιακό

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

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών ΤΗΜΜΥ Α.Π.Θ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ.

Μενού Προβολή. Προβολές εγγράφου

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

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

Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό Σχήμα. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

Μοντέλο Οντοτήτων-Συσχετίσεων

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


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

Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων

Θεωρία Κανονικοποίησης

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Μοντέλα συστήματος. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 8

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

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

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

Τα διαγράµµατα κλάσεων

Διάγραμμα Οντοτήτων Συσχετίσεων (ΔΟΣ) Entity Relationship Diagram (ERD)

Κλάσεις και αντικείμενα #include <iostream.h<

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

Σχεσιακό Μοντέλο. Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Transcript:

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

Περιεχόμενα και Διάρθρωση Εισαγωγή Παραδείγματα Δομικής Μοντελοποίησης Συχνά λάθη Τρόπος σύνταξης διαγραμμάτων κλάσεων με CASE tools (demo) Υλοποίηση Διαγραμμάτων Κλάσεων και Java CS-351 U. of Crete, Fall 2005-2006 2

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

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

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

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

Παράδειγμα 1: Μοντελοποίηση Κειμενογράφου Αν εξάγουμε τη λίστα με τα ουσιαστικά από την προηγούμενη περιγραφή θα έχουμε τα εξής: έγγραφο, κείμενο, επικεφαλίδα, υποσέλιδο, ημέρα, ώρα, χρόνος, αριθμός σελίδας, σελίδα, πρόταση, λέξη, σημεία στίξης, γράμμα, αριθμός, ειδικός χαρακτήρας, εικόνα, πίνακας, γραμμή, στήλη, κελί, χρήστης Όλα τα ουσιαστικά αυτά αποτελούν υποψήφιες κλάσεις και χαρακτηριστικά κλάσεων του class diagram CS-351 U. of Crete, Fall 2005-2006 7

Παράδειγμα 1: Έγγραφο (Document) Αποτελεί τη βασική έννοια του πεδίου εφαρμογής Ένα έγγραφο περιέχει ένα αριθμό σελίδων (numberofpages) Οι λειτουργίες που επιτελούνται σε ένα έγγραφο είναι άνοιγμα (open()), αποθήκευση (save()), εκτύπωση (print()), δημιουργία (new()) CS-351 U. of Crete, Fall 2005-2006 8

Παράδειγμα 1: Σελίδα Μίασελίδαέχεικάποιοναριθμόσελίδας Οι λειτουργίες πάνω σε μία σελίδα είναι οι εξής: Δημιουργία σελίδας (newpage()) Απόκρυψη επικεφαλίδας (hideheader()) Απόκρυψη υποσέλιδου (hidefooter()) Εισαγωγή εικόνας (insertpicture()) Εισαγωγή Πίνακα (inserttable()) CS-351 U. of Crete, Fall 2005-2006 9

Παράδειγμα 1: Επικεφαλίδα και Υποσέλιδο Αυτές οι κλάσεις έχουν κοινά χαρακτηριστικά την ημέρα (date), ώρα (time), αριθμό σελίδας (pagenumber), τοποθεσία αρχείου (filelocation) και μπορούν να εμφανίζονται (display ()), να τροποποιούνται (change ()) ή να αποκρύπτονται (hide ()) Μπορεί να έχουμε δημιουργία νέου υποσέλιδου (newfooter()) Μπορεί να έχουμε δημιουργία νέας επικεφαλίδας (newheader()) CS-351 U. of Crete, Fall 2005-2006 10

Παράδειγμα 1: Προτάσεις, λέξεις, χαρακτήρες Το σώμα αποτελείται από προτάσεις, οι προτάσεις από λέξεις και οι λέξεις από χαρακτήρες (Character) Άρα το σώμα αποτελείται από χαρακτήρες οι οποίοι μπορεί να είναι γράμματα (Letter), αριθμοί(number), ειδικοί χαρακτήρες (Special Character) ή (σημεία στίξης) punctual signs Κάθε χαρατήρας έχει έναν τύπο (type) που καθορίζει αν είναι normal, italic, bold ή underline Σε κάθε χαρακτήρα μπορούν να επιτελεστούν λειτουργίες αλλαγής του τύπου : normal(), bold(), italic() και underline() CS-351 U. of Crete, Fall 2005-2006 11

Παράδειγμα 1: Προτάσεις, λέξεις, χαρακτήρες CS-351 U. of Crete, Fall 2005-2006 12

Παράδειγμα 1: Πίνακες Το κείμενο μπορεί να περιέχει επίσης και πίνακες (Table) Κάθε πίνακας έχει γραμμές (numbrows) και στήλες (numbcolumns) Οι λειτουργίες πάνω σε ένα πίνακα είναι: δημιουργία γραμμής (insertrow()),δημιουργία στήλης (insertcolumn()) η δημιουργία πίνακα (newtable()) Σε κάθε κελί αποθηκεύεται κείμενο ή εικόνα (insertpicture()) CS-351 U. of Crete, Fall 2005-2006 13

Παράδειγμα 1: Το ολικό διάγραμμα CS-351 U. of Crete, Fall 2005-2006 14

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

Παράδειγμα 2: Αττικό Μετρό Τα στοιχεία των εργαζομένων: Μας ενδιαφέρει η ειδικότητα των εργαζομένων (οδηγοί, μηχανικοί συρμών/ δικτύου, ελεγκτές κυκλοφορίας, ταμίες) και τα συναφή τους στοιχεία: π.χ ποιος οδηγεί τον συρμό Νο3. Τα δρομολόγια Κάθε δρομολόγιο έχει αφετηρία, προορισμό και εκτελείται από έναν συγκεκριμένο συρμό. CS-351 U. of Crete, Fall 2005-2006 16

Παράδειγμα 2: Δίκτυο Σταθμών Καλά μοντέλα είναι εκείνα που σχετίζονται με την πραγματικότητα. Το πρώτο πράγμα που πρέπει να κάνετε είναι να βρείτε τον χάρτη του μετρό (π.χ από τον Ιστό). Ένα απόσπασμα του χάρτη παρατίθεται. CS-351 U. of Crete, Fall 2005-2006 17

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

Παράδειγμα 2: Δίκτυο Σταθμών Ένας τρόπος μοντελοποίησης του δικτύου των σταθμών φαίνεται παρακάτω. Ο περιορισμός των κλάσεων συσχέτισης (ένα ζεύγος σταθμών μπορεί να μετέχει το πολύ μια φορά) μας εξυπηρετεί αφού θα ήταν παράλογο να συνδέονται δυο σταθμοί με παραπάνω από μία (άμεση) διασύνδεση. Station name 1..6 start 1..6 destination connection Km Distance * colour 1 <<enumeration>> Color red green blue Παρατηρείστε την πολλαπλότητα 1..6. Προφανώς το 0 θα ήταν παράλογο. Το 1 συνεπάγεται σίγουρα τερματικό σταθμό (που δεν είναι μετεπιβίβασης) ενώ το μέγιστο 6 μπορεί να υπάρξει μόνο στην περίπτωση ενός σταθμού από τον οποίο διέρχονται και οι 3 γραμμές και άρα έχει 2 γείτονες ανά γραμμή. CS-351 U. of Crete, Fall 2005-2006 19

Παράδειγμα 2: Συρμοί Ένας συρμός αποτελείται από μια τουλάχιστον μηχανή και ένα σύνολο από επιβατικά βαγόνια. Μας ενδιαφέρουν επίσης τα τεχνικά στοιχεία του κάθε τμήματος του συρμού (πχ. ιπποδύναμη, χωρητικότητα, βάρος κλπ) Μια μοντελοποίηση των συρμών είναι η εξής. Ηχρήσητου{ordered} μας επιτρέπει να γνωρίζουμε τη σειρά διασύνδεσης των βαγονιών. Wagon Train 0..1 0..1 hasengine> 1 Engine capacity weight hp haswagon> 1..* {ordered} Wagon capacity weight CS-351 U. of Crete, Fall 2005-2006 20

Παράδειγμα 2: Στοιχεία εργαζομένων Μας ενδιαφέρει η ειδικότητα των εργαζομένων (οδηγοί, μηχανικοί συρμών/ δικτύου, ελεγκτές κυκλοφορίας, ταμίες). Για τους οδηγούς μας ενδιαφέρει να καταγράψουμε και ποιο συρμό οδηγούν. Μία μοντελοποίηση: 0..1 Wagon Train Employee name driver 1 Driver Engineer Cashier CS-351 U. of Crete, Fall 2005-2006 21

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

Παράδειγμα 2: Το πλήρες μοντέλο Το πλήρες μοντέλο προκύπτει συναρμολογώντας όλα τα παραπάνω. Παρατήρηση: Είναι προτιμότερο ο Οδηγός να συσχετιστεί με το δρομολόγιο και όχι με το τραίνο. Θα μπορούσαμε να ορίσουμε μια παράγωγη συσχέτιση (derived association) μεταξύ οδηγού και τραίνου. CS-351 U. of Crete, Fall 2005-2006 23

Παράδειγμα 2: Το πλήρες μοντέλο Connection Color - red -blue -green CS-351 U. of Crete, Fall 2005-2006 24

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

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

Παράδειγμα 3: Γενικά Σχόλια Σχόλιο από διδασκαλία μαθήματος 2005 Αρκετοί φοιτητές επέλεξαν να μοντελοποιήσουν τις λειτουργίες όχι ως operations των κλάσεων, αλλά ως ξεχωριστές κλάσεις που κάθε τους instance αντιστοιχεί σε μία συγκεκριμένη λειτουργία που γίνεται μεταξύ δανειζόμενου και βιβλίου. Μια προτιμότερη μοντελοποίηση είναι η ακόλουθη: CS-351 U. of Crete, Fall 2005-2006 27

Παράδειγμα 3: Μια μοντελοποίηση CS-351 U. of Crete, Fall 2005-2006 28

Παράδειγμα 4: Adventure Games Graph Τα adventure games συχνά βασίζονται σε γράφους. Οι κόμβοι του γράφου παριστάνουν θέσεις, ενώ υπάρχει και ένα σύνολο κατευθύνσεων (πχ Βοράς, Νότος, Ανατολή, Δύση). Για κάθε κόμβο n και κατεύθυνση d, υπάρχειτοπολύέναςκόμβοςστονοποίο μπορούμε να φθάσουμε αν ακολουθήσουμε την κατεύθυνση d από τον n (α) Σχεδιάστε ένα διάγραμμα κλάσεων για την καταχώρηση τέτοιων γράφων. Σημειώστε επίσης και τους περιορισμούς αντιστοίχισης (multiplicity constraints) σε όλες τις συσχετίσεις που θα ορίσετε. CS-351 U. of Crete, Fall 2005-2006 29

Παράδειγμα 4: Μια λύση 0..* 0..* Node 0..1 west south 0..1 north 0..1 0..* 0..* 0..1 east CS-351 U. of Crete, Fall 2005-2006 30

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

Παράδειγμα 4: Λύση (Α) Το διπλανό διάγραμμα επιτρέπει απεριόριστο αριθμό κατευθύνσεων. Παρά ταύτα, η κλάση συσχέτισης θέτει έναν επιπλέον περιορισμό: μεταξύ δύο κόμβων (στιγμιότυπων της κλάσης Node) μπορεί να υπάρχει το πολύ μία συσχέτιση. Άρα το παραπάνω διάγραμμα αποκλείει μεταβάσεις της μορφής (U1.North= U2) και (U1.South=U2). CS-351 U. of Crete, Fall 2005-2006 32

Παράδειγμα 4: Παραλλαγή λύσης (Α) Η εκφώνηση της άσκησης δεν έθεσε έναν τέτοιο περιορισμό. Αν είχε τεθεί αυτός οπεριορισμός, τότε το διάγραμμα για το (α) σκέλος της άσκησης θα μπορούσε να έχει την εξής μορφή: CS-351 U. of Crete, Fall 2005-2006 33

Παράδειγμα 4: Λύση (Β) Μια διαφορετική μοντελοποίηση που επιτρέπει απεριόριστο αριθμό κατευθύνσεων αλλά δεν θέτει τον παραπάνω περιορισμό είναι η ακόλουθη. Αυτή όμως η λύση έχει το μειονέκτημα ότι δεν ικανοποιεί τον περιορισμό μοναδικού προορισμού: «Για κάθε κόμβο n και κατεύθυνση d, υπάρχειτοπολύέναςκόμβοςστον οποίο μπορούμε να φθάσουμε αν ακολουθήσουμε την κατεύθυνση d από τον n». Με άλλα λόγια επιτρέπει (U1.North=U2) και (U1.North=U3). CS-351 U. of Crete, Fall 2005-2006 34

Παράδειγμα 4: Λύση (Γ) Μία λύση που δεν έχει τα παραπάνω προβλήματα είναι η εξής: Χρησιμοποιούμε το γνώρισμα direction ως qualifier της αναδρομικής συσχέτισης και την πολλαπλότητα 0..1 στον προορισμό. Με αυτόν τον τρόπο από ένα κόμβο και για συγκεκριμένη κατεύθυνση μπορούμε να καταλήξουμε σε έναν το πολύ κόμβο. Επίσης η μοντελοποίηση αυτή δεν απαγορεύει μεταβάσεις της μορφής: (U1.North=U2) και (U1. South=U2). CS-351 U. of Crete, Fall 2005-2006 35

Παράδειγμα 5 : Μοντελοποίηση Οχημάτων - Ιδιοκτητών Ένα όχημα μπορεί να είναι είτε αυτοκίνητο είτε μοτοσικλέτα Όλα τα οχήματα έχουν κάποια κοινά χαρακτηριστικά όπως η μέγιστη ταχύτητα και το βάρος Το αυτοκίνητο και οι μοτοσικλέτες διαφέρουν σε κάποια χαρακτηριστικά όπως ο αριθμός από ρόδες που διαθέτουν Ένα αυτοκίνητο έχει επιπλέον χαρακτηριστικά όπως ο αριθμός των επιβατών που χωράει Κάθε όχημα ανήκει σε έναν ιδιοκτήτη ενώ ένας ιδιοκτήτης μπορεί να έχει πολλά οχήματα Κάθε ιδιοκτήτης έχει κάποια χαρακτηριστικά όπως όνομα και αριθμό τηλεφώνου CS-351 U. of Crete, Fall 2005-2006 36

Παράδειγμα 5 : Μοντελοποίηση Οχημάτων - Ιδιοκτητών Vehicle + weight : int + topspeed : int + VIN : string - myvehicles 0..* - myowner 1 + firstname : string + lastname : string + phonenumber : string Owner + getowner ( ) + contactowner ( [in] message : string ) : bool + getname ( ) : string Car + modeltype : string + maxpassengers : int + addrepairnote ( [in] note : string ) : bool Motorcycle + modeltype : string - wheels 2 Wheel + maxmileage : int - wheels 4 CS-351 U. of Crete, Fall 2005-2006 37

Συχνά Λάθη CS-351 U. of Crete, Fall 2005-2006 38

(1) Επανάληψη Πληροφορίας Car - wheels: Αrray [4] 4 wheels Wheel : Λάθος Car 4 wheels Wheel : Σωστό Car - wheels: Αrray [4] Wheel : Σωστό (Αλλά περιγράφει την υλοποίηση) CS-351 U. of Crete, Fall 2005-2006 39

(2) Επανάληψη Πληροφορίας Borrower 1 3 Book borrower book : Λάθος - numbooks : int - borrower: Borrower CS-351 U. of Crete, Fall 2005-2006 40

(3) Πλεονάζουσες Συσχετίσεις Σε περίπτωση που από την ανάλυση προέκυπτε ότι συχνά απαιτούνταν να γνωρίζουμε ποιοι καθηγητές δίδαξαν ένα μάθημα, θα μπορούσαμε να επιλέξουμε να προσθέσουμε μια πλεονάζουσα συσχέτιση μεταξύ Καθηγητή και Μαθήματος Μάθημα - ονομα - αριθμός - Διδακτ.Μον προσφέρεται ως > 1 n Τάξη - αριθμός - ώρα - ημέρα - εξάμηνο * * + : ταχύτητα < δίδαξε * Καθηγητής - ονομα διδάσκει > - ειδικότητα 1 - : πολυπλοκότητα (σε σε κάθε αλλαγή καθηγητή απαιτείται ενημέρωση 2 δεσμών) CS-351 U. of Crete, Fall 2005-2006 41

(4) Συνάθροιση vs Σύνθεση Δηλώνουν σχέσεις του τύπου το σύνολο αποτελείται-από μέρη Συνάθροιση (Aggregation) Το μέρος δημιουργείται και καταστρέφεται ανεξάρτητα από το σύνολο Το μέρος μπορεί να ανήκει σε περισσότερα από ένα σύνολα Σύνθεση (Composition) Δυνατότερη σχέση από τη συνάθροιση Το μέρος δημιουργείται και καταστρέφεται με το σύνολο Το μέρος μπορεί να ανήκει μόνο σε ένα σύνολο Οι ορισμοί και η μεταξύ τους διάκριση είναι ακόμα υπό συζήτηση CS-351 U. of Crete, Fall 2005-2006 42

Συνάθροιση Σύνθεση Department Hand 1..* 0..* Course 1 0..5 Finger CS-351 U. of Crete, Fall 2005-2006 43

Υλοποίηση Διαγραμμάτων Κλάσεων και Java CS-351 U. of Crete, Fall 2005-2006 44

Κλάσεις Account -number : int -balance : int -branch : string +calcinterest() : double +getbalance() : int public class Account { private int number; private int balance; private String branch; public double calcinterest(){ return 0; } } public getbalance(){ return 0; } CS-351 U. of Crete, Fall 2005-2006 45

Συσχετίσεις Απλής Κατεύθυνσης Account -number : int -balance : int -branch : string +calcinterest() : double +getbalance() : int 1 1 Customer -lastnumber : string -lastnumber : string public class Account { private int number; private int balance; private String branch; public double calcinterest(){ return 0; } public class Customer { private String lastname; private String firstname; private Account theaccount; } public getbalance(){ return 0; } CS-351 } U. of Crete, Fall 2005-2006 46

Συσχετίσεις Απλής Κατεύθυνσης με Πολλαπλότητα Account -number : int -balance : int -branch : string +calcinterest() : double +getbalance() : int 1..* 1 +relatedaccount Customer -lastnumber : string -lastnumber : string public class Account { private int number; private int balance; private String branch; public double calcinterest(){ return 0; } public class Customer { private String lastname; private String firstname; private ArrayList theaccounts; } public getbalance(){ return 0; } CS-351 } U. of Crete, Fall 2005-2006 47

Συσχετίσεις Διπλής Κατεύθυνσης με Πολλαπλότητα Account -number : int -balance : int -branch : string +calcinterest() : double +getbalance() : int 1..* 1 +relatedaccount Customer -lastnumber : string -lastnumber : string public class Account { private int number; private int balance; private String branch; private Customer thecustomer; public class Customer { private String lastname; private String firstname; private ArrayList theaccount; } public double calcinterest(){ return 0; } public getbalance(){ return 0; } } CS-351 U. of Crete, Fall 2005-2006 48

Συναθροίσεις Car 4 wheels Wheel public class Car { private Wheel wheels[];... // τα αντικείμενα wheel δημιουργούνται εξωτερικά // και μπαίνουν ορίσματα στον constructor } public Car( Wheel w1, Wheel w2, ) { wheels = new Wheel[4]; wheels[0] = w1; wheels[1] = w2; } CS-351 U. of Crete, Fall 2005-2006 49

Συνθέσεις Car 4 wheels Wheel public class Car { private Wheel wheels[];... public Car() { wheels = new Wheel[4]; } }... // τα αντικείμενα wheel δημιουργούνται εσωτερικά στον constructor wheels[0] = new Wheel(); wheels[1] = new Wheel(); CS-351 U. of Crete, Fall 2005-2006 50

Κληρονομικότητα - name - salary +printincome() Employee public class Employee { private String name; private int salary; public double printincome(){ return 0; } } AdminEmployee -ovthours -rate -printincome() public class AdminEmployee extends Employee{ private int ovthours; private int rate; //Αυτή η συνάρτηση θα κληθεί στη θέση της πατρικής //εάν έχει υλοποιηθεί, διαφορετικά καλείται του πατέρα public double printincome(){ return 0; } } CS-351 U. of Crete, Fall 2005-2006 51