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

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

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

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

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

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

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Τεχνολογία Λογισμικού

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

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

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

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

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

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

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

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

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

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

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

ΑΣΚΗΣΕΙΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (inheritance)

Σύνθεση και Κληρονομικότητα

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

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

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

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

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

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

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

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

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

Σύνθεση και Κληρονομικότητα

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

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

Προγραμματισμός Διαδικτύου

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

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

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

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

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

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

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

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

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

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

POINTERS, AGGREGATION, COMPOSITION

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

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

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

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

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

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

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

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

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

UML: Unified modelling language

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

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

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

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

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

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

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

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

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

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

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

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

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

(Διαφάνειες Νίκου Βιδάκη)

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

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

Προγράμματα με δομή Κληρονομικότητας


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

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

Transcript:

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

Class Diagrams Διαγράμματα Κλάσεων

Άξονες Μοντελοποίησης Λειτουργικότητα functionality Τι κάνει το σύστημα; Ποιες λειτουργίες υποστηρίζει; Ανάλυση απαιτήσεων Περιγραφές από κείμενο Στατικά διαγράμματα Πώς είναι οργανωμένα τα συστατικά του τμήματα; Δυναμική συμπεριφορά Πώς ανταποκρίνεται και από ποιες καταστάσεις περνάει; Δομή structure Συμπεριφορά behaviour

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

Συσχέτιση γενίκευσης Animal Amhibian Mammal Reptile Dog Cat Cow Ο σκύλος, η γάτα, η αγελάδα «είναι ένα είδος» Θηλαστικού

Συσχέτιση γενίκευσης Vehicle Car Boat Sports car Passenger car Truck Sailing boat Motor boat Cargo ship Οι κλάσεις Vehicle, Car και Boat μπορούν να οριστούν ως αφαιρετικές κλάσεις. Μία αφαιρετική κλάση είναι αυτή που δεν έχει αντικείμενα, δεν μπορεί να έχει στιγμιότυπα

Τι κληρονομείται Σε μια ιεραρχία κληρονομικότητας, όλα τα ιδιοχαρακτηριστικά και οι μέθοδοι κληρονομούνται από μια υπερκλάση σε όλες τις υποκλάσεις της. Στο διάγραμμα κλάσεων, προσδιορίζονται μόνο οι νέες ιδιότητες και οι νέες μέθοδοι που έχουν προστεθεί σε αυτές που κληρονομούνται. Παράδειγμα: Οι υπάλληλοι μπορεί να πληρώνονται με την ώρα ή να είναι μισθωτοί.

Προστατευμένες ιδιότητες Συνήθως οι ιδιότητες προσδιορίζονται ως ιδιωτικές (private) για λόγους που επιβάλλει η ενθυλάκωση. Έτσι, οι ιδιότητες είναι ορατές στο εσωτερικό της κλάσης και όχι έξω από αυτή. Στα πλαίσια μιας ιεραρχίας κληρονομικότητας απαιτείται ασθενέστερος περιορισμός της ορατότητας. Για το λόγο αυτό οι ιδιότητες προσδιορίζονται ως προστατευμένες (protected), δηλαδή ως ορατές στο εσωτερικό της κλάσης και σε όλες τις υποκλάσεις της.

Λάθος χρήση κληρονομικότητας Πρέπει πάντοτε να εφαρμόζεται και να ακολουθείται ο κανόνας είναι ένα είδος για την κληρονομικότητα. Τρία συνηθισμένα λάθη: Το τρίγωνο που απεικονίζει την κληρονομικότητα δείχνει προς λάθος κατεύθυνση. Γίνεται χρήση κληρονομικότητας, ενώ θα έπρεπε να γίνει χρήση άλλης σχέσης (συσσώρευσης). Χρήση κληρονομικότητας εκεί που δεν πρέπει, π.χ. κληρονομικότητα της κλάσης Άτομο (Person) από την κλάση Διεύθυνση (Address).

Συσχέτιση γενίκευσης Person -name: String -age: int +setname(name : String) +getname() : String +setage(age : int) +getage() : int +tostring() : String Η κλάση «Person» επεκτείνεται για να δημιουργηθεί η υποκλάση «Student» Η κλάση «Student» κληρονομεί όλες τις ιδιότητες και τις λειτουργίες της από την υπερκλάση της Student -fieldofstudy : String +setfieldofstudy(fieldofstudy : String) +getfieldofstudy() : String +tostring() : String Σύμβολο γενίκευσης: βέλος από την ειδική (απογονική) στη γενική κλάση (γονική)

Συσχέτιση γενίκευσης Person -name: String -age: int +setname(name : String) +getname() : String +setage(age : int) +getage() : int +tostring() : String Προσθέτει επίσης και μία λειτουργία (και την αντίστοιχη ιδιότητα) που επιτρέπει την ανάκτηση του πεδίου σπουδών του φοιτητή (fieldofstudy) Student -fieldofstudy : String +setfieldofstudy(fieldofstudy : String) +getfieldofstudy() : String +tostring() : String

Συσχέτιση γενίκευσης Person -name: String -age: int +setname(name : String) +getname() : String +setage(age : int) +getage() : int +tostring() : String Η κλάση Person» περιέχει λειτουργία που επιστρέφει κάποιες πληροφορίες με μορφή κειμένου (String) για ένα άτομο: tostring Η λειτουργία αυτή δηλώνεται και στην κλάση «Student». Student -fieldofstudy : String +setfieldofstudy(fieldofstudy : String) +getfieldofstudy() : String +tostring() : String

Συσχέτιση γενίκευσης -name: String -age: int +setname(name : String) +getname() : String +setage(age : int) +getage() : int +tostring() : String Student Person -fieldofstudy : String Τι σημαίνει? Η λειτουργία στην κλάση «Student» υπερβαίνει (overrides) τη λειτουργία της κλάσης «Person» για τα αντικείμενα που είναι φοιτητές: όταν δηλαδή καλούμε τη λειτουργία αυτή σε αντικείμενα «Person», τότε αν το αντικείμενο είναι όντως «Person» θα κληθεί η λειτουργία της υπερκλάσης ενώ αν είναι «Student» θα κληθεί η λειτουργία της υποκλάσης +setfieldofstudy(fieldofstudy : String) +getfieldofstudy() : String +tostring() : String

Συσχέτιση γενίκευσης Κλάσεις «Person» και «Student» σε Java Η κλάση «Student» δηλώνεται ως υποκλάση της κλάσης «Person» με τη χρήση της φράσης extends στη δήλωσή της, Η κλάση «Student» υπερβαίνει τη μέθοδο tosiring της υπερκλάσης της δηλώνοντας τη μέθοδο tostring εκ νέου public class Person { protected String name; // όνομα ατόμου private int age; // ηλικία ατόμου // Κατασκευαστής public Person() { }

Συσχέτιση γενίκευσης public void setname(string name) { this.name = name; } // Μέθοδος που θέτει το όνομα public void setage{int age) { // Μέθοδος που θέτει την ηλικία this.age = age; } public String getnameo { // Μέθοδος ανάκτησης του ονόματος return name; } public int getage() {// Μέθοδος ανάκτησης ηλικίας return age; } // Μέθοδος επιστροφής πληροφοριών για το άτομο σε αλφαριθμητ. Μορφή public String tostring() { return "Είμαι ο " + name + " και είμαι" + age + " ετών. " ;

Συσχέτιση γενίκευσης public class Student extends Person { private String fieldofstudy; // To Πεδίο σπουδών του φοιτητή // Μέθοδος ανάθεσης του πεδίου σπουδών public void setfieldofstudy (String fieldofstudy) { this.fieldofstudy = fieldofstudy; } // Μέθοδος ανάκτησης του πεδίου σπουδών public String getfield() { } return fieldofstudy; //Νέα δήλωση (υπέρβαση) της μεθόδου tostring ειδικά για τους φοιτητές public String tostring() { } return "Είμαι ο " + name + " και είμαι " + getage() + " ετών. + "Σπουδάζω " + fieldofstudy; }

Υπερκαλυπτόμενη γενίκευση Vehicle Car Boat Amphibian Η κλάση Amphibian μπορεί να κληρονομήσει χαρακτηριστικά και λειτουργίες από δύο υποκλάσεις οι οποίες κληρονομούν από μία υπερκλάση

Πλήρη γενίκευση Person (complete) Man Woman Σε μία πλήρη γενίκευση δεν επιτρέπεται να προστεθεί άλλη υποκλάση, όλες οι επιτρεπτές υποκλάσεις έχουν οριστεί. Το αντίθετο είναι μία ελλειπής γενίκευση όπου επιπλέον υποκλάσεις επιτρέπεται να προστεθούν στο μέλλον. Συνήθως οι σχέσεις γενίκευσης είναι ελλειπείς.

Συσσώρευση και σύνθεση Συσσώρευση (aggregation) και σύνθεση (composition) : δύο ειδικές περιπτώσεις συσχετίσεων Yποδηλώνουν τη συσχέτιση μίας κλάσης με κάποια άλλη κλάση που αποτελεί μέρος της Συσχέτιση όλου και μερών

Συσσώρευση (Aggregation) Μία κλάση αποτελεί συλλογή από άλλες κλάσεις: «Αποτελείται από» «Περιέχει» «Περιλαμβάνει» «Έχει» Παράδειγμα: PC monitor, keyboard, tower Συμβολίζεται με μια συσχέτιση από το όλο προς το μέρος, στην οποία τοποθετείται ένας άσπρος ρόμβος στην πλευρά του όλου (aggregating entity)

Συσσώρευση (Aggregation) Ο προσωπικός υπολογιστής (η κλάση «PC») αποτελείται από μία οθόνη (κλάση «Monitor»), ένα πληκτρολόγιο (κλάση «Keyboard») και μία κεντρική μονάδα (κλάση «Tower») Monitor PC Keyboard Tower

Συσσώρευση (Aggregation) Wheel Person * members Car * Club Η κλάση «Club» αποτελεί συσσώρευση της κλάσης «Person»

Σύνθεση (Composition) Σε τι διαφέρει από συσχέτιση??? Iσχυρή μορφή συσχέτισης μεταξύ των κλάσεων: το όλο περιέχει αποκλειστικά τα μέρη του, ΔΕΝ ΜΠΟΡΕΙ κάποιο άλλο όλο να περιέχει το ίδιο αντικείμενο το αντικείμενο-τμήμα ανήκει μόνο σε ένα αντικείμενο-όλο! υπάρχει μια σχέση ''ζωής και θανάτου" μεταξύ του όλου και των μερών του: τα μέρη δημιουργούνται και καταστρέφονται ταυτόχρονα με το όλο Συμβολίζεται με μια συσχέτιση από το όλο προς το μέρος, στην οποία τοποθετείται ένας μαύρος ρόμβος στην πλευρά του όλου (aggregating entity)

Συσσώρευση και σύνθεση Σε τι διαφέρουν μεταξύ τους??? Η συσσώρευση χρησιμοποιείται όταν οι επιμέρους κλάσεις έχουν διάρκεια ζωής ανεξάρτητη από τη σύνθετη κλάση! Μία ρόδα μπορεί να υπάρξει και ανεξάρτητα από ένα αυτοκίνητο! Η σύνθεση χρησιμοποιείται όταν οι επιμέρους κλάσεις έχουν διάρκεια ζωής που εξαρτάται και συμπίπτει με αυτή της σύνθετης κλάσης! Δηλαδή, διαγραφή του όλου συνεπάγεται διαγραφή των μερών του!

Σύνθεση (Composition) Ένα πολύγωνο (κλάση «Polygon») συσχετίζεται μέσω σύνθεσης με τα σημεία (κλάση «Point») που αποτελούν τις κορυφές του Polygon corners 3..* Point

Σύνθεση (Composition) Γιατί σύνθεση??? Γιατί ακόμη και στην περίπτωση που δύο πολύγωνα έχουν τις ίδιες γωνίες, εξακολουθούν να είναι δύο διαφορετικά πολύγωνα!!! Polygon corners 3..* Point

Σύνθεση (Composition) Η μετακίνηση σε ένα πολύγωνο θα πρέπει να συνεπάγεται τη μεταβολή των δικών του σημείων, που είναι οι κορυφές του ΟΧΙ, όμως και για κάποιο άλλο πολύγωνο το οποίο τυχαίνει να έχει κάποιες ή όλες τις κορυφές ίδιες!!! Polygon corners 3..* Point

Σύνθεση (Composition) Η διαγραφή ενός πολυγώνου συνεπάγεται τη διαγραφή των σημείων του, που είναι οι δικές του κορυφές ΟΧΙ όμως και για άλλα πολύγωνα που τυχόν έχουν για τις γωνίες τους τις ίδιες τιμές με το πολύγωνο που διαγράφεται Polygon corners 3..* Point

Παράδειγμα με συσσώρευση & σύνθεση

Παράδειγμα με σύνθεση Ένα κτίριο αποτελείται από ένα ή περισσότερα δωμάτια και ένα δωμάτιο μπορεί να αποτελείται από μερικά υποδωμάτια

Σύνθεση... Κανόνας του "part of Αν έχει νόημα να πούμε ότι κάτι είναι μέρος κάποιου άλλου, τότε πολύ πιθανή η σύνθεση! Ένα δωμάτιο είναι μέρος ενός κτιρίου! ΑΛΛΑ μία διεύθυνση δεν είναι μέρος ενός ανθρώπου! If in doubt, leave it out!!!!

Συσσώρευση και σύνθεση Έστω ένα πολύγωνο που αποτελείται από 3 σημεία: p1, p2, p3. Ποιο όμως είναι; Πώς θα δηλώσουμε ότι η σειρά των σημείων έχει σημασία???? Polygon 3..* Point -X:int -Y: int

Συλλογές από πλειότιμα άκρα συσχετίσεων Πλειότιμο άκρο: το πάνω όριο της πολλαπλότητας του άκρου είναι > 1 (π.χ. *) Σημαίνει σύνολο, δηλαδή απουσία σειράς ή διπλοεμφανίσεων (duplicates) Μπορούμε να ορίσουμε τι θέλουμε: {set} : απουσία σειράς, απουσία διπλοεμφανίσεων {ordered set} : τα αντικείμενα έχουν σειρά, απουσία διπλοεμφανίσεων {bag}: επιτρέπονται διπλοεμφανίσεις (ή πολλές εμφανίσεις) αντικειμένων {list} ή {sequence}: τα αντικείμενα έχουν σειρά και μπορεί να υπάρχουν επαναλήψεις

Συλλογές από πλειότιμα άκρα συσχετίσεων {ordered set} : τα αντικείμενα έχουν σειρά, απουσία διπλοεμφανίσεων Polygon 3..* {ordered set} Point -X:int -Y: int

Συλλογές από πλειότιμα άκρα συσχετίσεων Car 3..* {set} Wheels Triangle 3 {set} Point Polygon 3..* {ordered set} Point Rectangle 4 {ordered set} Point Text 1..* {list} Word

Αυτοπαθής συσχέτιση(reflexive association) Μία κλάση μπορεί να συσχετίζεται και με τον εαυτό της με μία αυτοπαθή συσχέτιση. Πώς??? Οι κλάσεις είναι αφαιρέσεις! Η κλάση «Employee» μπορεί να συσχετίζεται με τον εαυτό της μέσω του ρόλου manager/manages Όταν μία κλάση συσχετίζεται με τον εαυτό της: ένα στιγμιότυπο της κλάσης συσχετίζεται με ένα άλλο στιγμιότυπο της ίδιας κλάσης Employee firstname:string lastname:string -manages 0..* 1 -manager Ένα στιγμιότυπο της κλάσης «Employee» μπορεί να είναι ο manager ενός άλλου στιγμιότυπου της κλάσης «Employee» Πολλαπλότητα του ρόλου «manages»: 0..* ΑΡΑ ένας Employee μπορεί ναμην έχει άλλους Employees να κάνει manage

Αυτοπαθής συσχέτιση(reflexive association) Node * * Ένα δίκτυο αποτελείται από πολλούς κόμβους (nodes) που συνδέονται μεταξύ τους -wife Person 1 1 -husband married to Ένας σύζυγος είναι παντρεμένος με τη σύζυγό του Εάν ένας άνθρωπος δεν είναι παντρεμένος, τότε η σχέση married to δεν μπορεί να εφαρμοστεί

Κλάση συσχέτισης (Association Class) Όταν τα γνωρίσματα ή οι λειτουργίες δεν εμφανίζονται σε μία μεμονωμένη κλάση αλλά στη συσχέτιση μεταξύ δύο κλάσεων Τότε κλάση συσχέτισης! Θέλουμε να διατηρήσουμε πληροφορία που είναι συγκεκριμένη για αυτή τη συσχέτιση, αλλά όχι για κάθε μία από τις κλάσεις που συμμετέχουν Class A Class B Class Y

Κλάση συσχέτισης (Association Class) -name -age Person * employment 0..1 Company -name Συσχέτιση Λεπτομέρειες πρόσληψης ενός υπαλλήλου που εργάζεται σε μία εταιρία -name -age Person * employment 0..1 Company -name Κλάση συσχέτισης Employment -salary -startdate -end Date Κλάση συσχέτισης: μπορεί να υπάρχει το πολύ ένα στιγμιότυπο της κλάσης συσχέτισης μεταξύ οποιουδήποτε ζεύγους συσχετισμένων αντικειμένων

Κλάση συσχέτισης (Association Class) Student -name -student# 0..* 1..* Course -name Κλάση συσχέτισης Enrollment -enrollmentdate Enroll Drop Cancel Κλάση συσχέτισης: μπορεί να υπάρχει το πολύ ένα στιγμιότυπο της κλάσης συσχέτισης μεταξύ οποιουδήποτε ζεύγους συσχετισμένων αντικειμένων ανεξάρτητα από πολλαπλότητες και στα δύο άκρα

Προάγοντας την κλάση συσχέτισης σε κανονική κλάση -name -age Person * employment 0..1 Company -name Employment -salary -startdate -end Date Υλοποίηση κλάσης συσχέτισης σε γλώσσες προγραμματισμού /employer * 0..1 Employment Person Company -salary -name 1 0..1 * 1 -startdate -name -age -end Date

Προάγοντας την κλάση συσχέτισης σε κανονική κλάση -name -age Person Ισοδύναμα??? * employment 0..1 Employment -salary -startdate -end Date Company -name ΟΧΙ!!!!!! Αυτό το διάγραμμα δεν μπορεί να αναπαραστήσει την περίπτωση ενός ατόμου που έχει εργαστεί για την ίδια εταιρία σε διαφορετικές περιόδους /employer * 0..1 Employment Person Company -salary -name 1 0..1 * 1 -startdate -name -age -end Date Αυτό μπορεί!

Κλάση συσχέτισης Περιορισμός κλάσεων συσχέτισης Person * knows * Programming Language Level Person 2..* attends * Meeting Role

Κλάση συσχέτισης Man preacher 1 my husband my wife 1 1 Woman performed services 1..* Marriage date place Μονογαμικός γάμος ως κλάση συσχέτισης Η κλάση συσχέτισης είναι πλήρης κλάση Μπορεί να έχει λειτουργίες, ιδιότητες, συσχετίσεις Παράδειγμα η κλάση «Marriage» μπορεί να έχει μία συσχέτιση με την εκκλησία όπου έγινε η τελετή, ή με το άτομο που τέλεσε την τελετή

Κλάση συσχέτισης Man preacher 1 my husband my wife 1..* 1 Woman performed services 1..* Marriage date place Πολυγαμικός γάμος ως κλάση συσχέτισης Τότε θέλουμε περισσότερα στιγμιότυπα της κλάσης συσχέτισης, τόσα όσες οι συσχετίσεις! Δεν μπορούμε να έχουμε 2 στιγμιότυπα του Marriage που να συσχετίζουν ακριβώς τα ίδια αντικείμενα!

Κλάση συσχέτισης Man preacher 1 my husbands my wife 1..* 1 Woman performed services 1..* Marriage date place Πολυγαμικός γάμος ως κλάση συσχέτισης John: Man one: Marriage Mary: Woman Bob: Man two: Marriage

Πηγές Ε. Κιουντούζης, Μεθοδολογίες Ανάλυσης και Σχεδιασμού Πληροφοριακών Συστημάτων,Εκδόσεις Α.Σταμούλη, Αθήνα 2002 Γιάννης Τζίτζικας. Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων, Πανεπιστήμιο Κρήτης Shari Lawrence Pfleeger. Τεχνολογία Λογισμικού: Θεωρία και Πράξη, τόμος 1, Κλειδάριθμος, Αθήνα, 2003 Leszek A. Maciaszek, Requirements Analysis and System Design (2nd edition), Addison Wesley, 2005 A.Dennis, B. Haley Wixom, D. Tegarden, Systems Analysis and Design with UML Version 2.0 (2nd edition) Wiley, 2005 Booch G., Rumbaugh J., Jacobson I. Unified Modeling Language User Guide. Addison- Wesley Professional 2 Edition, ISBN 0321267974. Pascal Roques, UML in Practice, John Wiley, 2004 UML Fundamentals & OOAD UML 2.0, www.acm.org Αφροδίτη Τσαλγατίδου. Εισαγωγή στη UML, Καποδιστριακό Πανεπιστήμιο Αθηνών Αντικειμενοστρεφής Ανάπτυξη Λογισμικού με τη UML, επιμέλεια Π. Φιτσιλής, Κλειδάριθμος 2006 Ιωάννης Γαβιώτης. Πληροφοριακά Συστήματα Μοντελοποίηση με UML, Πανεπιστήμιο Αιγαίου www.agilemodeling.com/style/classdiagram.htm http://www.devx.com/enterprise/article/28576