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



Σχετικά έγγραφα
Αντικειμενοστρεφής Σχεδιασμός

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

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

UML: Unified modelling language

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής

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

Διδάσκων: Παναγιώτης Ανδρέου

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

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

Θεωρίες Μάθησης και Εκπαιδευτικό Λογισμικό

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

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

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

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

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

Μοντελοποίηση Πεδίου

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

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

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

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

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

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

Αντικειμενοστρεφής Σχεδιασμός

Εισαγωγή στη γλώσσα UML

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

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

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

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

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

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

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

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

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

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

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Τα διαγράµµατα UML. ρ. Πάνος Φιτσιλής

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

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

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

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

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

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

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

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

Ανάλυση Περιπτώσεων Χρήσης

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

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

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

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

Περιεχόμενα. ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στη UML... 19

Εισαγωγή στη UML ΑΝΑΛΥΣΗ ΣΥΣΤΗΜΑΤΩΝ 1

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Τι είναι η UML. H UML (Unified Modeling Language) είναι µιά γλώσσα µοντελοποίησης γιά

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

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


HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

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

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

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

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

Τα διαγράµµατα συστατικών

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

Κωδικός: <Κωδ.Αρ.Εγγράφου/ΚωδικόΌνομαΈργου/Αρ. Έκδοσης> <Company Name> <Όνομα - Κωδικό Όνομα Έργου> Έγγραφο Περιγραφής Σχεδίου Λογισμικού

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

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

περιεχόμενα παρουσίασης

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

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

Διδάσκων: Παναγιώτης Ανδρέου

Transcript:

Διάλεξη 11: Αντικειμενοστρεφής Σχεδιασμός ΙII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παράδειγμα Διαδικασίας Ανάπτυξης Λογισμικού: Βιβλίο Διευθύνσεων(συν.) - Φάση 3: Υλοποίηση(αναλυτικά διαγράμματα κλάσης-detailed classdiagrams, διαγράμματα ανάπτυξης-deploymentdiagrams), Φάση 4: Συντήρηση, Εξέλιξη - UML, Παραδείγματα Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 1

Φάση 3: Υλοποίηση Φάση της μετατροπής του αρχικού σχεδιασμού σε πρόγραμμα προς μετάφραση και εκτέλεση 3Α. Αναγνώριση Τμήματος Πυρήνα Πυρήνας: Στόχος εδώ είναι να εντοπίσετε το τμήμα που αποτελεί τον πυρήνα του προγράμματός σας, από τον οποίο θα προκύψει το τελικό σύστημα. Ο πυρήνας μπορεί να μην περιέχει τα πάντα, είναι όμως η βάση για το χτίσιμο των λειτουργιών του συστήματός σας. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 2

Φάση 3: Υλοποίηση (συν.) 3Β. Πρόσθεση Λειτουργιών Μετά το κτίσιμο του πυρήνα, γίνεται η υλοποίηση των λειτουργιών του συστήματος. Κάθε ξεχωριστή λειτουργία αντιπροσωπεύεται στη φάση τού σχεδιασμού από μια αντίστοιχη περίπτωση χρήσης (use case). Η υλοποίηση των διαφορετικών περιπτώσεων χρήσης γίνεται διαδοχικά σε διαφορετικές επαναλήψεις και μέχρι να ολοκληρωθεί η υλοποίηση όλων των συστατικών του συστήματος. Πως δικαιολογείται η «επαναληπτική» προσέγγιση (iteration over the use cases); ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 3

Διαγράμματα Κλάσης (class diagrams) Ένα από τα κυριότερα εργαλεία αντικειμενοστρεφής μοντελοποίησης Περιγράφει τη δομή του συστήματος παρουσιάζοντας: τις κλάσεις του συστήματος τις σχέσεις μεταξύ κλάσεων Δύο είδη διαγραμμάτων: Γενικό εννοιολογικό μοντέλο (ΓΜ):χρησιμοποιείται στην ανάλυση και σχεδίαση Αναλυτικό μοντέλο (ΑΜ):χρησιμοποιείται για μετάφραση των μοντέλων σε πραγματικό κώδικα ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 4

Διαγράμματα Κλάσης (class diagrams) (συν.) Αναλυτικό μοντέλο Διάγραμμα Κλάσης Κάθε κλάση χωρίζεται σε 4 μέρη 1. Το όνομα της κλάσης(class name) 2. Τα χαρακτηριστικά (attributes) της κλάσης 3. Τις λειτουργίες (operations) της κλάσης 4. (Προαιρετικό) Επιπρόσθετα συστατικά (additional components) της κλάσης Διάγραμμα αντικειμένου Όμοιο με Διάγραμμα Κλάσης Όνομα αντικειμένου αντί Όνομα Κλάσης Όνομα αντικειμένου υπογραμμισμένο Class Name Attributes Operations Components Object Name Attributes Operations Components ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 5

Προσδιοριστές για Διαγράμματα Κλάσης Προσδιοριστές Ορατότητας (Visibility Modifiers) (+) public: Η πρόσβαση είναι ανοικτή σε όλους! (-) private:η πρόσβαση είναι περιορισμένη μόνο στην κλάση (~) package(friendly):η πρόσβαση είναι περιορισμένη σε κλάσεις που βρίσκονται στο ίδιο πακέτο με την κλάση (#) protected:όπως το defaultαλλά και σε κλάσεις που κληρονομούν από την ίδια κλάση (εντός πακέτου ή όχι) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 6

Προσδιοριστές για Διαγράμματα Κλάσης Άλλοι Προσδιοριστές (underline) static: Τα δεδομένα, μεθόδοι ισχύουν για όλα τα αντικείμενα της κλάσης (/) derived:τα δεδομένα, μεθόδοι κληρονομούνται από άλλες κλάσεις (italic) abstract: Οι μεθόδοι πρέπει να υλοποιηθούν Συµβολισµός Επεξήγηση + Public - Private # Protected ~ Package / Derived <underline> <italic> Static Abstract ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 7

Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) Person - firstname: String - lastname: String - address: String - city: String - state: String - zip: String - phone: String + Person(String firstname, String lastname, String address, String city, String state, String zip, String phone) + getfirstname(): String + getlastname(): String + getaddress(): String + getcity(): String + getstate(): String + getzip(): String + getphone(): String ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 8

Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) FileSystem + readfile(file file): AddressBook + savefile(addressbook addressbook, File file) ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 9

Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) AddressBookApplication - filesystem: FileSystem - controller: AddressBookController + main() + quitapplication() ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 10

Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) AddressBook - collection: Person [ ] or Vector or ArrayList - count: int - file: File - changedsincelastsave: boolean + AddressBook() + getnumberofpersons(): int + addperson(string firstname, String lastname, ) + getfullnameofperson(int index): String + updateperson(int index, String address, String city, String state, ) + removeperson(int index) + sortbyname() + sortbyzip() + printall() + sortbyname() + getfile(): File + gettitle(): String ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 11

Βιβλίο Διευθύνσεων: Class Diagrams (αναλυτικά) AddressBookGUI Εργασία για το σπίτι Εργασία για το σπίτι ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 12

Βιβλίο Διευθύνσεων: Υλοποίηση import java.io.*; import java.util.*; public class AddressBook { private Vector collection; private File file; private boolean changedsincelastsave; public AddressBook() { collection = new Vector(); file = null; changedsincelastsave = false; } public int getnumberofpersons() { return collection.size(); } public void addperson(string s, String s1, String s2, String s3, String s4, String s5, String s6) { collection.addelement(new Person(s, s1, s2, s3, s4, s5, s6)); } setchangedsincelastsave(true); public String getfullnameofperson(int i) { Person person = (Person)collection.elementAt(i); return person.getfirstname() + " " + person.getlastname(); } public void updateperson(int i, String s, String s1, String s2, String s3, String s4) { (Person)collection.elementAt(i)).update(s, s1, s2, s3, s4); } setchangedsincelastsave(true); ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 13

Βιβλίο Διευθύνσεων: Υλοποίηση public class Person { private String firstname; private String lastname; private String address; private String city; private String state; private String zip; private String phone; public Person(String s, String s1, String s2, String s3, String s4, String s5, String s6) { firstname = s; lastname = s1; address = s2; city = s3; state = s4; zip = s5; phone = s6; } public String getfirstname() { } return firstname; public String getaddress() { } return address; public void update(string s, String s1, String s2, String s3, String s4) { } address = s; city = s1; state = s2; zip = s3; phone = s4; } ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 14

Διαγράμματα Ανάπτυξης (deployment diagrams) Παρουσιάζει πως θα αναπτυχθεί/εγκατασταθεί το λογισμικό στον πελάτη/οργανισμό. Παρουσιάζει και το υλικό (hardware), π.χ., εξυπηρετητές. Οι κόμβοι παρουσιάζονται σαν κουτιά Τα τεχνουργήματα (artifacts)που υπάρχουν σε κάθε κόμβο παρουσιάζονται σαν ορθογώνια μέσα στα κουτιά Οι κόμβοι μπορούν να έχουν υπο-κόμβους Δύο είδη κόμβων: Κόμβος Συσκευής (Device Node) Κόμβος Περιβάλλον Εκτέλεσης (Execution Environment Node) Desktop Computer File Interface ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 15

Βιβλίο Διευθύνσεων: Deployment Diagram Desktop Computer File System File Interface Operating System ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 16

Παράδειγμα: Βιβλίο Διευθύνσεων Επόμενη Φάση 4: Συντήρηση ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 17

Φάση 4: Συντήρηση Η φάση της συντήρησης ή εξέλιξης του κώδικα: Διόρθωση σφαλμάτων. Αλλαγές στον κώδικα με βάση την εμπειρία χρήσης του. Πρόσθεση νέων λειτουργιών. Καλύτερη ικανοποίηση των απαιτήσεων. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 18

Βιβλίο Διευθύνσεων: Συντήρηση/Εξέλιξη Το use case Print Entries τυπώνει τα ονόματα στο System.out. Διαφορετικά θα μπορούσε να γράφει σε αρχείο. Το πρόγραμμα μπορεί να διαχειρίζεται πολλαπλά βιβλία διευθύνσεων. Αυτό συμπεριλαμβάνει τις εξής αλλαγές: Το use case Create New Address Book καιopen Existing Address Book Use Cases δεν θα κλείνουν το τρέχον address book. Αντίθετα θα δημιουργούν ένα καινούριο αντίγραφο του GUI και θα το διαχειρίζονται ξεχωριστά. Θα δημιουργηθεί ένα καινούριο use case (Close Address Book) το οποίο θα εκτελείται όταν κλείνει ένα address book αντί του use case Quit Program. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 19

UML: Unified Modelling Language ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 20

UML: Unified Modelling Language Τυποποιημένη γλώσσα μοντελοποίησης γενικού σκοπούστο πεδίου της αντικειμενοστρεφή ανάπτυξης λογισμικού (objectoriented software engineering). Δημιουργήθηκε από το Object Management Group το 1997 Η UML περιλαμβάνει ένα σύνολο από διαγραμματικές τεχνικές αναπαράστασης για να δημιουργήσει visual models ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 21

Κατηγορίες Διαγραμμάτων UML UML 2.2: 14 διαγράμματα Δύο βασικές κατηγορίες διαγραμμάτων: Διαγράμματα Δομής (structure diagrams) Δίνουν έμφαση στο τι πρέπει να είναι παρόν στο σύστημα που μοντελοποιείται, δηλ., την αρχιτεκτονική του. Διαγράμματα Συμπεριφοράς(behavior diagrams) Δίνουν έμφαση στο τι πρέπει να γίνει στο σύστημα που μοντελοποιείται, δηλ., την λειτουργικότητά του ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 22

Διαγράμματα Δομής (structure diagrams) Class diagram:περιγράφει τη δομή του συστήματος με κλάσεις, χαρακτηριστικά και σχέσεις. Component diagram:περιγράφει πως ένα σύστημα είναι διαχωρισμένο σε συστατικά (components) και τις εξαρτήσεις μεταξύ αυτών. Composite structure diagram:περιγράφει την εσωτερική δομή μίας κλάσης και τις συνεργασίες που επιτυγχάνει. Deployment diagram:περιγράφει το υλικό (hardware) που χρησιμοποιεί το σύστημα και τα περιβάλλοντα εκτέλεσης που αναπτύσσονται σε αυτό. Object diagram:περιγράφει μία πλήρης ή μερική όψη της δομής του συστήματος σε κάποιο συγκεκριμένο χρόνο. Package diagram:περιγράφει πως το σύστημα είναι διαχωρισμένο σε λογικές κατηγορίες και ποιες είναι οι εξαρτήσεις μεταξύ τους. Profile diagram:καθορίζει στερεότυπα τα οποία επιτρέπουν την προσαρμογή του μοντέλου σε διαφορετικές πλατφόρμες (π.χ., J2EE ή.net) ή διαφορετικά πεδία domains (π.χ., real-time or business modeling). ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 23

Διαγράμματα Συμπεριφοράς (behavior diagrams) Activity diagram:περιγράφει ροές εργασίας (workflows) και ροές ελέγχου (flow of control) σε ένα σύστημα. Statemachine diagram:περιγράφει καταστάσεις και μεταβάσεις του συστήματος. Use Case Diagram:περιγράφει τη λειτουργικότητα του συστήματος με ρόλους/χρήστες και λειτουργίες. Communication diagram:περιγράφει την επικοινωνία μεταξύ αντικειμένων με μηνύματα. Είναι συνδυασμός Class, Sequence, and Use Case Diagrams. Interaction overview diagram:κάθε κόμβος είναι ένα communication diagram. Sequence diagram:παρόμοιο με communication diagram με τη διαφορά ότι κάθε αντικείμενο παρουσιάζει και το χρόνο ζωής του. Timing diagrams: περιγράφει χρονικούς περιορισμούς. ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 24

UML: Τι έχουμε μάθει; Use Case diagram Class Analysis diagram State machine diagram Sequence diagram Class diagram Detailed Class diagram Deployment diagram ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 25

UML Παραδείγματα Κατανόηση των UML διαγραμμάτων Κατανόηση συσχετίσεων Παραδείγματα Κατοικίδια ζώα και Ιδιοκτήτες Οργάνωση σκληρών δίσκων Τραπεζικό σύστημα Σύστημα κεντρικής θέρμανσης Σύστημα εκτύπωσης ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός 26

UML Example Veterinary System Try to read & understand UML diagram 1 or more Pets associated with 1 PetOwner

UML Example Computer System Try to read & understand UML diagram

UML Example Computer System Try to read & understand UML diagram 1 CPU associated with 0 or more Controllers 1-4 DiskDrives associated with 1 SCSIController SCSIController is a (specialized) Controller

UML Example Banking System 1 Bank associated with 0 or more Accounts Checking, Savings, MoneyMarket are Accounts

UML Example Home Heating System Each Thermostat associated with 1 Room Each Thermostat associated with 0 or more Heaters ElectricHeater is a specialized Heater AubeTH101D is a specialized Thermostat

UML Class Diagrams & Java Διαφορετική αναπαράσταση της ίδιας πληροφορίας Name, state, behavior of class Relationship(s) between classes Χρειάζεται εξάσκηση έτσι ώστε να μπορούμε να μετατρέπουμε το ένα στο άλλο και να αναπαριστούμε με ακρίβεια τα μοντέλα

UML & Java : Veterinary System UML Java class Pet { PetOwner myowner; // 1 owner for each pet } class PetOwner { Pet [ ] mypets; // multiple pets for each owner }

UML & Java : Veterinary System Java class Pet { PetOwner myowner; // 1 owner for each pet } class PetOwner { Pet [ ] mypets; // multiple pets for each owner } UML

UML & Java : Computer System UML Java class Controller { } class SCSIController extends Controller { } κληρονόµος Μητρική Κλάση

UML & Java : Computer System UML Java Design code using all available information in UML

UML & Java : Computer System Java class CPU { Controller [ ] myctlrs; } class Controller { CPU mycpu; } class SCSIController extends Controller { DiskDrive [ ] mydrives = new DiskDrive[4]; } Class DiskDrive { SCSIController myscsi; }

Java & UML : Printing System Java class Registry { PrintQueue findqueue(); } class PrintQueue { List printjobs; Printer myprinter; Registry myregistry; void newjob(); int length(); states Resources getresource(); } behavior

Java & UML : Printing System Java Class Printer { Resources myresources; Job curjob; void print(); boolean busy(); boolean on(); } class Job { Job(Registry r) { } }

Java & UML : Printing System

UML Σύνοψη Γλώσσα γραφικών μοντελοποιήσεων (Μόνο??) Γραφική απεικόνιση των σχεδιαγραμμάτων του συστήματος Εστιάσαμε περισσότερο στα διαγράμματα κλάσεων Περιεχόμενα της κλάσης Συσχετίσεις μεταξύ των κλάσεων Πρέπει να είστε σε θέση να: Γράφετε τον κώδικα Java από το UML διάγραμμα Σχεδιάζετε τα UML διαγράμματα από τον κώδικα Java