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

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

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

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

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

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

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

Ειδικά Θέματα Προγραμματισμού

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

Οντοκεντρικός Προγραμματισμός

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

Οντοκεντρικός Προγραμματισμός

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

Ειδικά Θέματα Προγραμματισμού

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

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

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Ιστορία της μετάφρασης

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

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

Υδραυλικά & Πνευματικά ΣΑΕ

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Οντοκεντρικός Προγραμματισμός

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

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

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

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Πληροφοριακά Συστήματα & Περιβάλλον Ασκήσεις

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

Μηχανολογικό Σχέδιο Ι

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

Δομημένος Προγραμματισμός

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Οντοκεντρικός Προγραμματισμός

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

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

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

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

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

Ηλεκτρονικοί Υπολογιστές

Βάσεις Δεδομένων Ενότητα 4

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

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

Μοντελοποίηση Λογικών Κυκλωμάτων

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

Λογιστικές Εφαρμογές Εργαστήριο

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΑΣ. Ενότητα 3: Αποκατάσταση Εικόνας.

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Εισαγωγή στον Προγραμματισμό με C++

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 11: Vectors (διανύσματα)

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

Οντοκεντρικός Προγραμματισμός

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Εισαγωγή στον Προγραμματισμό με C++

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 2: Μοντελο Συσχετίσεων Οντοτήτων, Μελέτη Περίπτωσης: Η βάση δεδομένων των CD

Διδακτική της Πληροφορικής

Στατιστική Επιχειρήσεων Ι

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

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

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

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

{ int a = 5; { int b = 7; a = b + 3;

4η ιάλεξη. UML ιαγράμματα αλληλεπίδρασης

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

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

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

ΓΕΝΙΚΗ ΚΑΙ ΑΝΟΡΓΑΝΗ ΧΗΜΕΙΑ

Transcript:

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Περιεχόμενα Άδειες Χρήσης... 2 Χρηματοδότηση... 2 1. Περιεχόμενο Μαθήματος... 4 1.1 Περιεχόμενα ενότητας... 4 2. Συσχετίσεις (Associations)... 5 3. Υλοποίηση Συσχέτισης (Association)... 5 4. Συσχετίσεις... 6 4.1 Υλοποίηση Πεδίων Συσχέτισης (Association Attributes)... 6 4.2 Υλοποίηση Συσχέτισης Διπλής Κατεύθυνσης... 6 4.3 Υλοποίηση Δυαδικής Συσχέτισης... 7 4.4 Υλοποίηση Συσχέτισης πολλά-προς-ένα: δεν ενδιαφέρει η ταχύτητα εκτέλεσης 8 4.5 Υλοποίηση Συσχέτισης πολλά-προς-ένα: ενδιαφέρει η ταχύτητα εκτέλεσης 8 4.6 Υλοποίηση Συνάθροισης και Σύνθεσης (Aggregation - Composition)... 9 4.6.1 Συνάθροιση... 10 4.6.2 Σύνθεση... 10 4.7 Δημιουργία ΚΣ... 10 4.8 Δημιουργία Κόμβων... 10 4.9 Προσθήκη κόμβων στο ΚΣ... 11 4.10 Αμφίδρομη επικοινωνία... 11 4.11 Συσχετίσεις του διαγράμματος κλάσεων... 11 4.12 Υλοποίηση πολυμορφισμού... 12 3

ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA Περιεχόμενο Μ 1. Περιεχόμενο Μαθήματος Εβδομάδα Περιεχόμενο 1 η Εισαγωγή στην Αντικειμενοστρεφή Ανάλυση/UML 2 η Rational Unified Process 3 η Περιπτώσεις Χρήσης 4 η Διαγράμματα Κλάσεων 5 η Διαγράμματα Συνεργασίας 6 η Διαγράμματα Ακολουθίας 7 η Πρότυπα Σχεδίασης 8 η Διεργασία ICONIX 9 η Επιχειρηματική Μοντελοποίηση 10 η Υλοποίηση Σχεδίασης με Java 11 η Μετρικές Αντικειμενοστραφούς Σχεδίασης 12 η Επισκόπηση 1.1 Περιεχόμενα ενότητας Στην ενότητα αυτή θα δούμε τις συσχετίσεις και πως μπορούν να υλοποιηθούν στη Java. Στις συσχετίσεις που θα δούμε περιλαμβάνονται η υλοποίηση πεδίων συσχέτισης, συσχέτισης διπλής κατεύθυνσης, δυαδικής συσχέτισης, πολλά προς ένα, συνάθροισης και σύνθεσης. 4

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ 2. Συσχετίσεις (Associations) Μία συσχέτιση έχει όνομα που γράφεται σαν ετικέτα στο μέσο της γραμμής σύνδεσης (ρήμα). Το όνομα φανερώνει το είδος της συσχέτισης. Μία κλάση που μετέχει σε μία συσχέτιση παίζει ένα ρόλο (role) σε αυτήν. Γράφουμε το όνομα του ρόλου (ουσιαστικό) στο τέλος της σχέσης, δηλαδή στο σημείο σύνδεσης με την κλάση. 3. Υλοποίηση Συσχέτισης (Association) Δεν υποστηρίζεται άμεσα από τη Java (όπως π.χ. και η συνάθροιση) Πρέπει όμως να υλοποιείται με τυποποιημένο τρόπο για Εύκολη και επαναλήψιμη υλοποίηση Ομοιομορφία κώδικα Ευκολία κατανόησης από άλλους προγραμματιστές (πρότυπο πρ/σμού!) Τυποποίηση των δοκιμών Εικόνα 1 : Συσχέτιση Πολλαπλότητα (multiplicity) Καθορίζει πόσα αντικείμενα μετέχουν σε μια συσχέτιση (από 0 έως οποιοδήποτε πλήθος). Ακριβώς ένα 1 Μηδέν ή ένα 0..1 Μηδέν ή περισσότερα 0..* Ένα ή περισσότερα 1..* Από..Έως m..n Πολλαπλά διαφορετικά όρια 2, 4..6, 8 5 Εικόνα 2 : Πολλαπλότητα

ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA Μία δυαδική συσχέτιση (ένα προς ένα) συνήθως υλοποιείται με ένα πεδίο σε μία ή και στις δύο κλάσεις που συμμετέχουν στη συσχέτιση Το πεδίο είναι μία αναφορά στο άλλο αντικείμενο Μία συσχέτιση πολλά-προς-πολλά υλοποιείται με o ένα σύνολο αντικειμένων o με ένα μονοδιάστατο πίνακα (array) αντικειμένων (αν τα αντικείμενα έχουν μία προκαθορισμένη σειρά): μπορεί να χρησιμοποιηθεί η κλάση Vector σε μία ή και στις δύο κλάσεις που συμμετέχουν στη συσχέτιση Αν η συσχέτιση είναι μονής κατεύθυνσης αρκεί ένα πεδίο σε μία από τις δύο κλάσεις Αν η συσχέτιση είναι διπλής κατεύθυνσης υπάρχουν διάφοροι τρόποι: 4. Συσχετίσεις 4.1 Υλοποίηση Πεδίων Συσχέτισης (Association Attributes) Αν η συσχέτιση είναι ένα-προς-ένα, τα πεδία της συσχέτισης μπορούν να ανήκουν σε μία από τις δύο κλάσεις Αν η συσχέτιση είναι πολλά-προς-ένα, τα πεδία είναι προτιμότερο να τοποθετηθούν στην κλάση από την πλευρά πολλά Αν η συσχέτιση είναι πολλά-προς-πολλά, είναι καλύτερο να δημιουργηθεί μία κλάση για τη συσχέτιση στην οποία και θα τοποθετηθούν τα πεδία της συσχέτισης 4.2 Υλοποίηση Συσχέτισης Διπλής Κατεύθυνσης 1 ος τρόπος υλοποίησης: Με ένα πεδίο στη μία κλάση και εφαρμόζοντας μία αναζήτηση όταν απαιτείται η εφαρμογή της συσχέτισης από την άλλη κατεύθυνση Συνίσταται όταν o Η συσχέτιση είναι του τύπου πολλά-προς-ένα και διασχίζεται από τα πολλά προς το ένα και o Νέα μέλη προστίθενται συχνά 6

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ 2 ος τρόπος υλοποίησης: Με ένα πεδίο και στις δύο κλάσεις Συνίσταται όταν - Δεν προστίθενται συχνά νέα μέλη - Η ταχύτητα εκτέλεσης του προγράμματος πρέπει να είναι μεγάλη 3 ος τρόπος υλοποίησης: Με την εισαγωγή μίας πρόσθετης κλάσης (associative class) μεταξύ των δύο κλάσεων Συνίσταται όταν - Απαιτείται ευελιξία για μελλοντικές επεκτάσεις και - Η ταχύτητα εκτέλεσης του προγράμματος δεν πρέπει να είναι μεγάλη 4.3 Υλοποίηση Δυαδικής Συσχέτισης Υλοποιείται η συσχέτιση σύζυγος (spouse) για την κλάση Person Private Person spouse; υλοποιεί τη συσχέτιση setspouse(person p) υλοποιεί τη συσχέτιση από τη μία πλευρά getspouse() υλοποιεί τη διάσχιση της σχέσης Public class Person { //Services publicperson(string n, char s, int a) {..code here.} publicperson getspouse() {return spouse;} public void setspouse(person p) {spouse =p ; return; }.. Private String name; Private char sex; Private int age;.. Private Person spouse; } 7

ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA Συσχετίσεις 4.4 Υλοποίηση Συσχέτισης πολλά-προς-ένα: δεν ενδιαφέρει η ταχύτητα εκτέλεσης Public class Person { //services public Person(String n, char s, int a, Person pop, Person mom) { code here } public Person getfather() {return father; } public Person getmother() {return mother; } public Vector getchildren() { need to search for all references to yourself..} private void setfather(person p) {father=p; return;} private void setmother(person p) {mother=p; return;} //Variables private String name; private char sex; private int age;. private Person father; private Person mother; } 4.5 Υλοποίηση Συσχέτισης πολλά-προς-ένα: ενδιαφέρει η ταχύτητα εκτέλεσης Public class Person { //Services public Person(String n, char s, int a, person mom, person dad) {.code here } public Person getfather() {return father;} public Person getmother() {return mother;} public Vector getchildren() {return children;} public boolean removechild(person p) 8

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ {Boolean x = children.remove(p); return x;} public boolean addchild(person p) {Boolean x=children.add(p); return x;} private void setfather(person p) { father=p; if (p.addchild(this) ) then return; else error } privatevoid setmother(person p) { mother=p; if (p.addchild(this) ) then return; else error } //Variables private String name; private char sex; private int age; private Person father; private Person mother; private Vector children; } 4.6 Υλοποίηση Συνάθροισης και Σύνθεσης (Aggregation - Composition) Υλοποίηση ανάλογη με αυτή της συσχέτισης Υπενθυμίζεται ότι Η συνάθροιση είναι μία πιο σθεναρή σχέση συσχέτισης και αναπαριστά μία σχέση Όλου-Μέρους: το Όλο υλοποιείται από το περιέχον αντικείμενο και τα Μέρη από τα περιεχόμενα αντικείμενα Η σύνθεση είναι μία πολύ ισχυρή σχέση Όλου-Μέρους: τα Μέρη δεν μπορούν να υπάρχουν ανεξάρτητα από το Όλο 9

ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA Συσχετίσεις 4.6.1 Συνάθροιση Μονοδιάστατος πίνακας δεικτών -αναφορών σε αντικείμενα Χρησιμοποιείται όταν Τα περιεχόμενα αντικείμενα μπορεί να αντικαθιστώνται από άλλα αντικείμενα Θέλουμε να έχουμε άμεση πρόσβαση στα περιεχόμενα αντικείμενα από το περιέχον αντικείμενο 4.6.2 Σύνθεση Με ξεχωριστά αντικείμενα που ανήκουν στο περιέχον Χρησιμοποιείται επειδή θέλουμε τα περιεχόμενα αντικείμενα να τροποποιούνται μόνο από τις μεθόδους του περιέχοντος αντικειμένου 4.7 Δημιουργία ΚΣ Δημιουργείται το αντικείμενο του Κεντρικού Συστήματος (ΚΣ) για δίκτυο 5 κόμβων KentrikoSystima ksys = new KentrikoSystima(5); 4.8 Δημιουργία Κόμβων Δημιουργούνται ανεξάρτητα οι 5 κόμβοι που αποτελούν αυτόνομες μονάδες. Ο κάθε κόμβος κατά την δημιουργία του ενσωματώνει (composition) ανάλογα 2-4 διαφορετικούς αισθητήρες (Ανέμου, Θερμοκρασίας, Υγρασίας, Ηλιοφάνειας). Komvos ioannina = new Komvos("Ioannina..", new AisthitirasThermo('U'), new AisthitirasHliofaneias('H')); 10

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ 4.9 Προσθήκη κόμβων στο ΚΣ Οι κόμβοι στη συνέχεια προστίθενται (εντάσσονται) ένας-ένας στο δίκτυο του ΚΣ. Η μορφή της συσχέτισης είναι η aggregation Οι κόμβοι δεν ανήκουν αποκλειστικά στο ΚΣ. Θα μπορούσαν να ενταχθούν και σε άλλα συστήματα (πχ. Γεωργικής εκμετ/σης) ksys.addkomvos(ioannina); 4.10 Αμφίδρομη επικοινωνία Περνώντας το ΚΣ την αναφορά του this (του εαυτού του) στον Κόμβο, δίνει τη δυνατότητα στον κάθε κόμβο να του στείλει τις μετρήσεις του. Ετσι, επιτυγχάνεται αμφίδρομη επικοινωνία μέσω ΚΣ - κόμβων komvoi[k].dwsemetriseis(this, xronos); (εντολή που περιέχεται στο ksys) 4.11 Συσχετίσεις του διαγράμματος κλάσεων Κεντρικό σύστημα (ΚΣ) <>----- Κόμβος, Aggregation, διότι το ΚΣ «συγκροτεί» έναν αριθμό Κόμβων (δίκτυο). Η επικοινωνία μεταξύ των αντικειμένων των δύο κλάσεων είναι ΑΜΦΙΔΡΟΜΗ ώστε το ΚΣ να ζητάει και οι κόμβοι να του απαντούν με την επιστροφή των μετρήσεών τους. Οι κόμβοι προστίθενται στο ΚΣ. private Komvos komvoi[]; ksys.addkomvos(ioannina); Κόμβος ----- Αισθητήρας, Σύνθεση (Composition), διότι μόνο ο κόμβος γνωρίζει τους αισθητήρες του. Η υλοποίηση της σύνθεσης επιτυγχάνεται με την ταυτόχρονη δημιουργία Κόμβου και Αισθητήρων private Aisthitiras aisthitires []; Komvos ioannina = new Komvos("Ioannina..", new AisthitirasThermo('U'), new AisthitirasHliofaneias('H')); 11

ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA ΚΣ Αρχείο, Σύνδεση (association), διότι υπάρχει μόνιμη επικοινωνία που αφορά την καταχώρηση και ανάκληση των εγγραφών-κινήσεων. Αρχείο ----> ΚίνησηΜέτρησης Εξάρτηση (Dependency), διότι ουσιαστικά οι εγγραφές που καταχωρούνται στο αρχείο είναι «αντίγραφα» υπό μορφήν κειμένου της ΚίνησηΜέτρησης. Αισθητήρας < --- ΑισθητήραςΥγρασίας, κλπ, Κληρονομικότητα, διότι «είναι είδος» Αισθητήρα. public class AisthitirasThermo extends Aisthitiras { protected double min = -10; // Υπέρβαση protected double max = 40; 4.12 Υλοποίηση πολυμορφισμού Ο Κόμβος μέσα από την μέθοδό του dwsemetriseis(.) στέλνει το ίδιο μήνυμα στους διάφορους αισθητήρες που διαθέτει, για λήψη μέτρησης, και ο κάθε ένας απαντάει με τον δικό του τρόπο που γνωρίζει. Ετσι, ο ΑισθητήραςΘερμοκρασίας απαντάει με βαθμούς Κελσίου, ενώ ο ΑισθητήραςΑνέμων με μποφόρ, κλπ. aisthitires[a].getmetrisi(); Για να υλοποιηθεί αυτό, στην κλάση Κόμβος ορίζεται ένας πίνακας αντικειμένων της υπερκλάσης Αισθητήρας!!. Ετσι, σε κάθε στοιχείο του πίνακα μπορεί να αποθηκευτεί ένα αντικείμενο των υποκλάσεων του Αισθητήρα (ΑισθητήραςΥγρασίας, ΑισθητήραςΑνέμου, κλπ), και αυτό επειδή και αυτά είναι αντικείμενα τύπου Αισθητήρα. private Aisthitiras aisthitires []; 12