ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Η Αντικειμενοστρεφής Τεχνολογία Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 202-203 Περιεχόμενο του μαθήματος Η έννοια του αντικειμένου κλάσεις αντικείμενα σχέσεις μεταξύ κλάσεων Συμβολισμοί και πρότυπα Η γλώσσα μοντελοποίησης UML 2
Αντικειμενοστρεφής ανάπτυξη λογισμικού Αντικειμενοστρεφής Χαρακτηρισμός που σημαίνει «στραμμένος (προσανατολισμένος) σε αντικείμενα» και αποδίδεται σ εκείνο τον τρόπο σκέψης κατά την ανάπτυξη λογισμικού, στο οποίο τα «αντικείμενα» είναιοιβασικέςδομικέςμονάδες Αντικείμενο Δομικό συστατικό του λογισμικού. Κάθε αντικείμενο έχει: Κατάσταση: που περιγράφει όλες τις στατικές του ιδιότητες, όπως τιμές σε μεταβλητές μνήμης Συμπεριφορά: τρόπο με τον οποίο ανταποκρίνεται σε κλήσεις από το περιβάλλον του Ταυτότητα: μοναδική διάκριση από τα ομοειδή του Μπορεί να θεωρηθεί ως η συγχώνευση δύο εννοιών που κατέχουν δεσπόζουσα θέση στο δομημένη ανάπτυξη: της εγγραφής (record) και της συνάρτησης ή διαδικασίας (function ή procedure) Αν σε μια εγγραφή (συλλογή μεταβλητών μνήμης) προσθέσουμε ενεργά συστατικά (μονάδες προγράμματος που εκτελούν υπολογισμούς), τότε μιλάμε για αντικείμενο κι όχι για εγγραφή Το αντικείμενο συνδυάζει και ένα σύνολο δεδομένων και ένα σύνολο συναρτήσεων που χειρίζονται τα δεδομένα αυτά 3 Ορισμοί Κλάση (τάξη) Το σύνολο των αντικειμένων που έχουν την ίδια δομή και την ίδια συμπεριφορά Στιγμιότυπο (εκδοχή) Κάθε αντικείμενο αποτελεί ένα μοναδικό και συγκεκριμένο στιγμιότυπο (instance) τηςκλάσηςστηνοποίαανήκει Πεδίο (ιδίωμα ή ιδιότητα) Μια μεταβλητή η οποία παριστάνει ένα χαρακτηριστικό γνώρισμα του αντικειμένου Το σύνολο των πεδίων ενός αντικειμένου αποτελεί την κατάσταση αυτού Μέθοδος Ένα ενεργό συστατικό λογισμικού (συνάρτηση, διαδικασία), η οποία υλοποιεί ένα στοιχείο συμπεριφοράς ενός αντικειμένου Το σύνολο των μεθόδων ενός αντικειμένου καθορίζει τη συμπεριφορά του 4
Παραδείγματα αντικειμένων που ομαδοποιούνται σε κλάσεις 5 Αναπαράσταση κλάσεων Μάθημα Ελέφαντας Χρώμα: string Αριθμός χαυλιοδόντων: integer Τοποθεσία: string Βάρος: real Ύψος: real κίνηση_προς (τοποθεσία) πλύσιμο (ημερομηνία) λήψη_τροφής ( ποσότητα, ημερομηνία, ώρα) Κωδικός μαθήματος Θεματική ενότητα Τίτλος Διδάσκων Προσθήκη Μαθήματος () Διαγραφή Μαθήματος () Μεταβολή στοιχείων Μαθήματος () Ανάθεση Μαθήματος () Καθηγητής Αρ. Ταυτότητας Όνομα Επώνυμο Διεύθυνση Τηλέφωνο Προσθήκη Καθηγητή () Διαγραφή Καθηγητή () Μεταβολή στοιχείων Καθηγητή () 6
Στιγμιότυπα κλάσεων (αντικείμενα) Καθηγητής 0 Αρ. Ταυτότητας: Β987654 Όνομα: Νικόλαος Επώνυμο: Νικολάου Διεύθυνση: Χ. Τρικούπη και Φάωνος Τηλέφωνο: 225036600 Προσθήκη Καθηγητή () Διαγραφή Καθηγητή () Μεταβολή στοιχείων Καθηγητή () Καθηγητής 02 Αρ. Ταυτότητας: Α23456 Όνομα: Γεωργία Επώνυμο: Γεωργίου Διεύθυνση: Σαπφούς 5 Τηλέφωνο: 225036699 Προσθήκη Καθηγητή () Διαγραφή Καθηγητή () Μεταβολή στοιχείων Καθηγητή () Μάθημα 0 Κωδικός μαθήματος: ΠΛΡ- Θεματική ενότητα: ΠΛΗΡΟΦΟΡΙΚΗ Τίτλος: Τεχνολογία Λογισμικού Διδάσκων: Β987654 Προσθήκη Μαθήματος () Διαγραφή Μαθήματος () Μεταβολή στοιχείων Μαθήματος () Ανάθεση Μαθήματος () 7 Σχέσεις μεταξύ κλάσεων Καθηγητής ρόλοι Αρ. Ταυτότητας Όνομα Επώνυμο Διεύθυνση Τηλέφωνο Προσθήκη Καθηγητή () Διαγραφή Καθηγητή () Μεταβολή στοιχείων Καθηγητή () Διδάσκων Διδάσκει όνομα Μάθημα Αντικείμενο..3 Κωδικός μαθήματος Θεματική ενότητα Τίτλος Διδάσκων πολλαπλότητα Παριστάνουν σχέσεις μεταξύ των πεδίων των κλάσεων Μοντελοποιούν δυνατές συσχετίσεις μεταξύ πραγματικών αντικειμένων Προσθήκη Μαθήματος () Διαγραφή Μαθήματος () Μεταβολή στοιχείων Μαθήματος () Ανάθεση Μαθήματος () 8
Κύριοι τύποι σχέσεων Συσχέτιση (association) η πιο γενική από τις σχέσεις Κληρονομικότητα (inheritance) αποτελεί κεντρικό στοιχείο της αντικειμενοστρεφούς φιλοσοφίας και βασικό μέσο ταξινόμησης (classification) των οντοτήτων του πραγματικού κόσμου δύο κλάσεις συνδέονται με κληρονομικότητα όταν η μια αποδίδει στην άλλη χαρακτηριστικά της στην περίπτωση που μια κλάση κληρονομεί χαρακτηριστικά απόπερισσότερεςτηςμιαςκλάσηςτότεμιλάμεγια πολλαπλή κληρονομικότητα (multiple inheritance) Συναρμολόγηση (aggregation) εκφράζει τη σύνθεση συνόλων από απλούστερα μέρη δεν υπάρχει απόδοση χαρακτηριστικών από μια κλάση σε άλλη και άρα δε μιλάμε για κληρονομικότητα 9 Παράδειγμα απλής κληρονομικότητας Φυσικό Πρόσωπο Αρ. Ταυτότητας Όνομα Επώνυμο Διεύθυνση Τηλέφωνο Γενίκευση Τμήμα Φοιτητής Προσθήκη Φοιτητή () Διαγραφή Φοιτητή () Μεταβολή στοιχείων Φοιτητή () Ειδικότητα Βαθμίδα Καθηγητής Προσθήκη Καθηγητή () Διαγραφή Καθηγητή () Μεταβολή στοιχείων Καθηγητή() Εξειδίκευση 0
Εξάσκηση Να ταξινομηθούν οι παρακάτω οντότητες σε μια ιεραρχία, χρησιμοποιώντας το μηχανισμό της κληρονομικότητας: Δελφίνι, Φάλαινα, Ψάρι, Θηλαστικό, Αρκούδα, Άνθρωπος, Προγραμματιστής, Εργαζόμενος, Καθηγητής, Ζωντανός οργανισμός, Συνταξιούχος, Καθηγητής πιάνου, Πέστροφα, Τσιπούρα Παράδειγμα συναρμολόγησης πολλαπλότητα Αεροσκάφος 2 2 Άτρακτος Φτερό Κινητήρας Σύστημα τροχών Σύστημα πλοήγησης Δομικό τμήμα φτερού Δεξαμενή καυσίμων Υδραυλικό σύστημα 2
Εξάσκηση Περιγράψετε τη συναρμολόγηση ενός αυτοκινήτου. Περιοριστείτε στα βασικά συστατικά και να μην φτάσετε πάνω από δύο επίπεδα λεπτομέρειας 3 Χαρακτηριστικά της αντικειμενοστρεφούς τεχνολογίας Η ευκολότερη αντιστοίχιση με έννοιες του πραγματικού κόσμου μέσω της ομαδοποίησης δεδομένων και λειτουργιών μέσα στις κλάσεις είναι περισσότερο κατανοητή η αναπαράσταση οντοτήτων από ένα (σύνθετο) ενιαίο συστατικό λογισμικού (την κλάση) παρά από πολλά ανεξάρτητα μεταξύ τους Η δυνατότητα κάθε κλάσης να διαχειρίζεται (μέσω των λειτουργιών της) τα δεδομένα που περικλείει κάθε κλάση έχει την ευθύνη να μεταβάλει και να διαθέτει στο περιβάλλον της τα δεδομένα που περικλείει Ο πλούτος των σχέσεων μεταξύ των κλάσεων οι σχέσεις της κληρονομικότητας / γενίκευσης και της συναρμολόγησης δεν υπάρχουν καν ως έννοιες στη δομημένη ανάλυση 4
Συμβολισμοί και πρότυπα Για πολλά χρόνια επικράτησε μια σύγχυση και ένας πλουραλισμός συμβολισμών, που οφείλονταν: στο σχετικά νέο της εμφάνισης της αντικειμενοστρεφούς τεχνολογίας στους κατασκευαστές λογισμικού η μη επικράτηση κάποιας προσέγγισης ο ανταγωνισμός στην αγορά εργαλείων και συμβουλευτικών υπηρεσιών ανάπτυξης λογισμικού η δομημένη κουλτούρα των περισσότερων κατασκευαστών λογισμικού η (αρχικά) περιορισμένη ευρύτητα του πεδίου εφαρμογών τωνοποίωνη ανάπτυξη με αντικειμενοστρεφή λογική θα ήταν περισσότερο πρόσφορη Τα πρώτα βήματα έγιναν στις αρχές τις δεκαετίας του 990 με τη συνεργασία των επικρατέστερων αντικειμενοστρεφών προσεγγίσεων ανάπτυξης λογισμικού (Booch, Jacobson και Rumbaugh) τη σύμπραξη μεγάλων κατασκευαστών λογισμικού και εργαλείων (Digital Equipment, Hewlett Packard, Oracle, Texas Instruments, Unisys, Microsoft) Η συνεργασία αυτή κατέληξε στην περιγραφή ενός προτύπου συμβολισμών τη UML 5 UML (Unified Modelling Language) Είναι μια οπτική (visual) γλώσσα μοντελοποίησης Έχει εκφραστικές δυνατότητες για την: Απεικόνιση Προδιαγραφή Τεκµηρίωση Κατασκευή των προϊόντων της αναπτυξιακής διαδικασίας συστηµάτων (λογισµικού ή όχι). Η UML είναι γλώσσα μοντελοποίησης και όχι μέθοδος. Οι περισσότερες μέθοδοι αποτελούνται τουλάχιστον θεωρητικά από μια γλώσσα μοντελοποίησης αλλά και από μια διαδικασία. 6
UML (2) Είναι απόγονος του κύματος των αντικειμενοστραφών μεθόδων ανάλυσης και σχεδιασμού που εμφανίστηκαν στα τέλη της δεκαετίας του 80. Αποτελεί τώρα πρότυπο της OMG (Object Management Group- Ομάδα Διαχείρισης Αντικειμένων). Προήλθε από την ενοποίηση των συµβολισµών που χρησιµοποιούσαν οι μεθοδολογίες Booch, OMT, OOSE κ.λπ. Ενσωµατώνει τις ιδέες καλής πρακτικής από τη βιοµηχανία Λογισµικού Υλοποιεί την ανάγκη της βιοµηχανίας λογισµικού για μια ενιαία γλώσσα μοντελοποίησης. Είδη συστηµάτων που μοντελοποιούνται µε τη UML Συστήµατα µε έµφαση στο λογισµικό (software-intensive systems) Επιχειρησιακά συστήµατα (business systems) Συστήµατα που δεν περιέχουν λογισµικό (non-software systems) 7 Διαγράμματα UML Χρησιμοποιώντας τη UML κάθε σύστημα λογισμικού μπορεί να αναπαρασταθεί με βάση πολλαπλές απόψεις σε κάθε μια από τις οποίες αντιστοιχούν ένα ή περισσότερα διαγράμματα Χρήστη Άποψη συστήματος Διάγραμμα UML Διάγραμμα Περιπτώσεων Χρήσης Στατική Διάγραμμα Κλάσεων Αλληλεπίδρασης Ροής Ελέγχου Φυσική Διάγραμμα Συνεργασίας Διάγραμμα Ακολουθίας Διάγραμμα Συνεργασίας Διάγραμμα Ακολουθίας Διάγραμμα Συστατικών Διάγραμμα Ανάπτυξης
Διάγραμμα περιπτώσεων χρήσης Περιγράφει την αλληλεπίδραση μεταξύ χρηστών και συστημάτων. 9 Διάγραμμα κλάσεων Απεικονίζει τη στατική δομή των εννοιών, των τύπων και των τάξεων Δείχνει βασικές οντότητες που υπάρχουν στο σύστημα και ποια είναι τα αμφισβητήσιμα σημεία που χρειάζονται περισσότερη δουλειά. 20
Διαγράμματα αλληλεπίδρασης Περιγράφουν πώς συνεργάζονται ομάδες αντικειμένων. Οπτικοποιούν τη ροή των μηνυμάτων 2 Διάγραμμα δραστηριότητας Απεικονίζει τη συμπεριφορά με τις δομές ελέγχου. Μπορεί να απεικονίσει τη ροή των βημάτων μιας περίπτωσης χρήσης ή την υλοποίηση μιας μεθόδου. Ενθαρρύνει την παράλληλη συμπεριφορά. Μας επιτρέπει να επιλέξουμε τη σειρά με την οποία θα κάνουμε τις διάφορες ενέργειες, απλώς θέτει τους βασικούς κανόνες της ακολουθίας που πρέπει να τηρήσουμε. 22
Διάγραμμα κατάστασης Περιγράφει όλες τις πιθανές καταστάσεις στις οποίες μπορεί να βρεθεί ένα αντικείμενο και το πώς η κατάστασή του αλλάζει ως αποτέλεσμα των συμβάντων που φτάνουν σε αυτό. 23 Διάγραμμα συστατικών Το διάγραμμα εξαρτημάτων είναι ένα διάγραμμα δομής υλοποίησης που χρησιμοποιείται για να μοντελοποιήσει: Πηγαίο κώδικα Εκτελέσιμες εκδόσεις Βάσεις δεδομένων Δυναμικά προσαρμοζόμενα συστήματα
Διάγραμμα ανάπτυξης Το διάγραμμα ανάπτυξης είναι ένα διάγραμμα δομής υλοποίησης που παρουσιάζει τον τρόπο διαμόρφωσης των υπολογιστικών κόμβων του συστήματος κατά τη λειτουργία του. Περιλαμβάνει: Υπολογιστικούς κόμβους Σχέσεις εξάρτησης και σύνδεσης Εξαρτήματα (μέσα σε κόμβους) Πακέτα (που ομαδοποιούν κόμβους)