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



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

ΠΑΡΑΔΕΙΓΜΑΤΑ USE CASE DIAGRAMS CLASS DIAGRAMS

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

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

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

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

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

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

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

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

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

UML

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

4. Αναδροµικός τύπος Είναι ο τύπος που συσχετίζει δύο ή περισσότερους γενικούς όρους µιας ακολουθίας

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΚΕΝΤΡΟ ΙΑΧΕΙΡΙΣΗΣ ΙΚΤΥΩΝ. Εγχειρίδιο χρήσης των υπηρεσιών τηλεκπαίδευσης του Πανεπιστηµίου Ιωαννίνων. Ασύγχρονη τηλεκπαίδευση

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

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

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

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

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

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

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

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

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

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Βασικές Έννοιες Δοµών Δεδοµένων

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

Λύσεις 1 ης Σειράς Ασκήσεων (Αξιολόγηση της Αποτελεσµατικότητας της Ανάκτησης)

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

Σχεσιακή δοµή δεδοµένων

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

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

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

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

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

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας

Εισαγωγή ΕΙΣΑΓΩΓΗ ΣΤΑ ΓΣΠ

Κεφάλαιο 10 ο Υποπρογράµµατα

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

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

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

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

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

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

Βασικά της γλώσσας JAVA

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

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

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

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

POINTERS, AGGREGATION, COMPOSITION

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

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

Η εταιρεία είναι οργανωµένη σε τµήµατα Κάθε ΤΜΗΜΑένα όνοµα, κωδικό και έναν εργαζόµενο που διευθύνει το τµήµα. Αποθηκεύεται η ηµεροµηνία που ανέλαβε

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

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

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

HY118- ιακριτά Μαθηµατικά

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

Διάλεξη 10: Αντικειμενοστρεφής Σχεδιασμός ΙI. Διδάσκων: Παναγιώτης Ανδρέου

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

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

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

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Requirements Απαιτήσεις

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Εισαγωγή στη UML. Περιεχόμενα. Γενικά χαρακτηριστικά. Στοιχεία μοντέλων. Συσχετίσεις. Διαγράμματα. Παραδείγματα. Γλώσσες Προδιαγραφής 1

Transcript:

Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών Φθινόπωρο 2006 ΗΥ351: Ανάλυση και Σχεδίαση Πληροφοριακών Συστηµάτων Information Systems Analysis and Design οµική Μοντελοποίηση Class Diagrams Περιεχόµενα και ιάρθρωση Εισαγωγή Παραδείγµατα οµικής Μοντελοποίησης Συχνά λάθη Τρόπος σύνταξης διαγραµµάτων κλάσεων µε 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 ()) Μπορεί να έχουµε δηµιουργία νέας επικεφαλίδας (newheader()) Μπορεί να έχουµε δηµιουργία νέου υποσέλιδου (newfooter()) 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 haswagon> 1..* {ordered Engine capacity weight hp 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 + getowner ( ) - myvehicles - myowner 0..* 1 + firstname : string + lastname : string + phonenumber : string Owner + 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 public class Account { private int number; private int balance; private String branch; public double calcinterest(){ return 0; 1 1 Customer -lastnumber : string -lastnumber : string 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 public class Account { private int number; private int balance; private String branch; public double calcinterest(){ return 0; 1..* 1 +relatedaccount Customer -lastnumber : string -lastnumber : string 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