1 Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στην αντικειµενοστρεφή τεχνολογία ρ. Πάνος Φιτσιλής
Περιεχόµενα Γιατί µοντελοποιούµε Εισαγωγή στη UML Ένα απλό παράδειγµα 2
Γιατί µοντελοποιούµε; Ησηµασία της µοντελοποίησης Οι τέσσερις βασικές αρχές της µοντελοποίησης Ηαντικειµενοστρεφής µοντελοποίηση 3
Πραγµατικότητα - Μοντέλο Ferrari Πραγµατικότητα Σπίτι Γιώργος ΣΗΜΑΣΙΟΛΟΓΙΚΟ ΧΑΣΜΑ Μοντέλο Σπίτι ζει οδηγεί Αυτοκίνητο Γιώργος 4
5 Λόγοι που µοντελοποιούµε Τα µοντέλα µας επιτρέπουν να οπτικοποιήσουµε τοσύστηµα που θέλουµε ναφτιάξουµε Τα µοντέλα µας επιτρέπουν να προσδιορίσουµε την δοµή και τη συµπεριφορά του συστήµατος Τα µοντέλα µας δίνουν πρότυπα που µας καθοδηγούν στην κατασκευή του συστήµατος Με τα µοντέλα τεκµηριώνουµε τις αποφάσεις που έχουµε λάβει
6 Οι αρχές της µοντελοποίησης Η επιλογή των µοντέλων επηρεάζει τον τρόπο επίλυσης του προβλήµατος καθώς και τη λύση Κάθε µοντέλο παρουσιάζει το σύστηµα σε διαφορετικό επίπεδο λεπτοµέρειας Τα καλύτερα µοντέλα είναι αυτά που περιγράφουν σωστά την πραγµατικότητα Είναι δύσκολο να περιγράψεις το σύστηµα µε µόνο ένα µοντέλο. Η χρήση πολλών ανεξάρτητων µικρών µοντέλων περιγράφει το σύστηµα καλύτερα
7 Αντικειµενοστρεφή µοντέλα Ανάλυση Σχεδιασµός Υλοποίηση Τι θέλουµε να φτιάξουµε Πως θα το φτιάξουµε Κώδικας Αντικειµενοστρεφής Ανάλυση Αντικειµενοστρεφής Σχεδιασµός Java, C#
Εισαγωγή στην UML -1 UML (Unified Modeling Language) Είναι το στάνταρτ De jure (Object Management Group OMG) De facto γιατί χρησιµοποιείται παγκοσµίως και από όλες τις εταιρείες πληροφορικής Είναι µια διαγραµµατική γλώσσα εν είναι µέθοδος εν είναι διαδικασία 8
Η ιστορία της UML Χρόνος Έτος Έκδοση 2003: UML 2.0 2001: UML 1.4 1999: UML 1.3 1997: UML 1.0, 1.1 1996: UML 0.9 & 0.91 1995: Unified Method 0.8 Άλλες µέθοδοι Booch 93 Grady Booch 91 OMT - 2 OMT 1 Objectory Ivar Jacobson James Rumbaugh 9
Εισαγωγή στην UML - 2 Η UML είναι µια γλώσσα για Οπτικοποίηση του συστήµατος(visualisation) ηµιουργία προδιαγραφών (specifications) Κατασκευή του συστήµατος (construction) Τεκµηρίωση του συστήµατος (documentation) 10
Που µπορεί να χρησιµοποιηθεί η UML Πληροφοριακά συστήµατα επιχειρήσεων Τραπεζικά και οικονοµικά συστήµατα Τηλεπικοινωνίες Internet Συστήµατα πραγµατικού χρόνου και κατανεµηµένα συστήµατα Ιατρικές εφαρµογές κ.λπ. 11
Βασικά δοµικά συστατικά της UML Τα βασικά δοµικά συστατικά της UML είναι: Στοιχεία (things) Σχέσεις ιαγράµµατα 12
Τα στοιχεία της γλώσσας Είναι τα στοιχεία µε ταοποία χτίζουµε ταµοντέλα Τα στοιχεία είναι 4 ειδών οµικά στοιχεία Στοιχεία συµπεριφοράς Στοιχεία οµαδοποίησης Στοιχεία σχολιασµού 13
14 οµικά στοιχεία Χρησιµοποιούνται για την κατασκευή των στατικών µοντέλων και είναι είτε λογικά (conceptual) είτε φυσικά Υπάρχουν 7 είδη δοµικών στοιχείων Κλάσεις (class) ιαπροσωπίες (interfaces) Συνεργασίες (collaborations) Περιπτώσεις χρήσης (use cases) Ενεργές κλάσεις (active classes) Συστατικά (components) Κόµβοι (nodes)
15 Στοιχεία συµπεριφοράς Τα στοιχειά συµπεριφοράς περιγράφουν την δυναµική συµπεριφορά του συστήµατος στον χρόνο ύο είναι τα στοιχεία συµπεριφοράς: Οι αλληλεπιδράσεις ένα σύνολο µηνυµάτων που ανταλλάσσεται µε σκοπό την επίτευξη µιας συµπεριφοράς Οι µηχανές καταστάσεων Περιγράφουν τις καταστάσεις ενός αντικείµένου Περιγράφουν τον κύκλο ζωής ενός αντικειµένου
Στοιχεία οµαδοποίησης και σχολιασµού Τα στοιχεία οµαδοποίησης χρησιµοποιούνται για την οργάνωση των UML µοντέλων σε λογικές ενότητες Πακέτα (packages) Τα στοιχεία σχολιασµού χρησιµοποιούνται για να επεξηγήσουν τα UML µοντέλα. 16
Βασικά δοµικά συστατικά της UML Στοιχεία (things) Σχέσεις ιαγράµµατα 17
Σχέσεις της UML Υπάρχουν τεσσάρων ειδών σχέσεις: Συσχέτισης (dependency) Σύνδεσης (association) Γενίκευσης (generalisation) Πραγµατοποίησης (realisation) 18
Βασικά δοµικά συστατικά της UML Στοιχεία (things) Σχέσεις ιαγράµµατα 19
20 ιαγράµµατα της UML ιάγραµµα Κλάσεων (Class Diagram) ιάγραµµα Αντικειµένων (Object Diagram) ιάγραµµα ΠεριπτώσεωνΧρήσης(Use Case Diagram) ιάγραµµα Ακολουθίας (Sequence Diagram) ιάγραµµα Επικοινωνίας (Communication Diagram) ιάγραµµα Καταστάσεων/Πρωτοκόλλου (State Machine Diagram/ Protocol State Machine Diagram) ιάγραµµα ραστηριοτήτων (Activity Diagram) ιάγραµµα ιάταξης (Deployment Diagram) ιάγραµµα Συστατικών(Component Diagram)
21 Ο κύκλος ανάπτυξης λογισµικού Η UML δεν περιέχει διαδικασία και είναι ανεξάρτητη Ενοποιηµένη προσέγγιση (Unified Process) Για να την εφαρµόσουµε πρέπει να ορίσουµε µια διαδικασία η οποία πρέπει Να βασίζεται σε περιπτώσεις χρήσης για να περιγράψουµε την συµπεριφορά του συστήµατος (use case driven) Να περιλαµβάνει µια αρχιτεκτονική για την περιγραφή και κατασκευή του συστήµατος (architecture based) Να είναι επαναλαµβανόµενη (iterative)
22 Αρχιτεκτονική Αρχιτεκτονική είναι το σύνολο των αποφάσεων σχετικά µε Τηνοργάνωσητουσυστήµατος Τηνεπιλογήτωνδοµικών στοιχείων και των διαπροσωπιών από τα οποία αποτελείται το σύστηµα Την συµπεριφορά των στοιχείων ώστε να επιτύχουν συνεργασίες Την σύνθεση των στοιχείων (δοµικών και συµπεριφοράς) σε υποσυστήµατα) Η αρχιτεκτονική ασχολείται επίσης µε θέµατα όπως Χρηστικότητα Απόδοση Αξιοπιστία κ.λπ.
23 Αρχιτεκτονική συστήµατος Λειτουργικότητα Σχεδιασµός Υλοποίηση Σύνθεση συστήµατος ιοίκηση σχηµατισµώ Περιπτώσεις Χρήσης ιαδικασία ιάταξη Απόδοση Αξιοπιστία Τοπολογία Παράδοση Εγκατάσταση
Φάσεις κύκλου ζωής Οι φάσεις του κύκλου ζωής είναι τέσσερις: Σύλληψη Επεξεργασία Κατασκευή Μετάβαση 24
Ο κύκλος ζωής λογισµικού ΕΡΓΑΣΙΕΣ ΦΑΣΕΙΣ Σύλληψη Επεξεργασία Κατασκευή Μετάβαση Μοντελοποίηση επιχειρηµατικών διαδικασιών Προδιαγραφές Ανάλυση και σχεδίαση Υλοποίηση Έλεγχος ιάταξη ιοίκηση Σχηµατισµών ιαχείριση Έργου Περιβάλλον 25
Τοπιοαπλόπαράδειγµα Ο µόνος τρόπος για να µάθεις µια γλώσσα είναι να αρχίσεις να την χρησιµοποιείς Brian Kernighan Dennis Ritchie Να φτιάξουµε το πρόγραµµα που τυπώνει hello world 26
Ο κώδικας java import java.awt.graphics; class HelloWorld extends java.applet.applet { public void paint (Graphics g) { g.drawstring("hello, World!", 10, 10); } } 27
Ο κώδικας java import java.awt.graphics; class HelloWorld extends java.applet.applet { public void paint (Graphics g) { g.drawstring("hello, World!", 10, 10); } } 28
Ο κώδικας java import java.awt.graphics; class HelloWorld extends java.applet.applet { public void paint (Graphics g) { g.drawstring("hello, World!", 10, 10); } } 29
Ο κώδικας java import java.awt.graphics; class HelloWorld extends java.applet.applet { public void paint (Graphics g) { g.drawstring("hello, World!", 10, 10); } } 30
31 ΗκλάσηHelloWorld Όνοµα κλάσης Μέθοδος
32 Σχέσεις κλάσης HelloWorld Σχέση Γενίκευσης Συσχέτιση
Ιεραρχία κλάσεων java 33
Ιεραρχία πακέτων 34
Τα συστατικά (components) 35
Τι είναι σηµαντικό... Είναι σηµαντικές Ικανότητα ανάλυσης Ικανότητα σχεδιασµού Γνώση Αντικειµενοστρεφούς ανάπτυξης συστηµάτων Ικανότητα ανάπτυξης κώδικα εν είναι σηµαντικό Απλή γνώση διαγραµµάτων UML 36
Παρουσιάσαµε Γιατί µοντελοποιούµε... Βασικές έννοιες UML Ένα απλό παράδειγµα Τι είναι σηµαντικό 37