1 Ελληνικό Ανοικτό Πανεπιστήµιο Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας ρ. Πάνος Φιτσιλής
Περιεχόµενα Βασικές έννοιες αντικειµενοστεφούς τρόπου ανάπτυξης Τι είναι κλάση Τι είναι αντικείµενο 2
Βασικές έννοιες Τέσσερις βασικές έννοιες Αφαίρεση (abstraction) Κελυφοποίηση (encapsulation) οµικότητα (modularity) Ιεραρχία (hierarchy) Object Orientation Abstraction Encaptulation Modularity Hierarchy 3
4 Τι είναι αφαίρεση Πωλητής Πελάτης Προϊόν
5 Πως ορίζεται η αφαίρεση Είναι βασικός τρόπος για να χειρισθούµε την πολυπλοκότητα Ορισµοί: Αναγνωρίζουµε τις οµοιότητες των αντικειµένων, καταστάσεων και διαδικασιών και εστιάζουµε την προσοχή µας στα κοινά χαρακτηριστικά που µας αφορούν [Hoare] Είναι µια απλοποιηµένη περιγραφή ενός συστήµατος που εστιάζει την προσοχή στα φαινόµενα-ιδιότητες που µας αφορούν [Shaw] Περιγράφει τα βασικά χαρακτηριστικά που διαφοροποιούν τα αντικείµενα από άλλα και προσδιορίζουν τα πλαίσια αυτών [Booch]
6 Είδη αφαίρεσης Τέσσερα είδη αφαίρεσης Αφαίρεση οντοτήτων Ένα αντικείµενο του πεδίου προβλήµατος Αφαίρεση ενεργειών Οµαδοποίηση όµοιων ενεργειών Αφαίρεση αρχιτεκτονικών επιπέδων ηµιουργία επιπέδων για χειρισµό πολυπλοκότητας Τυχαία αφαίρεση Τίποτε από τα παραπάνω Απλή οµαδοποίηση, απλοποίηση
7 Τι είναι κελυφοποίηση? Κελυφοποίηση (encapsulation) είναι η ενέργεια του κρυψίµατος των λεπτοµερειών υλοποίησης ενός αντικειµένου από τον χρήστη Κανένα σύνθετο σύστηµα δεν πρέπει να εξαρτάται από τις λεπτοµέρειες ενός άλλου σύνθετου συστήµατος Κελυφοποίηση είναι συνώνυµη ως έννοια µε το κρύψιµο πληροφορίας (information hiding) Κελυφοποίηση και αφαίρεση είναι συµπληρωµατικές έννοιες η αφαίρεση εστιάζεται στην εξωτερική εικόνα ενός αντικειµένου Η κελυφοποίηση απαγορεύει στον χρήστη να δει το εσωτερικό του αντικειµένου
8 οµικότητα (modularity) Είναι ο χωρισµός του συστήµατος σε συστατικά (components) µε σκοπό τον καλύτερο χειρισµό της πολυπλοκότητας [Myers] Ο στόχος είναι να µειώσουµε το κόστος ανάπτυξης λογισµικού επιτρέποντας την ανεξάρτητη ανάπτυξη και συντήρηση των συστατικών [Britton, Parnas] Το κάθε συστατικό πρέπει να µπορεί να αλλάζει χωρίς να έχει γνώση της υλοποίησης άλλων συστατικών Το κάθε συστατικό πρέπει να είναι κατανοητό στους προγραµµατιστές
Ιεραρχία (hierarchy) Ηιεραρχίαείναιµια ταξινόµηση των αφαιρέσεων που χρησιµοποιείται για την µοντελοποίηση σύνθετων συστηµάτων Η ιεραρχία έχει δύο µορφές Κληρονοµικότητα (inheritance) Συναρµολόγηση (aggregation) 9
10 Κληρονοµικότητα Γενίκευση Απλή κληρονοµικότητα Πολλαπλή κληρονοµικότητα Σχέση γενίκευσης-ειδίκευσης (generalisation specialisation) Όχηµα Ειδίκευση
Συναρµολόγηση Συναρµολόγηση (aggregation) Σύνθεση (composition) Αυτοκίνητο Τσάντα Αποτελείται περιέχει Μηχανή Τιµόνι Μήλα Πορτοκάλια Σύνθεση Συναρµολόγηση 11
12 Τι είναι αντικείµενο... Ένα άτοµο ή ένα πράγµα προς το οποίο κατευθύνεται µια ενέργεια, σκέψη ή συναίσθηµα. Αντικείµενο είναι οτιδήποτε πραγµατικό ή αφηρηµένο στο οποίο αποθηκεύουµε δεδοµένα και έχει µεθόδους που διαχειρίζονται αυτά τα δεδοµένα. Παραδείγµατα Ένα τιµολόγιο Ένας πελάτης Ένα παράθυρο κ.λπ.
Ένα αντικείµενο έχει... Κατάσταση (state) Συµπεριφορά (behavior) Ταυτότητα (identity) ΚΑΤΑΣΤΑΣΗ ΣΥΜΠΕΡΙΦΟΡΑ ΤΑΥΤΟΤΗΤΑ 13
14 Ένα αντικείµενο έχει... Κατάσταση (state) Στατικά στοιχεία του αντικειµένου υναµικές τιµές για τα στατικά στοιχεία Συµπεριφορά (behavior) Η συµπεριφορά των αντικειµένων ορίζεται από τις ενέργειες του αντικειµένου Οτρόποςµε τον οποίο αλλάζει την εσωτερική του κατάσταση Τα µηνύµατα που ανταλλάσει µε το περιβάλλον Ταυτότητα (identity) Ο τρόπος µε τον οποίο ένα αντικείµενο διαφοροποιείται από άλλα αντικείµενα του ιδίου είδους
15 Τι είναι κλάση Κλάση «εργαζόµενος» τικείµενα Μηχανικός. Μηχανικός Λογιστής Πωλητής ιευθυντής
Τι είναι κλάση Μια κλάση είναι ένα σύνολο αντικειµένων που έχουν κοινή δοµή και κοινή συµπεριφορά Μια κλάση είναι µια κατηγορία αντικειµένων Ένα αντικείµενο είναι ένα στιγµιότυπο (instances) µια κλάσης Μια κλάση παρουσιάζει στο περιβάλλον µια διαπροσωπία (interface) ο τρόπος µε τον οποίο το περιβάλλον βλέπει την κλάση και έχει µια εσωτερική υλοποίηση 16
17 Γιατί έχει επικρατήσει ο αντικειµενοστρεφής τρόπος ανάπτυξης Επιτρέπει το χειρισµό πολύπλοκων συστηµάτων Επιτρέπει τον τµηµατική ανάπτυξη συστηµάτων Επιτρέπει την καλύτερη επαναχρησιµοποίηση κώδικα Είναι πιο κοντά στον τρόπο που σκεπτόµαστε Υπάρχει η κατάλληλη τεχνολογία UML CASE εργαλεία Γλώσσες προγραµµατισµού (C++, C#, Java) Αρχιτεκτονικές (J2EE,.Net) Περιβάλλοντα προγραµµατισµού (JBuilder, Visual Café,.Net Studio κ.λπ.)
18 Τι να θυµόµαστε... Βασικές έννοιες Αφαίρεση (abstraction) ίνει την εξωτερική εικόνα του προβλήµατος Κελυφοποίηση (encapsulation) Κρύβει τις εσωτερικές λεπτοµέρειες υλοποίησης του προβλήµατος οµικότητα (modularity) οµεί το σύστηµα απόένασύνολοανεξάρτητων συστατικών Ιεραρχία (hierarchy) Απλοποιεί και οργανώνει το σύστηµα Τι είναι κλάση, αντικείµενα Ποια είναι τα πλεονεκτήµατα του αντικειµενοστρεφούς τρόπου ανάπτυξης.