Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Advertisements

ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
AΝΑΛΥΣΗ ΣΥΣΤΗΜΑΤΩΝ Εισαγωγή στη UML.
Δαμιανός Χατζηαντωνίου Οικονομικό Πανεπιστήμιο Αθηνών
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΟΠΑ - Τεχνολογία Λογισμικού - Εμμ. Γιακουμάκης
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ
Μεθοδολογίες Προγραμματισμού ΙΙ
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό.
Τι είναι Ανάλυση Τι είναι Συστήματα Πληροφορικής
ΑΠΕΙΚΟΝΙΣΗ ΕΝΝΟΙΩΝ 1. 2 Χρήστης Στόχος Ταμίας διενέργεια πώλησης διενέργεια ενοικίασης εισαγωγή ταμείου εξαγωγή ταμείου * 1 Μοντέλο Πεδίου Προβλήματος.
ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
Πρότυπα Σχεδίασης Design Patterns Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμ. Εφ. Πληροφορικής.
Τεχνολογία ΛογισμικούSlide 1 Σχεδιασμός Λογισμικού u Ανάπτυξη λύσης που ικανοποιεί τις απαιτήσεις λογισμικού.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ. Καθηγητής, Ε.Μ.Π.
Δομές Δεδομένων.
Ενότητα Α.4. Δομημένος Προγραμματισμός
Το Εκτεταμένο Μοντέλο Οντοτήτων - Συσχετίσεων
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακό Μοντέλο.
HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ. Καθηγητής, Ε.Μ.Π.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Μετατροπή Σχήματος Ο/Σ σε Σχεσιακό.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΟΡΙΣΜΟΣ ΣΥΜΠΕΡΙΦΟΡΑΣ ΔΙΑΓΡΑΜΜΑTA ΑΛΛΗΛΕΠΙΔΡΑΣΗΣ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Λογικός Σχεδιασμός Σχεσιακών Σχημάτων.
Τεχνολογία ΛογισμικούSlide 1 Εξειδίκευση Βασισμένη σε Μοντέλο u Τυπική εξειδίκευση λογισμικού με ανάπτυξη μαθηματικού μοντέλου για το σύστημα.
Βασικά στοιχεία της Java
On user-defined features Christoph M Hoffmann and Robert Joan-Arinyo Ανδρέας Φωτίου.
Τεχνολογία ΛογισμικούSlide 1 Τεχνολογία Απαιτήσεων u Καθορίζει τι θέλει ο πελάτης από ένα σύστημα λογισμικού.
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
Βάσεις Δεδομένων ER-Διάγραμμα.
Αντικειμενοστραφής Προγραμματισμός Ι
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο 1: Εισαγωγή.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
Διαγράμματα Πακέτων (Package Diagrams)
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ανδρέου Βασίλης.
Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Οντοκεντρικός Προγραμματισμός
Ανάλυση και σχεδιασμόσ πληροφοριακών συστημάτων
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Κατανεμημένα Συστήματα
Η φάση του εννοιολογικού σχεδιασμού
Software Engineering for Web Applications
Κλάσεις και αντικείμενα
Αρχές Διοίκησης και Διαχείρισης Έργων
Ανάπτυξη Μοντέλων Διακριτών Συστημάτων Μέρος Β

Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Activity Diagrams.
Εισαγωγή στον Προγ/μό Υπολογιστών
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΙΣΑΓΩΓΗ ΣΤΗ UML ΕΙΣΑΓΩΓΗ ΣΤΗ UML.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΥΠΟΔΕΙΓΜΑΤΑ  Προγραμματιστικό Υπόδειγμα: Είναι ένα πρότυπο ανάπτυξης προγραμμάτων, δηλ. μια καθορισμένη μεθοδολογία με βάση την οποία.
Το Σχεσιακό Μοντέλο Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Μεταγράφημα παρουσίασης:

ΚΛΑΣΕΙΣ, ΑΝΤΙΚΕΙΜΕΝΑ ΚΑΙ ΟΙ ΣΥΣΧΕΤΙΣΕΙΣ ΤΟΥΣ ΚΛΑΣΕΙΣ, ΑΝΤΙΚΕΙΜΕΝΑ ΚΑΙ ΟΙ ΣΥΣΧΕΤΙΣΕΙΣ ΤΟΥΣ 1. Γενικοί Ορισμοί 2. Κλάσεις καί η Περιγραφή τους 3. Σχέσεις Μεταξύ Κλάσεων 4. Αφαιρετικές Κλάσεις 5. Προχωρημένες Έννοιες 6. Ποιότητα του Μοντέλου

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

Εισαγωγή Οι κλάσεις, τα αντικείμενα καί οι μεταξύ τους συσχετίσεις είναι τα πρωταρχικά στοιχεία μοντελοποίησης στην αντικειμενοστραφή θεώρηση Οι κλάσεις καί τα αντικείμενα περιγράφουν τι υπάρχει μέσα στο σύστημα που περιγράφουμε Οι συσχετίσεις μεταξύ τους περιγράφουν πως δομούνται το ένα συστατικό σε σχέση με το άλλο Η ταξινόμηση χρησιμοποιείται εδώ καί χρόνια γιά απλοποιημένη περιγραφή πολύπλοκων συστημάτων Όταν η υλοποίηση του συστήματος γίνεται σε μιά αντικειμενοστραφή γλώσσα, οι κλάσεις καί οι συσχετίσεις τους μεταμορφώνονται απ’ ευθείας σε κώδικα προγραμματισμού.

Αντικείμενα Ένα αντικείμενο υπάρχει στον πραγματικό κόσμο (π.χ. Πελάτης) ή αντιστοιχεί στη θεώρηση που έχουμε γιά τον πραγματικό κόσμο (π.χ. Αντικείμενα που αναπαριστούν δομές δεδομένων: στοίβα, ουρά, κλπ.) Τα αντικείμενα μπορεί να μην υπάρχουν απ’ ευθείας στον κόσμο (π.χ. Αντικείμενα υλοποίησης σ’ένα πρόγραμμα) – είναι παράγωγα της αντίληψής μας γιά τη συμπεριφορά καί τη δομή των αντικειμένων του πραγματικού κόσμου

Κλάσεις Μιά κλάση είναι μιά περιγραφή ενός τύπου αντικειμένου: περιγράφει τα χαρακτηριστικά καί τη συμπεριφορά του συγκεκριμένου τύπου αντικειμένου Όλα τα αντικείμενα είναι στιγμιότυπα μιάς κλάσης Η σχέση ενός αντικειμένου με μιά κλάση είναι παρόμοια με τη σχέση μιάς μεταβλητής με τον τύπο της μεταβλητής σε μιά γλώσσα προγραμματισμού

Μοντελοποίηση συστημάτων Χρήση εννοιών καί αντικειμένων από τον πραγματικό κόσμο -> κατανοήσιμα μοντέλα Ένα σύστημα γιά μιά ασφαλιστική εταιρεία, πρέπει να χρησιμοποιεί αντικείμενα όπως: συμβόλαιο ασφάλειας ζωής, ασφαλιζόμενος Ένα σύστημα γιά το στρατό πρέπει να χρησιμοποιεί αντικείμενα όπως: φαντάρος, όπλο, τανκς κλπ. Η μοντελοποίηση πρέπει να βασίζεται στα κύρια αντικείμενα του συστήματος γιά να μπορεί εύκολα να αλλάζει Τα μοντέλα πρέπει να είναι: κατανοήσιμα, να προσφέρονται γιά συζήτηση, εύκολα να πιστοποιηθούν καί εύκολα να συντηρηθούν

Διαγράμματα Κλάσεων Είναι τύπος στατικού μοντέλου Περιγράφουν τη στατική άποψη ενός συστήματος με κλάσεις καί συσχετίσεις Η διαφορά τους απ’ τα μοντέλα δεδομένων είναι ότι περιγράφουν καί συμπεριφορά Αποτελούν τη βάση γιά άλλα διαγράμματα που δείχνουν άλλα χαρακτηριστικά του συστήματος Μιά κλάση υλοποιείται απ’ ευθείας σε μιά αντικειμενοστραφή γλώσσα πού υποστηρίζει άμεσα τη δομή της κλάσης

Διάγραμμα Κλάσεων (παράδειγμα) Ασφαλιστική εταιρεία 1 0..* Συμβόλαιο ασφάλειας 0..* 0..* (or) 1..* 1..* Άτομο Εταιρεία

Διαγράμματα Αντικειμένων Δείχνουν συσχετίσεις μεταξύ αντικειμένων (μπορούν να αναφέρονται σε συγκεκριμένο σενάριο) Τα διαγράμματα κλάσεων δείχνουν μόνο τις κλάσεις (δηλαδή των τύπο των αντικειμένων)

Διάγραμμα Αντικειμένων (παράδειγμα) Bob’s PC: Υπολογιστής Bob : Ιδιοκτήτης Name =‘Bob.j’ age = 32 Name =‘Dell 466 memory=64

2. Κλάσεις καί η Περιγραφή τους Τι είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ Ερωτήματα γιά την εύρεση Κλάσεων Αναπαράσταση Κλάσης στην UML Παραδείγματα Κλάσεων καί Αντικειμένων Χαρακτηριστικά (attributes) Kλάσεων Λειτουργίες (Μέθοδοι) Κλάσεων Παραδείγματα

Τί είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (1/4); Τί είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (1/4); Μιά κλάση είναι μιά περιγραφή ενός τύπου αντικειμένου: περιγράφει τα χαρακτηριστικά καί τη συμπεριφορά του συγκεκριμένου τύπου αντικειμένου Όλα τα αντικείμενα είναι στιγμιότυπα μιάς κλάσης Η σχέση ενός αντικειμένου με μιά κλάση είναι παρόμοια με τη σχέση μιάς μεταβλητής με τον τύπο της μεταβλητής σε μιά γλώσσα προγραμματισμού

Τί είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (2/4); Τί είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (2/4); Οι κλάσεις χρησιμοποιούνται γιά τη μοντελοποίηση καί περιγραφή συστημάτων καί γιά την ταξινόμηση αντικειμένων που υπάρχουν στον πραγματικό κόσμο Σκεφτείτε τον Δαρβίνο που χρησιμοποίησε κλάσεις γιά να περιγράψει το ανθρώπινο είδος Γιά να περιγράψει τη θεωρία του περί εξέλιξης, ταξινόμησε τις κλάσεις σε ιεραρχίες Η τεχνική της δημιουργίας ιεραρχίας υπάρχει καί στην αντικειμενοστραφή μοντελοποίηση καί προγραμματισμό

Τί είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (3/4); Τί είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (3/4); Μιά κλάση μπορεί να περιγράφει αντικείμενα οποιουδήποτε συστήματος: πληροφοριακό σύστημα, επιχειρησιακό σύστημα, τεχνικό σύστημα, κατανεμημένο σύστημα, λογισμικό κλπ. Παραδείγματα κλάσεων σε πληροφοριακά ή επιχειρησιακά συστήματα είναι: πελάτης, συμφωνία, τιμολόγιο, δελτίο αποστολής

Τί είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (4/4); Τί είναι η ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ (4/4); Παραδείγματα κλάσεων σε τεχνικά συστήματα: sensor, display, I/O card, engine, button, control class Παραδείγματα κλάσεων γιά system software: file, executable program, device, icon, window, scrollbar

Ερωτήματα γιά εύρεση κλάσεων Υπάρχει πληροφορία που θα πρέπει να περιγραφεί, αναλυθεί ή αποθηκευτεί ; Υπάρχουν εξωτερικά συστήματα τα οποία αλληλεπιδρούν με το σύστημά μας ; Υπάρχουν πρότυπα, βιβλιοθήκες κλάσεων ή άλλα συστατικά από προηγούμενες μελέτες; Υπάρχουν περιφερειακά που πρέπει να διαχειριστεί το σύστημα ; Ποιος είναι ο ρόλος των διαφόρων χρηστών στο σύστημα ;

Αναπαράσταση κλάσης στη UML Name Attributes Operations

ΠΑΡΑΔΕΙΓΜΑ ΚΛΑΣΗΣ και ΑΝΤΙΚΕΙΜΕΝΟΥ Name Αυτοκίνητο Attribute Operation αριθμ.πινακίδας μοντέλο ταχύτητα κατεύθυνση Αfro΄s car: Αυτοκίνητο YIX 5831 Renault Clio 140 km Βορειοδυτική Ξεκίνα Επιτάχυνε Φρέναρε

Χαρακτηριστικά (attributes) κλάσεων H γενική περιγραφή ενός χαρακτηριστικού είναι : ορατότητα όνομα : τύπος=αρχική τιμή {property string} π.χ. +κατάσταση: Κατάσταση = απλήρωτο {απλήρωτο, πληρωμένο} Μόνο το όνομα καί ο τύπος είναι υποχρεωτικά (αν η ανάπτυξη γίνει σε γλώσσα που δεν υποστηρίζει τύπους, ούτε ο τύπος είναι υποχρεωτικός) Τύπος: Μπορεί να είναι πρωταρχικός τύπος όπως ακέραιος, πραγματικός, boolean, κ.λ.π. Μπορεί να είναι μιά κλάση αντικειμένων Ορατότητα: Περιγράφει αν το χαρακτηριστικό είναι ορατό και αν μπορούν να αναφερθούν σε αυτό άλλες κλάσεις, εκτός από αυτή στην οποία ορίζεται (- + #). Χαρακτηριστικό κλάσης: Αφορά την κλάση καί όχι κάποιο συγκεκριμένο αντικείμενο. Η τιμή του είναι κοινή για όλα τα αντικείμενα. Υφίσταται χωρίς να υπάρχουν στιγμιότυπα της κλάσης. Δηλώνεται με υπογράμμιση. (Η UML παρέχει τη δυνατότητα να δηλώσουμε άν το χαρακτηριστικό παράγεται από άλλα χαρακτηριστικά ή άν είναι προαιρετικό)

+ ημερομηνία: Ημερομηνία=Τρέχουσα + πελάτης : Συμβολοσειρά Μια κλάση με ιδωτικά, δημόσια ιδιοχαρακτηριστικά και εξ ορισμού τιμές (παράδειγμα) Τιμολόγιο + ποσό: Πραγματικός + ημερομηνία: Ημερομηνία=Τρέχουσα + πελάτης : Συμβολοσειρά - διοικητής:Συμβολοσειρά=‘Ανειδίκευτος’ Το σύμβολο μείον σημαίνει ότι το χαρακτηριστικό είναι ιδιωτικό (private), δηλαδή δεν μπορεί να χρησιμοποιηθεί και δεν είναι ορατό από άλλες κλάσεις. Το αντίθετο υποδηλώνει το σύμβολο συν το οποίο προσδιορίζει δημόσιο (public) χαρακτηριστικό. Το σύμβολο # δηλώνει ότι το χαρακτηριστικό είναι προστατευόμενο (protected). .

Μια κλάση με χαρακτηριστικό κλάσης (class attribute) Τιμολόγιο + ποσό: Πραγματικός + ημερομηνία: Hμερομηνία = Τρέχουσα Ημερ. + πελάτης: Συμβολοσειρά - διοικητής: Συμβολοσειρά = ‘Ανειδίκευτος’ - αριθμός τιμολογίων : Ακέραιος Το χαρακτηριστικό αριθμός τιμολογίων χρησιμοποιείται για να μετρήσει το πλήθος των τιμολογίων. Η τιμή αυτού του χαρακτηριστικού είναι κοινή για όλα τα αντικείμενα και υπάρχει και όταν δεν υπάρχει στιγμιότυπο της κλάσης (είναι 0).

Μια κλάση με property string (συμβολοσειρά ιδιοτήτων) Τιμολόγιο + ποσό: Πραγματικός + ημερομηνία: Hμερομηνία =Τρέχουσα Ημερομηνία + πελάτης: Συμβολοσειρά - διοικητής: Συμβολοσειρά = ‘Ανειδίκευτος’ - αριθμός τιμολογίων: Ακέραιος +κατάσταση: Κατάσταση = απλήρωτο {απλήρωτο, πληρωμένο}

Mέθοδοι (Λειτουργίες) κλάσεων Οι μέθοδοι χρησιμοποιούνται για να διαχειριζόμαστε τα χαρακτηριστικά ή να εκτελούμε συγκεκριμένες ενέργειες. Η γενική περιγραφή μιας μεθόδου (υπογραφή της μεθόδου) είναι : ορατότητα όνομα (λίστα παραμέτρων): τύπος επιστροφής {property string} Οι μέθοδοι περιγράφουν τι υπηρεσίες προσφέρει η κάθε κλάση και κάποιες από αυτές παρέχουν την κατάλληλη διασύνδεση. Οι μέθοδοι μπορούν: Να παίρνουν πληροφορίες Nα ενημερώνουν Να κάνουν κάποιες ενέργειες πάνω στο αντικείμενο ή/καί να καλούν άλλα αντικείμενα

Παράδειγμα κλάσης με διάφορες μεθόδους Αυτοκίνητο + αρ.πινακίδας : Συμβολοσειρά - δεδομένα : Δεδομένα_Αυτοκινήτου + ταχύτητα : Ακέραιος + κατεύθυνση : Κατεύθυνση + οδήγησε (ταχύτητα : ακέραιος, κατεύθυνση : Κατεύθυνση) + πάρε_Δεδομένα ( ) : Δεδομένα_Αυτοκινήτου Η μέθοδος οδήγησε δέχεται δύο παραμέτρους, ταχύτητα και κατεύθυνση. Η μέθοδος πάρε_Δεδομένα έχει έναν τύπο επιστροφής, Δεδομένα_Αυτοκινήτου.

Παράδειγμα κλάσης με μέθοδο κλάσης Σχήμα μέγεθος: Μέγεθος θέση: Θέση μετρητήςΣχημάτων: Ακέραιος σχεδίασε() διάβασεΜετρητή(): Ακέραιος

Παράδειγμα κλάσης με εξ ορισμού τιμές στις παραμέτρους των λειτουργιών Παράδειγμα κλάσης με εξ ορισμού τιμές στις παραμέτρους των λειτουργιών Figure size: Size pos: Position + draw () + resize(percentX :Integer =25; percentY :Integer=25) + returnPos() : Position Call figure.resize(10,10) percentX=10, percentY=10 figure.resize(37) percentX=37, percentY =25 figure.resize ( ) percentX=25, percentY = 25

3. Σχέσεις μεταξύ Κλάσεων 3.0 Ορισμοί 3.1 Συσχέτιση (Association) 3.2 Γενίκευση (Generalization) 3.3 Εξάρτηση (Dependency) 3.4 Ανάλυση/Εκλέπτυνση (Refinement)

3.0 Ορισμοί Συσχέτιση (association) : είναι μια σημασιολογική σχέση μεταξύ των αντικειμένων δύο ή περισσότερων κλάσεων. Γενίκευση (generalization) : είναι η σχέση ανάμεσα σ’ένα πιο γενικό και σ’ένα πιο εξειδικευμένο στοιχείο.Το ειδικό στοιχείο θα πρέπει να περιέχει μόνο επιπρόσθετες πληροφορίες. Εξάρτηση (dependency) : σχέση ανάμεσα σε ανεξάρτητο κι εξαρτημένο στοιχείο.Μια ενδεχόμενη αλλαγή στο ανεξάρτητο στοιχείο θα επηρεάσει το εξαρτημένο στοιχείο. Εκλέπτυνση/Ανάλυση (refinement) : σχέση ανάμεσα σε δύο περιγραφές του ίδιου πράγματος , αλλά σε διαφορετικό επίπεδο ανάλυσης.

3.1 Συσχετίσεις (Αssocations) EIΔΗ ΣΥΣΧΕΤΙΣΕΩΝ Κανονική Συσχέτιση (Normal Association) Αναδρομική Συσχέτιση (Recursive Association) Προσδιορίσιμη Συσχέτιση (Qualified Association) Συσχέτιση Διάζευξης (OR-Assocation) Ταξινομημένη Συσχέτιση (Ordered Association) Tριαδική ή Ν-αδική Συσχέτιση (Τernary or N-ary Association) Kλάση συσχέτισης (Association Class) Συναθροίσεις (ειδική περίπτωση συσχέτισης) Kανονική Συνάθροιση (Normal Aggregation) Διαμοιραζόμενη ή Ασθενής Συνάθροιση (Shared or Weak Aggregation) Συνάθροιση Σύνθεσης (Composition Aggregation)

Ένα άτομο κατέχει πολλά (από μηδέν εως πολλά) αυτοκίνητα. ΚΑΝΟΝΙΚΗ ΣΥΣΧΕΤΙΣΗ (Normal association) Άτομο 1..* κατέχει 0..* Αυτοκίνητο κατέχεται από Ένα άτομο κατέχει πολλά (από μηδέν εως πολλά) αυτοκίνητα. Ένα αυτοκίνητο ανήκει σε πολλά (ένα ή πολλά ) άτομα. Χαρακτηριστικό σε μια σύνδεση αποτελεί η πολλαπλότητα δηλαδή ο αριθμός που δηλώνει το πλήθος των αντικειμένων που συνδέονται

Αναπαράσταση Συσχετίσεων Συσχετίσεις μεταξύ κλάσεων όνομα συσχέτισης (προαιρετικό) το βέλος πάνω από κάθε ακμή δηλώνει την κατεύθυνση ανάγνωσης (προαιρετικό) το βέλος στο τέλος μίας ακμής δηλώνει κατεύθυνση πλοήγησης (προαιρετικό) κάθε άκρο της συσχέτισης προσδιορίζεται από την πολλαπλότητα (multiplicity) για δυαδικές συσχετίσεις, η πολλαπλότητα στο τελικό άκρο δηλώνει πόσα αντικείμενα της τελικής κλάσης μπορούν να συσχετιστούν με ένα αντικείμενο του άλλου (πηγαίου) άκρου Συσχετίσεις μεταξύ αντικειμένων αναπαριστούν ένα στιγμιότυπο της συσχέτισης

Πολλαπλότητα (Multiplicity) Συσχετίσεων Ένας οποιοσδήποτε αριθμός “*” Ένα εύρος που καθορίζεται από το “..” Πιθανοί αριθμοί που διαχωρίζονται με κόμμα Το default είναι 1. Ακριβώς Ένα: 1  0: * ή (0..*) 0  1: 0..1 σταθερός αριθμός (π.χ. 3): 3 εύρος (π.χ. 3 ή περισσότερα): 3..* εύρος (π.χ. 3 έως και 6): 3..6 απαρίθμηση (π.χ. 3,6,7,8,9): 3,6..9

ΔΙΑΓΡΑΜΜΑ ΚΛΑΣΕΩΝ (παράδειγμα) 1..* Πολιτική ασφάλισης 0..1 έχει Εκφράζεται σ’ένα Αναφέρεται σε εκφράζει 1 1 Ασφαλιστική εταιρεία 1 Συμβόλαιο ασφάλισης Πελάτης έχει 0..* 0..* έχει Αναφέρεται σε Αναφέρεται σε 1..*

ΔΙΑΓΡΑΜΜΑ ΚΛΑΣΕΩΝ ΚΑΙ ΔΙΑΓΡΑΜΜΑ ΑΝΤΙΚΕΙΜΕΝΩΝ (παράδειγμα) Ιδιοκτήτης Υπολογιστής χρησιμοποιεί Name : string age : Integer Name : String memory: Integer 0..* 1..* Bob’s PC: Υπολογιστής Bob : Ιδιοκτήτης Name =‘Bob.j’ age = 32 Name =‘Dell 466 memory=64 Ένα διάγραμμα αντικειμένων περιγράφει τα στιγμιότυπα των κλάσεων

Αναδρομική συσχέτιση (recursive association) Υπάρχει η δυνατότητα συσχέτισης μιάς κλάσης με τον εαυτό της. Αποτελεί κι αυτή μιά σημασιολογική σύνδεση,μεταξύ όμως αντικειμένων της ίδιας κλάσης Κόμβος * * Συνδέει

Μετατροπή συσχέτισης από Μ:Ν σε δύο 1:Μ συσχετίσεις * A * B Μπορεί να μετατραπεί 1 * * 1 C Α B Σε μερικές γλώσσες δεν είναι δυνατή η απ’ευθείας υλοποίηση μιάς συσχέτισης Μ:N. Σε τέτοια περίπτωση, μετατρέπουμε τη συσχέτιση από M:Ν σε δύο 1:Μ

Ρόλοι σε μιά συσχέτιση Αυτοκίνητο Άτομο οδηγεί * * Αυτοκίνητο εταιρείας οδηγός Ένα άτομο παίζει το ρόλο ενός οδηγού κι ένα αυτοκίνητο παίζει το ρόλο του αυτοκινήτου εταιρείας στα πλαίσια της συσχέτισης μεταξύ των αντίστοιχων κλάσεων. Ένα αυτοκίνητο μπορεί να παίζει κι άλλους ρόλους όπως το ρόλο του ασθενοφόρου, αυτοκινήτου αστυνομίας κτλ. Οι ρόλοι αφορούν τις συσχετίσεις καί είναι προεραιτικοί. Δεν αποτελούν μέρος των κλάσεων.

Παραδειγμα στο οποίο οι ρόλοι μπορεί να μην είναι εφαρμόσιμοι Άτομο Η Σύζυγος Ο Σύζυγος παντρεύεται Ο άντρας παντρεύεται μια γυναίκα. Τόσο ο άντρας όσο κι η γυναίκα είναι άτομα. Αν κάποιο άτομο δεν είναι παντρεμένο τότε δεν μπορεί να παίξει το ρόλο του συζύγου ή της συζύγου, που σημαίνει ότι η συσχέτιση «παντρεύεται» δεν είναι εφαρμόσιμη γι’ αυτό το άτομο.

ΠΡΟΣΔΙΟΡΙΣΙΜΗ ΣΥΣΧΕΤΙΣΗ (Qualified Association) Canvas Figure * Figure.id προσδιοριστής Ο προσδιοριστής είναι ένα ή περισσότερα χαρακτηριστικά της κλάσης οι τιμές των οποίων δημιουργούν ξένες μεταξύ τους ομάδες στη σχετιζόμενη κλάση τις περισσότερες φορές μειώνουν την πολλαπλότητα σε 1 Χρησιμοποιείται σε συσχετίσεις 1:Μ ή Ν:Μ καί ουσιαστικά μετατρέπει τη συσχέτιση σε 1:1

ΣΥΣΧΕΤΙΣΗ ΔΙΑΖΕΥΞΗΣ (OR-Association) Ασφαλιστική εταιρεία 1 0..* Συμβόλαιο ασφάλειας 0..* 0..* {or} 1..* 1..* Άτομο Εταιρεία Η συσχέτιση διάζευξης: θέτει περιορισμό σε δύο ή περισσότερες συσχετίσεις εξασφαλίζει ότι μόνο μια από τις συσχετίσεις είναι έγκυρη κάθε φορά

ΤΑΞΙΝΟΜΗΜΕΝΗ ΣΥΣΧΕΤΙΣΗ (Οrdered Association) Συμβόλαιο Ασφάλειας 0..* {ταξινομημένο κατά αύξουσα σειρά χρόνου} 1..* Πελάτης Πολλές φορές είναι απαραίτητο να προσδιορισθεί κάποια συγκεκριμένη σειρά ανάμεσα στ’αντικείμενα. Αυτό φανερώνεται τοποθετώντας {ταξινομημένο } ανάμεσα στους συνδέσμους, και κοντά στην κλάση του αντικειμένου που Ταξινομείται. Το default είναι μη ταξινομημένο.

ΚΛΑΣΗ ΣΥΣΧΕΤΙΣΗΣ (1/3) (Association class) Ουρά 4 Έλεγχος ανελκυστήρα ανελκυστήρας * Κουμπί Η κλάση συσχέτισης Ουρά μπορεί να επεκταθεί με διάφορες λειτουργίες όπως πρόσθεση αιτήσεων στην ουρά,ανάγνωση και μετακίνηση μηνυμάτων από την ουρά. Αν προστίθενται λειτουργίες ή γνωρίσματα στην κλάση συσχέτισης, αυτά αναπαρίστανται όπως σε μια κανονική κλάση

ΚΛΑΣΗ ΣΥΣΧΕΤΙΣΗΣ (2/3) (Association class) Απαραίτητη σε περιπτώσεις συσχετίσεων M:N Αυξάνει την ευελιξία σε περίπτωση συσχετίσεων 1:1 και 1:N 1..* Participation User * Appointment isRelocatable 1 * Company Person name address name socSec# address loan position Employment loan position

ΚΛΑΣΗ ΣΥΣΧΕΤΙΣΗΣ (3/3) (Association class) ΚΛΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ  ΚΛΑΣΗ ΣΥΣΧΕΤΙΣΗΣ Person Project Employment qualificationProfile hours dailyRate 1 * * * Person Project Employment Κάποιος μπορεί να έχει πάνω από μία σχέσεις employment για το ίδιο project. qualificationProfile hours dailyRate

(Ternary association) 1 0..* Ασφαλιστική εταιρεία Συμβόλαιο ασφάλισης ασφαλιστής 0..* 0..1 Πολιτική ασφάλισης 1..* ασφαλιζόμενος Πελάτης Η τριαδική (Ν-αδική) συσχέτιση συσχετίζει τρεις (ή Ν) κλάσεις. Όπως φαίνεται από το σχήμα ο πελάτης μπορεί να έχει μηδέν εως πολλά συμβόλαια ασφάλισης, κάθε ένα από τα οποία έχει μηδέν εως μία πολιτική ασφάλισης και σχετίζεται με μια ασφαλιστική εταιρεία.

ΣΥΝΑΘΡΟΙΣΗ (ΑGGREGATION) Η συνάθροιση είναι μία ειδική περίπτωση συσχέτισης με τις ακόλουθες ιδιότητες: Μεταβατικότητα: Αν τα αντικείμενα της κλάσης C είναι part-of των αντικειμένων της κλάσης B και η B είναι part-of Α ΤΟΤΕ η C είναι part-of Α Αντι-συμμετρικότητα: Αν η Β είναι part-of Α ΤΟΤΕ η Α δεν είναι part-of B

ΚΑΝΟΝΙΚΗ ΣΥΝΑΘΡΟΙΣΗ (NORMAL AGGREGATION) Στόλος * Πολεμικά πλοία περιέχει H συνάθροιση εκφράζεται με τις λέξεις “Περιέχει”, “Αποτελείται-από” ή “Είναι μέρος του (part of)” Ο στόλος αποτελείται από πολλά πλοία. Ορισμένα πλοία μπορούν να μετακινηθούν, ο στόλος όμως εξακολουθεί να υφίσταται. Όπως το ίδιο συμβαίνει κι αν προσθέσουμε κάποια πλοία. Τα τμήματα (πλοία) συνθέτουν το σύνολο (στόλος). Τα τμήματα υπάρχουν, έστω κι άν το σύνολο καταστραφεί.

ΔΙΑΜΟΙΡΑΖΟΜΕΝΗ ΣΥΝΑΘΡΟΙΣΗ ΔΙΑΜΟΙΡΑΖΟΜΕΝΗ ΣΥΝΑΘΡΟΙΣΗ (SHARED AGGREGATION) * Ομάδα * Άτομο Αποτελείται από Mία συνάθροιση είναι διαμοιραζόμενη, αν η πολλαπλότητα στο μέρος του όλου είναι παραπάνω από 1. Τα μέρη είναι ανεξάρτητα του όλου καί μπορούν να αποτελούν μέρη καί άλλων αντικειμένων του ίδιου τύπου. Το παραπάνω μοντέλο αποτελεί ένα παράδειγμα διαμοιραζόμενης συνάθροισης, όπου τα άτομα είναι τα διαμοιραζόμενα μέρη. Μια ομάδα αποτελείται από διάφορα μέλη. Ένα άτομο μπορεί να είναι μέλος πολλών ομάδων. Yλοποιείται όπως καί η συσχέτιση, δηλαδή με κάποιο reference από το μέρος στο όλον.

ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) Παρουσιάζει ισχυρή ιδιοκτησία των τμημάτων της Τα τμήματα που «ζουν» μέσα στο σύνολο θα καταστραφούν , όταν καταστραφεί και το σύνολο Η πολλαπλότητα στην πλευρά του συνόλου (wholeside) πρέπει να είναι 0..1 , ενώ η πολλαπλότητα στην πλευρά τμήματος (partside) είναι οποιοδήποτε διάστημα

ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) 1ος τρόπος απεικόνισης * Κείμενο Παράθυρο * Κουμπί * Μενού Το διαμάντι δείχνει τη συνάθροιση σύνθεσης.Το παράθυρο περιέχει πολλά μενού, κουμπιά και κείμενα.Όλοι οι τύποι της συνάθροισης μπορούν να έχουν ένα όνομα.

ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) 2ος τρόπος απεικόνισης * Κείμενο περιέχει Παράθυρο * Κουμπί * Μενού Αν υπάρχουν περισσότερα από ένα τμήματα του ίδιου συνόλου, αυτά μπορούν να σχεδιαστούν σαν ένα δέντρο συγχωνεύοντας την κατάληξή τους σ’ένα κοινό τέλος.Μια συνάθροιση έχει μόνο ένα όνομα ρόλου κι αυτό είναι στην πλευρά του τμήματος.

ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) 3ος τρόπος απεικόνισης Παράδειγμα: μιά ταινία με τους Laurel and Hardie, πάντα περιλαμβάνει τους ρόλους των Oliver Hardy and Stan Laurel Laurel and Hardy Movie Laurel and Hardie Movie Oliver Hardy 1 Laurel and Hardy Movie Actor Stan Laure 1 Oliver Hardy:Actor Stan Laurel:Actor Stan laurel Oliver Hardy Actor

ΣΥΝΑΘΡΟΙΣΗ ΣΥΝΘΕΣΗΣ (Composition Aggregation) 4ος τρόπος απεικόνισης Παράθυρο Κείμενο * Κουμπί * Μενού * Οι κλάσεις των τμημάτων βρίσκονται μέσα στην κλάση του συνόλου. Η πολλαπλότητα των τμημάτων σημειώνεται σε κάθε κλάση στην πάνω δεξιά γωνία

ΔΙΑΓΡΑΜΜΑ ΣΥΝΑΘΡΟΙΣΗΣ ΣΥΝΘΕΣΗΣ (Composition Aggregation) ακόμη ένα παράδειγμα Παράθυρο μηνύματος Παράθυρο μηνύματος information ok [0..1] : Button cancel [0..1] : Button information[0..1] :Icon ok cancel 0..1 0..1 0..1 Κουμπί Εικονίδιο Το παράθυρο μηνυμάτων αποτελείται από μηδέν ή ένα OK κουμπιά ,μηδέν ή ένα cancel κουμπιά ή ένα εικονίδιο πληροφορίας.Μια συνάθροιση σύνθεσης αναπαρίσταται όπως τα γνωρίσματα σε μια κλάση.Η πολλαπλότητα φαίνεται μέσα στις αγκύλες.

3. Σχέσεις μεταξύ Κλάσεων 3.0 Ορισμοί 3.1 Συσχέτιση (Association) 3.2 Γενίκευση-Εξειδίκευση (Generalization-Specialization) 3.3 Εξάρτηση (Dependency) 3.4 Ραφινάρισμα/Εκλέπτυνση (Refinement)

3.2 ΓΕΝΙΚΕΥΣΗ-ΕΞΕΙΔΙΚΕΥΣΗ (GENERALIZATION-SPECIALIZATION) Είναι η σχέση μεταξύ ενός πιο γενικού και ενός πιο εξειδικευμένου στοιχείου To πιο εξειδικευμένο στοιχείο περιέχει επιπλέον πληροφορία Επιτρέπει να γίνεται εξειδίκευση των στοιχείων σε άλλα πιο εξειδικευμένα, συνεπώς ειδικές περιπτώσεις και επεκτάσεις αντιμετωπίζονται ως διαφορετικά στοιχεία Χρησιμοποιείται για κλάσεις, use cases και πακέτα. Στις συσχετίσεις επιτρέπει τον περιορισμό των πιθανών συνδέσμων ανάμεσα σε αντικείμενα των οποίων οι υπερκλάσεις είναι συσχετισμένες.

Γενίκευση Είναι σχέση κατηγοριοποίησης (ταξονομίας) μεταξύ μίας εξειδικευμένης κλάσης και μίας περισσότερο γενικευμένης. η εξειδικευμένη κλάση κληρονομεί όλες τις ιδιότητες της γενικευμένης μπορούν να προστεθούν επιπλέον ιδιότητες ένα στιγμιότυπο της υποκλάσης μπορεί να χρησιμοποιηθεί όπου επιτρέπεται η χρήση της υπερκλάσης επιτρέπεται πολλαπλή κληρονομικότητα

Γενίκευση Όχημα Αυτοκίνητο Βάρκα Φορτηγό Το όχημα είναι μια γενική κλάση (υπερκλάση) που προέρχεται από εξειδικευμένες κλάσεις (υποκλάσεις) μέσω της κληρονομικότητας (γενίκευσης-εξειδίκευσης). Μια κλάση μπορεί να κληρονομήσει από μια κλάση(οπότε είναι υποκλάση σ’ αυτή) ,όπως ταυτόχρονα μπορεί να κληρονομηθεί από κάποια άλλη ( υπερκλάση σ’αυτή)

ΑΝΑΠΑΡΑΣΤΑΣΗ ΠΡΟΗΓΟΥΜΕΝΟΥ ΜΟΝΤΕΛΟΥ ΜΕ ΤΗ ΜΟΡΦΗ ΔΕΝΤΡΟΥ ΜΟΝΤΕΛΟΥ ΜΕ ΤΗ ΜΟΡΦΗ ΔΕΝΤΡΟΥ Όχημα Αυτοκίνητο Βάρκα Φορτηγό Ίδιο μοντέλο με το προηγούμενο ,αλλά η κληρονομικότητα παίρνει τη μορφή ενός δέντρου (μόνο μ’ένα τρίγωνο)

Γενίκευση με περιορισμό (Constrained generalization) Οverlapping: Άδεια γιά Πολλαπλή Κληρονομικότητα Disjoint: Απαγόρευση Πολλαπλής Κληρονομικότητας (default) Complete: Απαγόρευση περαιτέρω εξειδίκευσης των κλάσεων Incomplete: Άδεια περαιτέρω εξειδίκευσης των κλάσεων (default)

Γενίκευση: Αναπαράσταση περιορισμών Κλάση Α Κλάση Α {περιορισμός 1, περιορισμός2..} { περιορισμός1, περιορισμός2, ... } Κλάση Β Κλάση Γ Κλάση Δ Κλάση Β Κλάση Γ Κλάση Δ ΤΡΟΠΟΣ Α ΤΡΟΠΟΣ Β

ΕΠΙΚΑΛΥΨΗ ΚΑΙ ΜΗ ΣΥΝΕΝΩΣΗ (Overlapping and disjoint) ΕΠΙΚΑΛΥΨΗ ΚΑΙ ΜΗ ΣΥΝΕΝΩΣΗ (Overlapping and disjoint) Ζώον { overlapping} Θηλαστικό Ψάρι Αμφίβιο Επικάλυψη σημαίνει ότι οι υποκλάσεις επιτρέπεται να εξειδικευτούν σε μια κοινή υποκλάση (πχ Αμφίβιο), ενώ ακριβώς το αντίθετο φανερώνει η μη συνένωση (disjoint) που είναι καί το default.

ΟΛΟΚΛΗΡΩΜΕΝΗ Η ΜΗ ΟΛΟΚΛΗΡΩΜΕΝΗ ΓΕΝΙΚΕΥΣΗ (Complete or incomplete generalization) Άνθρωπος {ολοκληρωμένη} Άντρας Γυναίκα Όταν σε κάποια γενίκευση υπάρχει ο περιορισμός ολοκληρωμένη, σημαίνει ότι δεν μπορούν να προστεθούν νέες υποκλάσεις. To default είναι η μη ολοκληρωμένη

3. Σχέσεις μεταξύ Κλάσεων 3.0 Ορισμοί 3.1 Συσχέτιση (Association) 3.2 Γενίκευση (Generalization) 3.3 Εξάρτηση (Dependency) 3.4 Ανάλυση/Εκλέπτυνση (Refinement)

(Dependency relationship) 3.3 ΣΧΕΣΗ ΕΞΑΡΤΗΣΗΣ (Dependency relationship) «φίλη» Κλάση Α Κλάση Β Είναι μία σημαντική συσχέτιση μεταξύ δύο κλάσεων ή πακέτων ή use cases, etc. (δηλαδή μεταξύ δύο στοιχείων του μοντέλου UML) Mία αλλαγή στο ανεξάρτητο στοιχείο, επηρεάζει το εξαρτημένο. Παρότι δεν υπάρχει σαφής συσχέτιση μεταξύ των δύο κλάσεων, υπάρχει εξάρτηση Παραδείγματα: Μια κλάση παίρνει το αντικείμενο κάποιας άλλης κλάσης σαν παράμετρο. Μιά κλάση καλεί μία μέθοδο κλάσης μιάς άλλης κλάσης. Όταν χρησιμοποιείται μια ετικέτα όπως στο παράδειγμά μας «φίλη», είναι ένα στερεότυπο που προσδιορίζει το είδος της εξάρτησης.

3.4 REFINEMENT RELATIONSHIP (Σχέση ραφιναρίσματος) Κλάση σχεδιασμού Κλάση ανάλυσης Μιά συσχέτιση refinement υπάρχει μεταξύ δύο διαφορετικών αναπαραστάσεων του ίδιου στοιχείου, αλλά σε διαφορετικό επίπεδο αφαίρεσης ανάμεσα σ’ένα στοιχείο και σε μια κλάση που το υλοποιεί Επίσης χρησιμοποιείται για να μοντελοποιήσει διαφορετικές υλοποιήσεις του ίδιου πράγματος.

Περιεχόμενα Κεφαλαίου 1. Γενικοί Ορισμοί 2. Κλάσεις καί η Περιγραφή τους 3. Σχέσεις Μεταξύ Κλάσεων 4. Αφαιρετικές Κλάσεις 5. Προχωρημένες Έννοιες

4. Αφαιρετική Κλάση Όχημα Αυτοκίνητο Βάρκα Σπορ Επιβατηγό Φορτηγό Ιστιοπλοϊκή Πλοίο Μηχανοκίνητη Mια ιεραρχία κλάσεων για οχήματα. Η κλάση Αυτοκίνητο είναι υποκλάση στο όχημα, αλλά υπερκλάση στο σπορ αυτοκίνητο,στο επιβατηγό και στο φορτηγό. Μια abstract κλάση δεν επιτρέπεται να έχει αντικείμενα, χρησιμοποιείται μόνο για να κληρονομείται από τις υποκλάσεις

Χαρακτηριστικά αφαιρετικής μεθόδου Δεν υπάρχει μέθοδος υλοποίησης στην κλάση που εμφανίζεται η συγκεκριμένη λειτουργία Μια κλάση που έχει τουλάχιστον μια abstract μέθοδο, είναι μια abstract κλάση. Αν μια κλάση, που κληρονομεί από μια κλάση που έχει τουλάχιστον μια abstract μέθοδο, δεν μπορεί να υλοποιήσει αυτές τις μεθόδους, τότε γίνεται και η ίδια μια abstract κλάση

Αφαιρετική κλάση καί αφαιρετική μέθοδος Παράδειγμα Όχημα {abstract} Drive(){abstract} Βάρκα Aυτοκίνητο Drive() Drive() Drive () αρχίζει την προπέλα Drive() αρχίζει τους τροχούς

Ορισμός αφαιρετικών μεθόδων από υποκλάσεις Όχημα {abstract} οδηγεί Άτομο χρώμα Drive(){abstract} Αυτοκίνητο Βάρκα Drive( ) Drive( ) Ένα άτομο οδηγά οχήματα. Όταν καλείται η μέθοδος οδήγησης, η επιλεγόμενη υλοποίηση εξαρτάται από το αν το χρησιμοποιούμενο αντικείμενο είναι αυτοκίνητο ή βάρκα.Το όχημα είναι μια abstract κλάση.

Παράδειγμα Figure {abstract} Figures * #position:Pos Draw(){abstract} Group Polygon Draw() Draw( )

Γενίκευση με αφαιρετική κλάση καί προσδιοριστή Vehicle {abstract} #position:Pos Drive( ) {abstract} Draw(){abstract} Propulsion Propulsion Car Boat Drive() Drive( )

5. Προχωρημένες Έννοιες 5.1 Περιορισμοί καί Κανόνες Παραγωγής (Constraints and Derivation Rules) 5.2 Διασύνδεση (Interface) 5.3 Πακέτα (Packages) 5.4 Πρότυπα (Τemplates)

5.1 Περιορισμοί και κανόνες παραγωγής (Constraints and derivation rules) Oι περιορισμοί θέτουν τα όρια σ’ ένα μοντέλο. Παραδείγματα περιορισμών είναι η συσχέτιση διάζευξης, ταξινομημένη συσχέτιση, περιορισμοί κληρονομικότητας (οverlapping, disjoint ...) κτλ. Οι κανόνες παραγωγής περιγράφουν τον τρόπο που μπορούν να προέλθουν διάφορα πράγματα, π.χ. η ηλικία ενός ατόμου (αφαίρεση ημερομηνίας γέννησης από την τρέχουσα ημερομ). Οι περιορισμοί καί οι κανόνες εφαρμόζονται κυρίως σε: χαρακτηριστικά, συσχετίσεις, κληρονομικότητα, ρόλους καί χρονικούς περιορισμούς στα δυναμικά μοντέλα Η γενίκευση (generalization) έχει μόνο περιορισμούς όχι κανόνες παραγωγής (derivations). Οι περιορισμοί είναι οι τέσσερεις που προαναφέρθηκαν (overlapping, disjoint, complete, incomplete)

Αναπαράσταση περιορισμών καί κανόνων παραγωγής Αναπαράσταση περιορισμών καί κανόνων παραγωγής Αναπαρίστανται ανάμεσα σε αγκύλες { } κοντά στο τμήμα του μοντέλου που αφορούν ή ανάμεσα σε παρενθέσεις σ’ένα σημείωμα που συνδέεται με το τμήμα του μοντέλου που αφορά

Συσχέτιση με περιορισμό 1…* Μέλος του 1 Πολιτικό Κόμμα Πολιτικός {υποσύνολο} 1 Αρχηγός Κόμματος 1

Περιορισμοί σε Χαρακτηριστικά Invoice + amount : Real + date :Date = Current date + customer : String - number of invoices : Integer +status :Status = Unpaid {unpaid,paid}

Παραγώμενο Χαρακτηριστικό καί Κανόνας Παραγωγής Προϊόν Τιμή κόστους Τιμή πώλησης /κέρδος { κέρδος = τιμή πώλησης - τιμή κόστους }

5.2 Διασύνδεση (Interface) Γενικά χαρακτηριστικά Το interface περιγράφεται σαν ένα σύνολο από αφαιρετικές μεθόδους/λειτουργίες, δηλαδή σαν ένας αριθμός υπογραφών. Οι αφαιρετικές αυτές μέθοδοι προσδιορίζουν μια συμπεριφορά, η οποία υποστηρίζεται ή υλοποιείται από κάποιο στοιχείο (κλάση, πακέτο, component) του μοντέλου Το interface παριστάνεται σχηματικά σαν ένας μικρός κύκλος με κάποιο όνομα που συνδέεται με το στοιχείο του μοντέλου που το υποστηρίζει ή το υλοποιεί Το προγραμματιστικό ισοδύναμο είναι τα OLE/COM ή τα Java interfaces, όπου ένα interface μπορεί να περιγραφεί ανεξαρτήτως κάποιας κλάσης καί στη συνέχεια κάποιες κλάσεις (ή components ή πακέτα) μπορούν να επιλέξουν να το υλοποιήσουν

Σχηματικό παράδειγμα ενός interface Storable Κλάση Α Κλάση Β Runnable «Interface» Runnable {abstract} «Interface» Storable {abstract» Κλάση Γ Runnable Load() {abstract} save(){abstract} Run(){abstract} Τα interfaces προσδιορίζονται σαν κλάσεις με το στερεότυπο «interface» και περιέχουν τις abstract λειτουργίες που πρέπει να υλοποιήσουν οι κλάσεις. H κλάση Α υλοποιεί τα interface Runnable και Storage. H κλάση Γ υλοποιεί το interface Runnable. H Β χρησιμοποιεί το interface Runnable και Storage από την Α και το Runnable από τη Γ. Επιτρέπεται η κληρονομικότητα μεταξύ των interfaces

5.3 ΠAKETA (Packages) Ορίζεται σαν ένας μηχανισμός γενικού σκοπού για οργάνωση στοιχείων σε σημασιολογικές ομάδες Tα πακέτα έχουν νόημα κατά τη διάρκεια της μοντελοποίησης. Δεν μεταφράζονται σε εκτελέσιμο κώδικα. Οι επιτρεπόμενες συσχετίσεις ανάμεσα στα πακέτα είναι εξάρτηση, ραφινάρισμα (refinement) και γενίκευση Το πακέτο έχει ομοιότητες με την συνάθροιση (aggregation). Aν το πακέτο κατέχει τα περιεχόμενα του, τότε είναι μια σύνθετη συνάθροιση (composition aggregation) ,ενώ αν αναφέρεται στα περιεχόμενά του (δηλαδή εισάγει στοιχεία από άλλα πακέτα) είναι μια διαμοιραζόμενη συνάθροιση (shared aggregation) Πολλές φορές χρησιμοποιείται ο όρος ΥΠΟΣΥΣΤΗΜΑ αντί γιά τον όρο πακέτο

ΠΑΡΑΔΕΙΓΜΑΤΑ ΠΑΚΕΤΩΝ ΚΑΙ ΟΙ ΜΕΤΑΞΥ ΤΟΥΣ ΕΞΑΡΤΗΣΕΙΣ Υποσύστημα Δ Ύποσύστημα Α Υποσύστημα Β Υποσύστημα Γ Υποσύστημα Ε Το υποσύστημα Ε εξαρτάται από το υποσύστημα Β. Το υποσύστημα Γ εξαρτάται από τα υπο- συστήματα Β και Δ.Τα υποσυστήματα Β, Γ και Ε είναι στο εσωτερικό του υποσυστήματος Α. Όλα τα υποσυστήματα εκπροσωπούνται από πακέτα.

ΕΙΣΑΓΩΓΗ ΠΑΚΕΤΟΥ To πακέτο Ζ (που βρίσκεται μέσα στο πακέτο W) Z A B W::Z To πακέτο Ζ (που βρίσκεται μέσα στο πακέτο W) εισάγεται (is imported) μέσα στο πακέτο A . Το πακέτο Β εξαρτάται από το εισαγόμενο πακέτο Ζ

Ακόμη ένα παράδειγμα X Class P Class S I A B D Ένα πακέτο μπορεί να έχει ένα interface που «δημοσιοποιεί» τη συμπεριφορά του Το πακέτο Α υλοποιεί το interface I H κλάση S του πακέτου Χ εξαρτάται από το Ι στο πακέτο Α

Η ΟΡΑΤΟΤΗΤΑ (Visibility) ΤΩΝ ΠΑΚΕΤΩΝ Κατηγορίες Δημόσια ορατότητα :Kι άλλα στοιχεία μπορούν να δουν και να χρησιμοποιήσουν τα περιεχόμενα του πακέτου. Ιδιωτική ορατότητα : Μόνο το πακέτο που κατέχει ένα στοιχείο ή το πακέτο που εισάγει το στοιχείο μοντέλου μπορεί να το χρησιμοποιήσει. Προστατευμένη ορατότητα : Μόνο το πακέτο που κατέχει ή εισάγει το στοιχείο μοντέλου μπορεί να το χρησιμοποιήσει, καθώς καί άλλα πακέτα που κληρονομούν από αυτό. Ορατότητα υλοποίησης : Παρόμοια με την ιδιωτική, αλλά τα στοιχεία μοντέλου που έχουν εξάρτηση από ένα πακέτο δεν μπορούν να χρησιμοποιήσουν τα στοιχεία μέσα στο πακέτο αν αυτό έχει ορατότητα υλοποίησης.

Γενικά χαρακτηριστικά 5.4 Πρότυπο (Template) Γενικά χαρακτηριστικά Το template είναι μια κλάση με παραμέτρους, δηλαδή μια κλάση που ο οριστικός της προσδιορισμός γίνεται μέσω του ορισμού των παραμέτρων του template. Oι παράμετροι του template μπορεί να είναι είτε πρωτογενείς τύποι όπως ακέραιοι, boolean ή ακόμη και κλάσεις Χρησιμοποιείται γιά να ορίσει ομάδες κλάσεων

ΠΑΡΑΔΕΙΓΜΑΤΑ ΤΩΝ TEMPLATES T,n : integer Array <Car,100> Array «bind» <Color,50> ColorΑrray To Αrray είναι μια κλάση με παραμέτρους το T (κλάση) και το n (ακέραιος). Φαίνονται δύο στιγμιότυπα. Το πρώτο παριστάνεται μόνο με το όνομα του template και τις παραμέτρους εντός του συμβόλου κλάσης. Το δεύτερο παριστάνεται με μια σχέση refinement από την κλάση (που έχει προκύψει σαν στιγμιότυπο του template) στο template.

6. Ποιότητα του Μοντέλου Tί είναι ένα Καλό Μοντέλο; Σχετικό με τον προς μελέτη χώρο Συγκεκριμένο Συνεπές Πιστοποιήσιμο, Ελέγξιμο Συντηρήσιμο Πώς μπορούμε να επικοινωνήσουμε με το μοντέλο; Εξυπηρετεί τον σκοπό του; Περιέχει τα πιό σημαντικά στοιχεία; Έχει τα κατάλληλα ονόματα; Συντονισμός των Μοντέλων Πολυπολοκότητα του Μοντέλου

Περίληψη Η επιτυχημένη μοντελοποίηση δίνει λεπτομέρειες γιά το αντικείμενο της μελέτης Γιά τη μοντελοποίηση συστημάτων χρησιμοποιούνται οι κλάσεις, τα αντικείμενα και οι μεταξύ τους συσχετίσεις. Η UML υποστηρίζει Στατική μοντελοποίηση (με τα διαγράμματα κλάσεων καί αντικειμένων) Δυναμική Μοντελοποίηση (με τα διαγράμματα καταστάσεων, ακολουθίας, αλληλεπίδρασης καί δραστηριοτήτων) Λειτουργική Μοντελοποίηση (με τα use case διαγράμματα) Μοντελοποίηση Υλοποίησης (με τα component καί deployment διαγράμματα) Η UML παρέχει μηχανισμούς μοντελοποίησης, αλλά δεν εγγυάται την κατασκευή ενός σωστού καί ποιοτικού μοντέλου Είναι σημαντικό να δίνεται έμφαση στην ποιότητα του μοντέλου