ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (Πάτρας) ΤΕΧΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ (Εργαστήριο) Δρ. Χρήστος Πιερρακέας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

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

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

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

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

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

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

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

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

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

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

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔΟΜΙΚΗ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΚΑΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΣΥΜΠΕΡΙΦΟΡΑΣ (9)

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ UML ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΕΠΙΧΕΙΡΗΜΑΤΙΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ (ΔΙΑΓΡΑΜΜΑΤΑ ΔΡΑΣΤΗΡΙΟΤΗΤΩΝ & ΠΕΡΙΠΤΩΣΕΩΝ ΧΡΗΣΗΣ) (7-8)

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

UML: Unified modelling language

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

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

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

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

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

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

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

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Υποδείγματα Ανάπτυξης

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

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

Ειδικά θέματα τεχνολογίας λογισμικού

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

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

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

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

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

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

Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών & Δικτύων,

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

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

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

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

Αρχιτεκτονική Λογισμικού

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

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

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

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

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

Οι περιπτώσεις χρήσης

Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python. Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python.

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

ιαγράµµατα Αλληλεπίδρασης ιαγράµµατα Ακολουθίας ιαγράµµατα Επικοινωνίας

Εννοιολογικό Μοντέλο. Conceptual Model

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

6. Εισαγωγή στη Ενοποιημένη Γλώσσα Μοντελοποίησης UML (Unified Modeling Language)

Wrapper Classes, Abstract Classes and Interfaces

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

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

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

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

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

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

Transcript:

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (Πάτρας) ΤΕΧΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ (Εργαστήριο) Δρ. Χρήστος Πιερρακέας

ΤΕΧΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ (Εργαστήριο) Βασικές έννοιες αντικειμενοστρεφούς Τεχνολογίας. (αντικειμενοστρεφής ανάλυση και σχεδιασμός) Unified Modeling Language (UML). Τύποι διαγραμμάτων. Διαγράμματα κλάσεων. Σχέσεις κλάσεων. Διαγράμματα περιπτώσεων χρήσης. Σχέσεις. Διαγράμματα ακολουθίας. Διαγράμματα καταστάσεων. Διαγράμματα δραστηριοτήτων. 2

Πληροφοριακό Σύστημα Aktas (1987), Ahitur και Neumann (1990): «Ένα σύστημα το οποίο δέχεται πληροφορίες, τις αποθηκεύει, τις ανακτά, τις μετασχηματίζει, τις επεξεργάζεται και τις διανέμει στους διάφορους χρήστες του οργανισμού, χρησιμοποιώντας υπολογιστές ή άλλα μέσα». 3

Συνιστώσες Πληροφοριακού Συστήματος 1. Άνθρωποι 2. Διαδικασίες 3. Δεδομένα 4. Λογισμικό 5. Υλικός εξοπλισμός 4

1. Διερευνητική μελέτη 2. Μελέτη σκοπιμότητας 3. Ανάλυση απαιτήσεων 4. Σχεδιασμός συστήματος 5. Υλοποίηση 6. Εγκατάσταση 7. Λειτουργία-Συντήρηση Στάδια Κύκλου Ζωής ΠΣ Αυτά τα στάδια μαζί αναφέρονται συχνά ως: «συμβατική ανάλυση συστημάτων», ή «παραδοσιακή ανάλυση συστημάτων», ή «κύκλος ανάπτυξης και ζωής πληροφοριακών συστημάτων», ή μοντέλο καταρράκτη 5

Τεχνολογία Πληροφοριακών Συστημάτων Ο κλάδος της Πληροφορικής που ονομάζεται Τεχνολογία Πληροφοριακών συστημάτων / Λογισμικού αφορά στην εφαρμογή επιστημονικών αρχών για το μεθοδικό μετασχηματισμό ενός προβλήματος σε μια λειτουργούσα λύση πληροφοριακού συστήματος / λογισμικού και για τη μετέπειτα συντήρηση του για το διάστημα που αυτό είναι χρήσιμο. Φάση Ανάλυσης (Analysis), η οποία περιλαμβάνει την κατανόηση του προβλήματος (απαιτήσεων) και καταγραφή των προδιαγραφών του συστήματος Φάση Σχεδιασμού (Design), η οποία περιλαμβάνει το σχεδιασμό μιας λειτουργούσας λύσης Φάση Υλοποίησης (Implementation), η οποία περιλαμβάνει την ανάπτυξη του εκτελέσιμου κώδικα. Φάσεις ελέγχου και συντήρησης 6

Δομημένη Αντικειμενοστρεφής προσέγγιση της Τεχνολογίας Υπάρχουν δύο γενικές προσεγγίσεις: Η δομημένη προσέγγιση είναι βασισμένη σε δεδομένα και διαδικασίες που προκύπτουν από την αποσύνθεση του προβλήματος και τα οποία μελετώνται ανεξάρτητα και χρησιμοποιούνται για τη υλοποίηση της εφαρμογής λογισμικού. Η αντικειµενοστρεφής προσέγγιση (object oriented) βασίζεται στην ιδέα ότι στον πραγµατικό κόσµο δεδοµένα και διαδικασίες µπορούν να ιδωθούν ενιαία µε βάση το πεδίο ευθύνης κάποιων «αντικειµένων». Κάθε αντικείµενο παρέχει στο περιβάλλον του ένα σύνολο υπηρεσιών της ευθύνης του. Η συνεργασία του συνόλου των αντικειµένων του πεδίου µιας εφαρµογής λογισµικού παράγει το επιθυµητό αποτέλεσµα. 7

Η δομημένη προσέγγιση και οι Τεχνικές της (1/2) Οι πρώτες μεθοδολογίες περιελάμβαναν τεχνικές όπως: διαφόρων τύπων διαγράμματα ροής (π.χ. για να βοηθήσουν τον αναλυτή να κατανοήσει τη ροή των εγγράφων μέσα σε ένα τμήμα) διαγράμματα οργάνωσης (π.χ. για να αναπαραστήσουν την ιεραρχία των υπαλλήλων σε μια επιχείρηση) προδιαγραφές εγγράφων (παρέχουν τις λεπτομέρειες των εγγράφων που χρησιμοποιούνται στο σύστημα) διαγράμματα πλέγματος (περιγράφουν πως αλληλεπιδρούν τα επιμέρους υποσυστήματα) 8

Η δομημένη προσέγγιση και οι Τεχνικές της (2/2) Οι περισσότερες από τις παραπάνω τεχνικές έχουν αντικατασταθεί στις σύγχρονες μεθοδολογίες, οι οποίες συνήθως βασίζονται σε: Διαγράμματα Ροής Δεδομένων ροές δεδομένων από το περιβάλλον στο σύστημα, ροές δεδομένων από το σύστημα στο περιβάλλον, διαδικασίες που αλλάζουν τα δεδομένα στα πλαίσια του συστήματος αποθήκευση δεδομένων στο σύστημα, τα όρια και την εμβέλεια του συστήματος Διάγραμμα οντοτήτων συσχετίσεων Λεξικά δεδομένων και Διαγράμματα Δομής 9

Η αντικειμενοστρεφής προσέγγιση και οι Τεχνικές της Η αντικειμενοστρεφής προσέγγιση Μοντελοποιεί τα αντικείμενα, τα οποία αναπαριστούν κάτι από τον πραγματικό κόσμο, συμπεριλαμβανομένων των ανθρώπων, των δεδομένων, και των διαδικασιών, καθώς και της αλληλεπίδρασης των αντικείμενων. Και οι τεχνικές της θα μας απασχολήσουν για το υπόλοιπο εξάμηνο 10

Οφέλη Αντικειμενοστρεφούς Τεχνολογίας Η δομική μονάδα της αντικειμενοστρεφούς τεχνολογίας ενσωματώνει δεδομένα και διεργασίες. Ο δομική μονάδα της αντικειμενοστρεφούς τεχνολογίας κρύβει τις λεπτομέρειες της εσωτερικής δομής πίσω από μια δημόσια διεπαφή παρέχοντας τη δυνατότητα εύκολης συναρμολόγησης (modularity). Οι χρησιμοποιούμενες δομικές μονάδες είναι εύκολα μεταφέρσιμες από μια εφαρμογή σε μια άλλη (επαναχρησιμοποιησιμότητα (reusability)). Επεκτασιμότητα (extensibility): Νέο λογισμικό μπορεί να κατασκευασθεί εύκολα από ήδη υπάρχον. Συντήρηση (maintenance): Διευκολύνεται σημαντικά. Ελάττωση κόστους και χρόνου ανάπτυξης 11

Αντικείμενο Τα αντικείμενα είναι στοιχεία ή οντότητες που χρησιμοποιούνται για την αναπαράσταση του (πραγματικού) κόσμου που μας περιβάλλει (ποδήλατο, σκύλος). Αντικείμενο λογισμικού: Μοντελοποιεί, αναπαριστά, αντιστοιχεί σε κάποιο αντικείμενο του πραγματικού κόσμου. 12

Αντικείμενο λογισμικού Αντικείμενο λογισμικού: Μοντελοποιεί, αναπαριστά, αντιστοιχεί σε κάποιο αντικείμενο του πραγματικού κόσμου. Αντιστοιχούν επίσης σε άλλες έννοιες του πραγματικού κόσμου όπως δομές δεδομένων (π.χ. λίστα, ουρά, κλπ.) ήσε κάτι πιο αφαιρετικό. Έχουν χαρακτηριστικά και κατάσταση (που δηλώνονται με μεταβλητές) καθώς και συμπεριφορά (που υλοποιείται με μεθόδους). Ένα αντικείμενο μοντελοποιείται με ιδιότητες ή πεδία (attributes) και μεθόδους / λειτουργίες (methods / operations), που ανήκουν στο αντικείμενο. 13

Αντικείμενο λογισμικού Όλατααντικείμεναέχουν χαρακτηριστικά και βρίσκονται σε μια κατάσταση (ιδιότητες) πχ. Σκυλί: όνομα, χρώμα, πεινασμένο, κλπ. Ποδήλατο: 2 τροχοί, χρώμα, αριθμός ταχυτήτων, παρούσαταχύτητακλπ συμπεριφορά (μέθοδοι) πχ. Σκυλί: γαβγίζει, τρέχει για να επιτεθεί κλπ. Ποδήλατο: φρενάρει, αυξάνει/ελαττώνει ταχύτητα, αλλάζει ταχύτητα κλπ 14

Αντικείμενο λογισμικού Δημόσιο Μέρος (Public API) Ιδιωτικό Μέρος (Λεπτομέρειες Υλοποίησης) 15

Παράδειγμα αντικειμένου: ποδήλατο Άλλαξε Ταχύτητα Φρέναρε Ξεκίνα Λεπτομέρειες Υλοποίησης των λειτουργιών 16

Παράδειγμα αντικειμένου Για παράδειγμα, ένα αντικείμενο που παριστάνει έναν πελάτη μπορεί να μοντελοποιηθεί ως εξής: Όνομα αντικειμένου Ιδιότητες Μέθοδοι customer1 ID number = 4357 name = Tony Blair address = 10 Downing St credit limit = 3000.00 change address increase credit limit Ποιάς εφαρμογής αντικείμενο θα μπορούσε να είναι το παραπάνω; 17

Επικοινωνία Μεταξύ Αντικειμένων Τα αντικείμενα επικοινωνούν και αλληλεπιδρούν μεταξύ τους αποστέλλοντας μηνύματα. Επιπλέον πληροφορία που απαιτείται παρέχεται ως παράμετρος των μηνυμάτων. Πλεονεκτήματα Όλη η αλληλεπίδραση υποστηρίζεται με μεταβίβαση μηνυμάτων. Τα αντικείμενα δε χρειάζεται να βρίσκονται στην ίδια διεργασία, ούτε καν στον ίδιο υπολογιστή. 18

Επικοινωνία Μεταξύ Αντικειμένων ΠΟΔΗΛΑΤΗΣ ΠΟΔΗΛΑΤΟ Άλλαξε Ταχύτητα Φρέναρε Φρέναρε ΜΗΝΥΜΑ Ξεκίνα 19

Κλάση (Class) Μια συλλογή από παρόμοια αντικείμενα ονομάζεται κλάση (class). Όλα τα αντικείμενα μιας κλάσης έχουν τα ίδια χαρακτηριστικά και τις ίδιες μεθόδους, αλλά οι τιμές των χαρακτηριστικών (είναι δυνατό να) διαφέρουν. Μια κλάση είναι ένα εργοστάσιο (factory) που παράγει αντικείμενα. Ένα συγκεκριμένο αντικείμενο αποτελεί στιγμιότυπο (instance) μιας κλάσης. Ο μηχανισμός της κλάσης επιτρέπει τη δημιουργία νέων τύπων. Είναι ένα περίγραμμα / μια φόρμα (template) για τον προσδιορισμό των ιδιοτήτων και των μεθόδων ενός συνόλου από αντικείμενα. Η σχέση ενός αντικειμένου με μια κλάση είναι παρόμοια με τη σχέση μιας μεταβλητής με τον τύπο της μεταβλητής σε μια γλώσσα προγραμματισμού. 20

Κλάση (Class) Μια κλάση προσδιορίζει: - Το όνομα της κλάσης. - Το όνομα (και τον τύπο) κάθε ιδιότητας. - Το όνομα (και τις παραμέτρους) κάθε μεθόδου. Customer ID number : integer name : string address : string credit limit : integer change address (new_addrs : string) increase credit limit (new_lim : integer) 21

Βασικά Χαρακτηριστικά μιας Κλάσης Προσδιορίζει τη γενική μορφή ενός συνόλου αντικειμένων Διαφορετικά στιγμιότυπα (instances) τηςκλάσηςείναιδυνατό να κατασκευασθούν από το γενικό περίγραμμα. Οι μέθοδοι χαρακτηρίζουν την κλάση και αποτελούν τη διεπαφή (interface) ανάμεσα στην κλάση και στο υπόλοιπο σύστημα. Όνομα Ιδιότητες Μέθοδοι Επικοινωνία με το υπόλοιπο σύστημα 22

Προσδιορισμός Ιδιοτήτων Κάθε ιδιότητα έχει: Ένα όνομα. Έναν τύπο. Ο τύπος μπορεί να είναι: Απλός (π.χ. integer, char, real). Μια κάπως πολύπλοκη δομή δεδομένων (π.χ. πίνακας array). Μια άλλη κλάση. Στααρχικάστάδιατηςμοντελοποίησης... Αρκεί ο προσδιορισμός μόνο των βασικών ιδιοτήτων με το όνομά τους. Περισσότερες λεπτομέρειες μπορούν να προστεθούν σταδιακά κατά τη βελτίωση / εκλέπτυνση της σχεδίασης. 23

Λεπτομερής σύνταξη ιδιοτήτων Κλάσεων Person Λεπτομέρειες Ιδιοτήτων - first_name[1..3] : String - last_name : String - address : String - phone_no[0..*] : Integer - date_of_birth : Date - yr_of_birth : Integer = 0 change_address age 24

Προσδιορισμός Μεθόδων Μια μέθοδος προσδιορίζεται με τον καθορισμό της υπογραφής της (signature) ήτηςεπικεφαλίδας της (header), ηοποία αποτελείται από: Το όνομα της μεθόδου. Μια λίστα από παραμέτρους (που ίσως είναι κενή). Έναν τύπο επιστροφής (return type), αν απαιτείται. Η λίστα των παραμέτρων αποτελείται από τα ονόματα των παραμέτρων και τους τύπους τους. Στα αρχικά στάδια της μοντελοποίησης αρκεί ο προσδιορισμός μόνο των βασικών μεθόδων με το όνομά τους περισσότερες λεπτομέρειες μπορούν να προστεθούν σταδιακά κατά τη βελτίωση / εκλέπτυνση της σχεδίασης. Ο κώδικας των μεθόδων δεν χρειάζεται κατά τη μοντελοποίηση. 25

Λεπτομερής Σύνταξη Μεθόδων Person - first_name[1..3] : String - last_name : String - address : String - phone_no[0..*] : Integer - date_of_birth : Date - yr_of_birth : Integer = 0 Λεπτομέρειες Μεθόδων change_address (new:string) age (today:date) : Integer Ημέθοδοςchange_address δέχεται μία παράμετρο, new τύπου String και η μέθοδος age έχει έναν τύπο επιστροφής,integer. 26

Ενθυλάκωση ή Eγκλεισμός (Εncapsulation) Η κλάση υποκρύπτει λεπτομέρειες υλοποίησης. Ηιδιότητααυτήονομάζεταιενθυλάκωση ή εγκλεισμός (encapsulation). Είναι χωρίς αμφιβολία το πιο ισχυρό χαρακτηριστικό της αντικειμενοστρεφούς προσέγγισης. Ποιες είναι οι λεπτομέρειες οι οποίες υποκρύπτονται; Οι ιδιότητες. Ο κώδικας που υλοποιεί κάθε μέθοδο. Πλεονεκτήματα: Αρθρωτά (modular) προγράμματα: Ο πηγαίος κώδικας για ένα αντικείμενο μπορεί να γραφτεί και να συντηρηθεί ανεξάρτητα από άλλα αντικείμενα 27

Ενθυλάκωση ή Eγκλεισμός (Εncapsulation) Account balance : integer deposit( amount : integer ) withdraw( amount : integer) void withdraw (int amount) { if (amount<0) cout<< error ; else if (amount>balance) cout<< error ; else balance -= amount; } Κόκκινο (italic) = κρυφό Μαύρο = ορατό void deposit (int amount) { if (amount<0) cout<< error ; else balance += amount; } 28

Ορατότητα (Visibility) Η ενθυλάκωση μπορεί να εξεταστεί με βάση την ορατότητα που επιτρέπει στον εξωτερικό (της κλάσης) κόσμο. Η ορατότητα ελέγχεται χρησιμοποιώντας τις λέξεις κλειδιά: private (ιδιωτικό)(συμβολίζεται με -). public (δημόσιο)(συμβολίζεται με +). Οτιδήποτε δηλωθεί ως ιδιωτικό είναι ορατό μόνο στο εσωτερικό της κλάσης και όχι έξω από την κλάση. Οι ιδιότητες πρέπει να δηλώνονται πάντα ως ιδιωτικές. Επομένως, γιαναπροσδιοριστείητιμήτους, αλλά και για να αλλάξει από τον εξωτερικό (της κλάσης) κόσμο, πρέπει να παρέχονται ειδικές για το σκοπό αυτό μέθοδοι. 29

Εισαγωγή στη UML Τι είναι η UML;; H UML (Unified Modeling Language) είναι μια γλώσσα για: Κατάρτιση προδιαγραφών λογισμικού και τεκμηρίωση τμημάτων λογισμικού Αναπαράσταση με οπτικό τρόπο (visualization) τμημάτων λογισμικού Οργάνωση της διαδικασίας σχεδίασης Δημιουργία κοινής γλώσσας για πελάτες, προγραμματιστές, σχεδιαστές, αναλυτές, manager καιέχειωςστόχο: Τη μοντελοποίηση συστημάτων με βάση τις αρχές των αντικειμενοστραφών μοντέλων Τη δημιουργία μιας μοντελοποιημένης γλώσσας που μπορεί να χρησιμοποιηθεί τόσο από τον άνθρωπο όσο κι από τις μηχανές 30

Ιστορική εξέλιξη Η ευρεία εξάπλωση του αντικειμενοστραφούς προγραμματισμού κατά τη δεκαετία του '90, είχε ως αποτέλεσμα να αναπτυχθούν διάφορες πρότυπες γλώσσες μοντελοποίησης λογισμικού οι οποίες τυποποιούσαν οπτικά σύμβολα και συμπεριφορές με στόχο την αφαιρετική περιγραφή της λειτουργίας και της δομής ενός πληροφοριακού συστήματος. Οι γλώσσες αυτές είχαν εξαρχής έναν εμφανή αντικειμενοστρεφή προσανατολισμό. Οι πιο δημοφιλείς από αυτές ενοποιήθηκαν στο κοινό πρότυπο UML που η πρώτη του έκδοση οριστικοποιήθηκε το 1997. 1995: Unified Method 0.8 1996: UML 0.9 &0.91 1997: UML 1.0 & 1.1 1999: UML 1.3 2001: UML 1.4 2003: UML 2.0 31

Η έννοια της Αφαίρεσης Εστίαση σε επιλεγμένα στοιχεία και αγνόηση υπόλοιπων λεπτομερειών Τα μοντέλα μπορούν να εκφραστούν σε διαφορετικά επίπεδα πιστότητας και λεπτομέρειας Σύνθετα τμήματα περιγράφονται καλύτερα με μικρά σύνολα ανεξάρτητων όψεων Παράδειγμα ο χάρτης της Ελλάδας 32

Διαγράμματα της UML Υπάρχουν 13 διαγράμματα χωρισμένα σε 3 βασικές κατηγορίες Structure diagrams (Στατικής δομής) Behavior diagrams (Συμπεριφοράς) Interaction diagrams (Αλληλεπίδρασης) Structure diagrams Διάγραμμα Κλάσεων (Class Diagram) Διάγραμμα Αντικειμένων (Object Diagram) Διάγραμμα Διάταξης (Deployment Diagram) Διάγραμμα Συστατικών (Component Diagram) Διαγράμματα Πακέτων Package Diagram Composite Structure Diagram 33

Διαγράμματα της UML Behavior diagrams Διάγραμμα Περιπτώσεων Χρήσης (Use CaseDiagram) Διάγραμμα Δραστηριοτήτων (Activity Diagram) Διάγραμμα Καταστάσεων/Πρωτοκόλλου (State Diagram/ Protocol State Diagram) Interaction diagrams Διάγραμμα Ακολουθίας (Sequence Diagram) Διάγραμμα Επικοινωνίας (Communication Diagram) Διάγραμμα Συγχρονισμού (Timing Diagram) Διάγραμμα Διαδραστικότητας (Interaction Overview Diagram) 34

Συστατικά Στοιχεία Ανάλυσης και Σχεδίασης Υπάρχουν πολλές διαφορετικές μέθοδοι για αντικειμενοστρεφή ανάλυση και σχεδίαση συστημάτων. Όλες οι μέθοδοι πρέπει να υποστηρίζουν τις πιο κάτω ενέργειες: Προσδιορισμός αντικειμένων. Προσδιορισμός κλάσεων (ταξινόμηση των αντικειμένων). Ορισμός της συμπεριφοράς των αντικειμένων (μέθοδοι). Αναπαράσταση της κατάστασης των αντικειμένων (ιδιότητες και γεγονότα που οδηγούν σε αλλαγή της κατάστασης). 35

Διαφορές Ανάλυσης και Σχεδίασης Η αντικειμενοστρεφής ανάλυση (OO analysis) επιδιώκει τη δημιουργία ενός μοντέλου του προβλήματος: Με τον προσδιορισμό / αναγνώριση των αντικειμένων, καθώς και των σχετικών κλάσεων. Τα αντικείμενα και οι κλάσεις προέρχονται από το πεδίο του προβλήματος. Η αντικειμενοστρεφής σχεδίαση (OO design) προσδιορίζει τον τρόπο με τον οποίο οι πιο πάνω αφηρημένες έννοιες: Είναι δυνατό να αναπαρασταθούν και να αλληλεπιδρούν μεταξύ τους σε επίπεδο λογισμικού. Είναι δυνατό να ενταχθούν σε ένα γενικότερο πλαίσιο που να μοντελοποιεί το υπό εξέταση σύστημα. Σε μικρού και μεσαίου μεγέθους έργα πολλές φορές γίνεται συνένωση τηςανάλυσηςκαιτηςσχεδίασης. 36

Αντιστοιχία Διαγραμμάτων στις Διάφορες Φάσεις Ανάπτυξης ενός Συστήματος Φάση ανάλυσης Διαγράμματα Περιπτώσεων Χρήσης, Κλάσεων, Δραστηριοτήτων Φάση σχεδίασης Διαγράμματα Κλάσεων, Ακολουθίας, Καταστάσεων, Δραστηριοτήτων, Συστατικών 37

Διαγράμματα της UML Εξωτερική όψη Διάγραμμα Περιπτώσεων Χρήσης Στατικά Διαγράμματα αντικειμένων και κλάσεων Εσωτερική όψη Δυναμικά Υλοποίησης Kαταστάσεων, Ακολουθίας, Συνεργασίας, Δραστηριοτήτων Διάγραμμα Διάταξης 38

Διάγραμμα Περίπτωσης Χρήσης (Use-Case Diagram) Περιγράφει τη λειτουργικότητα του συστήματος όπως αυτή γίνεται αντιληπτή από τον χρήστη Στοιχεία συμβολαίων Στατιστικά στοιχεία πωλήσεων Πελάτης Στατιστικά στοιχεία πελατών Πράκτορας ασφαλειών 39

Διαγράμματα Κλάσεων (Class Diagram) ΚΑΤΟΧΟΣ ΥΠΟΛΟΓΙΣΤΗΣ name : string age : integer : χρησιμοποιεί 0..1 1..* Name : string memory : integer Οι κλάσεις συσχετίζονται με διάφορους τρόπους: σύνδεσης εξάρτησης ειδίκευσης ομαδοποίησης 40

Διαγράμματα Αντικειμένων Δείχνουν Συσχετίσεις μεταξύ Συγκεκριμένων στιγμιοτύπων Bob-Κάτοχος ------------------ όνομα: Bob.j ηλικία=32 Bob s job PC Computer ------------------ Όνομα: Dell4 Μνήμη =64 Bob s Home PC Computer ------------------ Όνομα: Pentium Μνήμη =32 41

Διάγραμμα Καταστάσεων (State Diagram) Τα διαγράμματα κατάστασης περιγράφουν την εσωτερική κατάσταση ενός αντικειμένου On first floor Go up (floor) Moving up arrived Moving to 1st floor arrived Go up (floor) Moving down arrived Idle Go down (floor) Time out 42

Διάγραμμα Ακολουθίας (Sequence Diagram) Δείχνει την ακολουθία μηνυμάτων ανάμεσα στα αντικείμενα, με την πάροδο του χρόνου (προγραμματιστές) Print(file) :Computer :PrinterServer :Printer :Queue Print(file) [printer free] Print(file) [printer busy] Store(file) 43

Διάγραμμα Συνεργασίας (Collaboration Diagram) Δίνει μεγαλύτερη έμφαση στο περιεχόμενο και στις σχέσεις μεταξύ των αντικειμένων (πελάτες) :Computer :Queue 1:Print(file) [printer busy] 1.2: Store(file) :PrinterServer [printer free] 1.1: Print(file) :Printer 44

Διάγραμμα Δραστηριοτήτων (Activity Diagram) Δίνει την ακολουθιακή ροή των δραστηριοτήτων Χρησιμοποιούνται για την περιγραφή ροών εργασιών. Περιέχει προσδιορισμούς των μηνυμάτων που στέλνονται ΠαράθυροΠελάτη.Εκτύπωση ( ) [ Δίσκος γεμάτος ] Εμφάνισε μήνυμα «Δίσκος γεμάτος» [ Ελεύθερος χώρος δίσκου ] Εμφάνισε μήνυμα «Εκτύπωση» στην οθόνη Μετακίνησε κουτιά μηνυμάτων Εκτυπωτής.Εκτύπωση() Δημιούργησε postscript αρχείου 45

Εισαγωγή στο Visual Paradigm for UML 2.0 46

Εισαγωγή στο Visual Paradigm for UML 2.0 47

Διάγραμμα Κλάσεων Το διάγραμμα κλάσεων (class diagram) είναι ένα διάγραμμα που χρησιμοποιείται για την απεικόνιση κλάσεων και των μεταξύ τους σχέσεων. Αποτελεί ένα από τα κυριότερα παραδοτέα της αντικειμενοστρεφούς ανάλυσης και σχεδίασης (OOA&D). Κατά τη μετάβαση από τη φάση ανάλυσης στη φάση σχεδίασης γίνεται προσθήκη περισσότερων λεπτομερειών στο διάγραμμα κλάσεων. Αρχικά (κατά τη φάση της ανάλυσης) γίνεται μοντελοποίηση του προβλήματος και όχι της λύσης. 48

Ονομασία Κλάσης Πρέπει να γίνεται πάντα χρήση ουσιαστικού (ήφράσηςπου περιέχει ουσιαστικό) η χρήση ρήματος είναι ένδειξη ότι έχει γίνει κάποιο λάθος: Print λάθος, αλλά Report σωστό. Withdraw λάθος, αλλά Withdrawal ή Withdraw Transaction σωστό. Πρέπει πάντα να γίνεται χρήση του ουσιαστικού σε ενικό αριθμό: Messages λάθος, Message σωστό. 49

Συσχετίσεις (κανονικές normal) Συσχετίσεις (associations) είναι δυνατό να υπάρχουν ανάμεσα σε κλάσεις. Μπορούν να οριστούν ως μια εννοιολογική σύνδεση ή σχέση ανάμεσα σε δύο ή περισσότερες κλάσεις. Παράδειγμα: Employer employs employed by Employee Η συσχέτιση ανάμεσα στην κλάση Εργοδότης (Employer) και στην κλάση Υπάλληλος (Employee) είναι ότι ο Εργοδότης προσλαμβάνει ( employs ) τον Υπάλληλο ή εναλλακτικά ότι ο Υπάλληλος έχει προσληφθεί από ( employed by ) τον Εργοδότη. 50

Πολλαπλότητα Η πολλαπλότητα (multiplicity) μιας συσχέτισης προσδιορίζει αν είναι 1 προς 1, 1 προς πολλά, κ.λπ.: Ένα και μόνο ένα 1 Κανένα ή ένα 0..1 Μηδέν ή οποιοσδήποτε αριθμός 0..* Οποιοσδήποτε αριθμός * Ένα ή περισσότερα 1..* Από ένα έως εννιά 1..9 Μη συνεχόμενες σειρές τιμών 3..5,8,12..20 Η πολλαπλότητα μπορεί επίσης να απεικονισθεί (σε αγκύλες) στις ιδιότητες, π.χ. middle_name[0..2] ή order_line[*]. 51

Συναρμολόγηση (aggregation) Η συναρμολόγηση (aggregation) είναι μια ιδιαίτερη περίπτωση συσχέτισης. Απεικονίζει τη σχέση: Αποτελείται-από ( consists-of ). Περιέχει ( contains ). Έχει ( has ). Είναι-ένα-άθροισμα-από ( is-an-aggregation-of ). Παραδείγματα: Αυτοκίνητο μηχανή, κιβώτιο ταχυτήτων, ρόδες. Η/Υ οθόνη, ποντίκι, κυρίως-κουτί, πληκτρολόγιο. 52

Απεικόνιση Συναρμολόγησης Για την απεικόνισή της χρησιμοποιείται το σύμβολο του διαμαντιού (ρόμβου). Το διαμάντι είναι προσαρτημένο στην κλάση που απεικονίζει την οντότητα που είναι το αποτέλεσμα της συναρμολόγησης (aggregating entity) (σύνθετη κλάση). car engine body windscreen Μεταβατικότητα: Αν τα αντικείμενα της κλάσης C είναι part-of των αντικειμένων της κλάσης B και η B είναι part-of ΑΤΟΤΕηC είναι part-of Α. Αντι-συμμετρικότητα: Αν η Β είναι part-of ΑΤΟΤΕηΑδεν είναι part-of B 53

Σύνθεση (composition) Οόροςσυναρμολόγηση (aggregation) χρησιμοποιείται όταν οι επιμέρους απλούστερες (συνιστώσες) κλάσεις έχουν διάρκεια ζωής ανεξάρτητη από αυτή της σύνθετης κλάσης. Π.χ. Μια μηχανή αυτοκινήτου είναι δυνατό να υπάρξει και έξω από ένα αυτοκίνητο. Αν οι επιμέρους απλούστερες κλάσεις έχουν διάρκεια ζωής που συμπίπτει με αυτή της σύνθετης κλάσης, τότε χρησιμοποιείται ο όρος σύνθεση (composition). Π.χ. Οι συνιστώσες που αποτελούν ένα αντικείμενο που παριστάνει ένα παράθυρο (Window) έχουν διάρκεια ζωής που συμπίπτει με αυτή του παραθύρου. Ησύνθεση(composition) συνήθως σημαίνει is made up of «είναι φτιαγμένο από». 54

Απεικόνιση Σύνθεσης Για το διαγραμματικό διαχωρισμό συναρμολόγησης και σύνθεσης χρησιμοποιείται το σύμβολο του διαμαντιού (ρόμβου) γεμάτο (filled) για την απεικόνιση της σύνθεσης. window scrollbar panel 55

Κληρονομικότητα (inheritance) Η κληρονομικότητα (inheritance) είναι μια (σημαντική) ιδιαίτερη μορφή συσχέτισης, η οποία απεικονίζει και εκφράζει τη σχέση: είναι-ένα-είδος ( is-a-kind-of, AKO ). Παραδείγματα Οσκύλος, η γάτα, η φάλαινα είναι ένα είδος Θηλαστικού. Ένα διθέσιο αυτοκίνητο, ένα φορτηγάκι είναι είδη Αυτοκινήτου. Αντιπαράδειγμα: Οποιαδήποτε συναρμολόγηση (τμήματα ενός όλου), π.χ. Αυτοκίνητο μηχανή, κιβώτιο ταχυτήτων, ρόδες. Η κληρονομικότητα (inheritance) επιτρέπει: Ειδίκευση (specialisation): Επέκταση της λειτουργικότητας μιας υπάρχουσας κλάσης. Γενίκευση (generalisation): Μοίρασμα κοινών στοιχείων ανάμεσα σε 2 ή περισσότερες κλάσεις. Είναι ένας από τους βασικούς μηχανισμούς για την επαναχρησιμοποίηση του κώδικα (code reuse). 56

Απεικόνιση Κληρονομικότητας & Βασική Ορολογία Απεικονίζεται με ένα (κλειστό) βέλος τριγωνικής μορφής. Χρησιμοποιούνται οι ακόλουθοι όροι (Γενίκευση Ειδίκευση (Generalization-Specialization)): Κλάση βάσης (base class) και παραγόμενη κλάση (derived class). Υπερκλάση (super class) και pet υποκλάση (sub class). Πατρική κλάση (parent class) και cat dog κλάση παιδί (child class). Το τριγωνικό βέλος που χρησιμοποιείται για την απεικόνιση της κληρονομικότητας δείχνει προς την υπερκλάση. 57

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

Προστατευμένες Ιδιότητες Στα πλαίσια μιας ιεραρχίας κληρονομικότητας απαιτείται ασθενέστερος περιορισμός της ορατότητας. Γιατολόγοαυτόοιιδιότητεςπροσδιορίζονταιως προστατευόμενες (protected), δηλαδή ως ορατές στο εσωτερικό της κλάσης και σε όλες τις υποκλάσεις της. Το σύμβολο # δηλώνει ότι η συγκεκριμένη ιδιότητα είναι προστατευόμενη. 59

Δημιουργία Διαγράμματος Κλάσεων Προσδιορισμός Αντικειμένων / Κλάσεων Οποιαδήποτε οντότητα του πραγματικού κόσμου μπορεί να παρασταθεί ως αντικείμενο. Οτιδήποτε μπορεί να εκφραστεί με χρήση ουσιαστικού μπορεί να είναι αντικείμενο. Ένα αντικείμενο μπορεί να είναι: Κάτι χειροπιαστό, π.χ. ένα αυτοκίνητο. Μια διεργασία, π.χ. ο έλεγχος μιας μηχανής (engine test). Μια σχέση, π.χ. ένα συμβόλαιο. Μια θεωρητική έννοια, π.χ. οι μιγαδικοί αριθμοί. 60

Ανάλυση Κειμένου (1) Απαιτείται τουλάχιστον μια αρχική περιγραφή του προβλήματος: Σε μια μόνο παράγραφο. Ως αποτέλεσμα συνεντεύξεων. Προερχόμενη από κάποιον ειδικό του πεδίου προβλήματος. Τα ουσιαστικά συνήθως αντιστοιχούν σε αντικείμενα και ιδιότητες: Στο κείμενο που προσδιορίζει τις απαιτήσεις και περιγράφει το σύστημα εντοπίζονται οι φράσεις που περιέχουν ουσιαστικά: Κάποιες θα είναι ξεκάθαρο ότι αντιστοιχούν σε κλάσεις. Κάποιες θα είναι ξεκάθαρο ότι δεν αντιστοιχούν σε τίποτα. Κάποιες θα αναφέρονται σε ιδιότητες. 61

Ανάλυση Κειμένου (2) Τα ρήματα αντιστοιχούν σε συσχετίσεις ή σε μεθόδους. Αν περισσότερες από μία λέξεις ταιριάζουν σε μια έννοια θα πρέπει να επιλεγεί αυτή που έχει πιο πολύ νόημα. Problem Statement (Problem description) Verbs Nouns Associations Operations Objects Attributes 62

Σχεδίαση Διαγράμματος Κλάσεων (Visual Paradigm) Κλάση Γενίκευση Συσχέτιση Συναρμολόγηση Σύνθεση Όνομα κλάσης / Ιδιότητες Μέθοδοι Σχέσεις / Πολλαπλότητα 63

Χειριστές και Περιπτώσεις Χρήσεις Για την ανάλυση των (λειτουργικών) απαιτήσεων στα πλαίσια μιας αντικειμενοστρεφούς μεθοδολογίας χρησιμοποιούνται περιπτώσεις χρήσης (use cases). Ως βάση χρησιμοποιούνται σενάρια χρήσης που παρέχονται από χειριστές (actors) σε ένα πολύ αρχικό στάδιο της ανάλυσης και περιγράφουν τί προορίζεται το σύστημα να κάνει. Ένας χειριστής παριστάνει μια οντότητα εξωτερική του συστήματος που αλληλεπιδρά με αυτό. Είναι μια ιστορία χρήσης του συστήματος σε απάντηση εξωτερικού γεγονότος. Παραδείγματα: «Δήλωση μαθημάτων», «Δημιουργία Παραγγελίας». 64

Χειριστές (actors) Κάθε διαφορετική κατηγορία χρηστών αναπαρίσταται µεένα χειριστή (actor). Επιπλέον κάθε εξωτερικό σύστηµαπου αλληλεπιδρά µε το υπό ανάπτυξη σύστηµα αναπαρίσταται µε ένα χειριστή. Η αναζήτηση και ο καθορισμός των σωστών χειριστών είναι πολύ σημαντική εργασία στην ανάλυση. Βασικές έννοιες Πελάτες (customers): Οοργανισµός που χρηµατοδοτεί την ανάπτυξη του συστήµατος. Χρήστες (users): Οι εργαζόµενοι του οργανισµού για τον οποίο φτιάχνεται το σύστηµακαιοιπελάτες(clients) του οργανισµού που χρηµατοδοτεί την ανάπτυξη του συστήµατος (οι πελάτες του πελάτη). Χειριστές (actors): Είναιοιχρήστεςτουσυστήµατος καθώς και τα εξωτερικά συστήµατα µε τα οποία αλληλεπιδρά το σύστηµα. Είναι αυτοί που περιγράφονται στο µοντέλο των περιπτώσεων χρήσης του συστήµατος. Στις περισσότερες περιπτώσεις οι χειριστές είναι οι άνθρωποι που αλληλεπιδρούν µετοσύστηµα, δηλαδή οι χρήστες. 65

Περιπτώσεις Χρήσεις (Use cases) Το µοντέλο των περιπτώσεων χρήσης περιγράφει το πώς συµπεριφέρεται το σύστηµα για κάθε τύπο χειριστή. Οι περιπτώσεις χρήσης προκύπτουν από τις (λειτουργικές) απαιτήσεις του υπό ανάπτυξη συστήματος. Όταν το μοντέλο των περιπτώσεων χρήσης καθοριστεί για κάθε περίπτωση χρήσης γίνεται η (τεκμηρίωση) προδιαγραφή της (το πιο σημαντικό). Η καταγραφή της Βασικής Ροής γίνεται με την καταγραφή των διαδοχικών ενεργειών του χρήστη και τις διαδοχικές αποκρίσεις του συστήματος. Το στερεότυπο που χρησιμοποιείται για την αναπαράσταση στη UML μιας περίπτωσης χρήσης είναι: 66

Περιπτώσεις Χρήσεις (Use cases) Προδιαγραφή περίπτωσης χρήσης (το πιο σημαντικό). 1. Τίτλος περίπτωσης χρήσης 2. Σύντομη περιγραφή 3. Ροή γεγονότων 3.1. Βασική ροή 3.2. Εναλλακτικές ροές 3.2.1. Εναλλακτική ροή 1 3.2.1. Εναλλακτική ροή 2 4. Μη λειτουργικές απαιτήσεις 5. Προϋποθέσεις (pre-conditions) 6. Μετασυνθήκες (post-conditions) 67

Σχέσεις Ανάμεσα σε Περιπτώσεις Χρήσης Σχέση αλληλεπίδρασης (Association): απλή σχέση ανάμεσα σε χειριστή και σε περίπτωση χρήσης. Σχέση γενίκευσης: Εκφράζει την εμφάνιση κληρονομικότητας (inheritance). Χρησιμοποιείται, τόσο ανάμεσα σε περιπτώσεις χρήσης, όσο και ανάμεσα σε χειριστές (το γνωστό βελάκι) (γενίκευση). Σχέση περιλαμβάνει : Είναι κάποια περίπτωση χρήσης που εκτελείται «υποχρεωτικά» (περιλαμβάνεται) πριν την ολοκλήρωση άλλης περίπτωσης χρήσης (την περιλαμβάνει). Παράδειγμα: H είσοδος στο σύστημα ενός εξουσιοδοτημένου χρήστη <<περιλαμβάνει>> (<<include>>) την περίπτωση χρήσης login. Σχέση επεκτείνει : Οι προεκτάσεις φανερώνουν κάποια εναλλακτική (δλδ προαιρετική) λειτουργικότητα μιας περίπτωσης χρήσης που περιγράφεται από τις προεκτάσεις. Παράδειγμα: αποθήκευση στοιχείων φοιτητή <<επεκτείνει>> (<<extends>>) την περίπτωση χρήσης τροποποίηση καρτέλας φοιτητή. 68

Σχέση Γενίκευσης 69

Σχέση <<περιλαμβάνει>> (<<include>>) 70

Σχέση <<επεκτείνει>> (<<extends>>) Μια περίπτωση χρήσης επεκτείνει κάποια άλλη προσθέτοντας επιπλέον προαιρετικές ενέργειες στη γενική περίπτωση χρήσης. 71

Διάγραμμα Δραστηριοτήτων (Activity Diagram) Περιγράφουν τη ροή των δραστηριοτήτων. Χρησιμοποιούνται για την περιγραφή ροών εργασιών. Ένα βασικό χαρακτηριστικό που πολλές φορές χρησιμοποιείται είναι οι swimlanes. Μια swimlane είναι ένας τρόπος να ομαδοποιείς ενέργειες που γίνονται από τον ίδιο χειριστή (actor) σε ένα διάγραμμα δραστηριοτήτων ή για ομαδοποίηση ενεργειών σε κάποιο τμήμα (thread) Γενικά ένα activity diagram χρησιμοποιείται εάν μια εργασία / διαδικασία είναι πολύ περίπλοκη οπότε θα πρέπει να περιγραφεί ώστε να απλοποιηθεί για την περίπτωση που θέλει ανακατασκευή (refactoring). 72

Διάγραμμα Δραστηριοτήτων (Ορολογία) Η Διακλάδωση αφορά σε ενέργειες / εργασίες που θα πρέπει να γίνουν και οι οποίες θα πρέπει να έχουν ολοκληρωθεί όλες ώστε να μπορούμε να συνεχίσουμε μετά τη Σύνδεση. Ενώ η απόφαση είναι εναλλακτικές ροές ενεργειών / εργασιών. 73

Σχεδιάζοντας ένα Διάγραμμα Δραστηριοτήτων (Visual Paradigm) Επιλέγοντας Activity diagram από το πτυσσόμενο μενού εμφανίζεται η παραπλεύρως Γραμμή Εργαλείων στην οποία βλέπετε με τη σειρά τα πλήκτρα: Αρχικού κόμβου Initial node, Ενέργειας / Δραστηριότητας Activity, Τέλους του Διαγράμματος Activity final node, Ροής μεταφοράς ελέγχου CF Control Flow Απόφασης Decision node Συγχώνευσης Merge node Διακλάδωσης Fork node Σύνδεσης Join node 74

Διαγράμματα Ακολουθίας (Sequence Diagrams) Δείχνουν τη συμπεριφορά των αντικειμένων μέσα σε μια περίπτωση χρήσης. Στον οριζόντιο άξονα παρουσιάζονται τα αντικείμενα που συμμετέχουν. Στον κάθετο άξονα παρουσιάζονται τα μηνύματα που ανταλλάσσονται (χρονική αλληλουχία). 75

Σχεδιάζοντας ένα Διάγραμμα Ακολουθίας (Sequence Diagram) (Visual Paradigm) Τα Sequence Diagrams έχουν τα παραπλεύρως πλήκτρα στη Γραμμή Εργαλείων που εμφανίζεται:

Δημιουργώντας αντικείμενα με dragging Βλέπετε με τη σειρά τα πλήκτρα Δημιουργίας Lifeline Αντικειμένων, Δημιουργίας Μηνύματος κλπ. Εάν έχουμε δημιουργημένο (όπως θα έπρεπε) το Διάγραμμα Περιπτώσεων Χρήσης και το Διάγραμμα Κλάσεων τότε μπορούμε να δημιουργήσουμε τα Αντικείμενα απλά «σύροντάς» τα μέσα στο Διάγραμμα Ακολουθίας. 77

Σχεδιάζοντας ένα Διάγραμμα Ακολουθίας (Sequence Diagram) Ας σχεδιάσουμε ένα μήνυμα από τον "Player" στο "Ball Throw Checker" κάνοντας κλικ στο Message και επιλέγοντας το αντικείμενο του "Ball Throw Checker". Γράψτε ως όνομα μηνύματος το "Throw" (παρατηρήστε ότι παίρνει αρίθμηση 1). 78

Σχεδιάζοντας ένα Διάγραμμα Ακολουθίας (Sequence Diagram) Δημιουργήστε τώρα το μήνυμα (self message) "1.1 Count number of knocked down pins" όπως το προηγούμενο. Απλά επιλέξτε Self Message και όχι απλά Message. Παρατηρήσεις: Για να συνεχίζει η αρίθμηση σωστά πρέπει να επιλέγετε σωστά το «Πλαίσιο ενεργοποίησης» (activation box). Μερικές φορές ένα μήνυμα στέλνεται υπό συνθήκη (guard) ([Strike]). 79

Ορισμοί και στοιχεία Η διακεκομμένη γραμμή κάτω από κάθε αντικείμενο λέγεται Γραμμή Ζωής (Lifeline). Το λεπτό παραλληλόγραμμο που καλύπτει σε κάποιο σημείο τη Lifeline λέγεται Πλαίσιο ενεργοποίησης (activation box) και μας δείχνει για πόσο είναι ενεργό στη μνήμη RAM το αντικείμενο. Αντίστοιχα τα μηνύματα αντιστοιχούν σε μεθόδους άρα εδώ ουσιαστικά συμπληρώνουμε τις μεθόδους της εφαρμογής μας. Άρα το :Ball throw checker ποιες μεθόδους περιλαμβάνει?? Throw() και Calculate knocked down pins(). 80