Αντικειµενοστρεφής σχεδίαση

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Αντικειµενοστρεφής σχεδίαση"

Transcript

1 Αντικειµενοστρεφής σχεδίαση Μετάφραση του κεφαλαίου 6 από το βιβλίο The Essence of Program Design, των Douglas Bell, Ian Morrey, John Pugh, Prentice Hall, Εισαγωγή Ξεκινάµε παρουσιάζοντας τις αρχές του αντικειµενοστρεφούς (O-O) προγραµµατισµού. Εξετάζουµε τα ιδιαίτερα χαρακτηριστικά του και πώς αυτά υποστηρίζονται από τις αντικειµενοστρεφείς γλώσσες προγραµµατισµού. Αργότερα θα δούµε πώς σχεδιάζουµε αντικειµενοστρεφή προγράµµατα. Αν νιώθετε ότι είστε εξοικειωµένοι µε τις έννοιες του αντικειµενοστρεφούς προγραµµατισµού, όπως κλάσεις και κληρονοµικότητα, ίσως θα θέλατε να προσπεράσετε τις πρώτες ενότητες µέχρι να φτάσετε στο «Εισαγωγή στην Αντικειµενοστρεφή Σχεδίαση». 2 Αντικειµενοστρεφείς έννοιες Τα τελευταία χρόνια αρκετές αντικειµενοστρεφείς γλώσσες έχουν διαδοθεί ευρέως. Μπορούν να χωριστούν σε δύο οµάδες αµιγείς Ο-Ο γλώσσες (πχ Smalltalk, Eiffel και Java) και υβριδικές γλώσσες (πχ C++, Objective-C, CLOS και αντικειµενοστρεφείς διάλεκτοι της Pascal). Οι υβριδικές γλώσσες είναι επεκτάσεις παραδοσιακών γλωσσών και συνεπώς υποστηρίζουν το παραδοσιακό, αλλά και το Ο-Ο στιλ προγραµµατισµού, ενώ οι αµιγείς γλώσσες έχουν σχεδιαστεί ειδικά για να υποστηρίζουν την Ο-Ο φιλοσοφία ανάπτυξης. Οι Ο-Ο γλώσσες υποστηρίζουν τις ακόλουθες έννοιες: αντικείµενα και ενθυλάκωση πολυµορφισµό και δυναµική δέσµευση κλάσεις κληρονοµικότητα και υποκλάσεις βιβλιοθήκες κλάσεων Ας τις εξετάσουµε µία-προς-µία. 3 Αντικείµενα και ενθυλάκωση Αντίθετα από τις παραδοσιακές γλώσσες, όπου διαδικασίες και δεδοµένα θεωρούνται σαν ξεχωριστές οντότητες, οι Ο-Ο γλώσσες υιοθετούν την άποψη ότι πρέπει να χρησιµοποιηθεί µία αδιαχώριστη οντότητα, το αντικείµενο, για να ενθυλακώσει τα δεδοµένα και τις διαδικασίες. Τα δεδοµένα που περιέχονται σε ένα αντικείµενο µπορούν να τροποποιηθούν µε τις διαδικασίες (που συνήθως αποκαλούνται µέθοδοι) που είναι µέρος αυτού του αντικειµένου. Στον Ο-Ο προγραµµατισµό, η κλήση µιας µεθόδου συχνά αναφέρεται ως πέρασµα µηνύµατος σε ένα αντικείµενο. Ένα πρόγραµµα αποτελείται από µια συλλογή αντικειµένων τα οποία περνούν µηνύµατα το ένα στο άλλο. Τα αντικείµενα ανταποκρίνονται στα µηνύµατα, παράγοντας και νέα αντικείµενα ως αποτέλεσµα. Κάθε αντικείµενο µπορούµε να το σκεφτούµε σαν ένα µικρό εικονικό επεξεργαστή του οποίου η συµπεριφορά ορίζεται µόνο από το πώς ανταποκρίνεται στη λήψη µηνυµάτων. Ανακεφαλαιώνοντας, ένα Ο-Ο σύστηµα µπορούµε να το φανταστούµε σαν µια συλλογή αντικειµένων που επικοινωνούν (συνεργάζονται) για να επιτύχουν κάποιο αποτέλεσµα. Ας υποθέσουµε, σαν παράδειγµα, ότι θέλουµε να δηµιουργήσουµε ένα αντικείµενο για να αναπαραστήσουµε ένα σηµείο στο δισδιάστατο χώρο. Το αντικείµενο Σηµείο απεικονίζεται στην Εικόνα 1. ύο χα- ΚΑΤΑΣΤΑΣΗ ΛΕΙΤΟΥΡΓΙΕΣ ρακτηριστικά ή ιδιότητες αποτελούν την κατάστασή του - η τετµηµένη x (µε τιµή 100) και η τεταγµένη y (µε τιµή 225). Οι χρήστες επικοινωνούν µε το αντικείµενο στέλνοντας µηνύµατα σε αυτό. Ένα αντικείµενο Σηµείο Τετµηµένη x µπορεί, για παράδειγµα, να ανταποκριθεί σε (ή να υποστηρίζει το πρωτό- getx κολλο για) µηνύµατα που: ανακαλούν την τετµηµένη x 100 setx gety ανακαλούν την τεταγµένη y Τεταγµένη y sety επιστρέφουν ένα νέο σηµείο (y, x) ίσο µε το κατοπτρικό του σηµείου (x, y) που έλαβε το µήνυµα katoptrikoshmeio 225 Τα αντικείµενα υιοθετούν µια θεµελιώδη αρχή για την δόµηση των συστη- µάτων λογισµικού την απόκρυψη πληροφορίας. Η ιδέα πίσω από την απόκρυψη πληροφορίας είναι ότι οι χρήστες ενός αντικειµένου δεν χρειάζεται Μεταβλητές Μέθοδοι (και δεν θα έπρεπε) να έχουν πρόσβαση στην αναπαράστασή του ή στην στιγµιότυπου (κώδικας) υλοποίηση των λειτουργιών του. Είναι χρήσιµο να σκεφτούµε τα αντικείµενα σαν να παρέχουν δύο όψεις του εαυτού τους: µια για τους δυνητικούς Εικόνα 1 χρήστες ή πελάτες του αντικειµένου, και µια άλλη για αυτούς που υλοποιούν το αντικείµενο. Οι χρήστες του αντικειµένου µπορούν να αλλάξουν την κατάστασή του, αλλά µόνο έµµεσα, στέλνοντας ένα µήνυµα στο αντικείµενο. Το µεγαλύτερο πλεονέκτηµα της προσέγγισης αυτής είναι ότι επιτρέπει σε αυτόν που υλοποιεί το αντικείµενο να αλλάζει την αναπαράστασή του κατά τρόπο που να είναι διαφανής στους χρήστες. Οι χρήστες του αντικειµένου δεν χρειάζεται να αντιληφθούν την αλλαγή. Αυτός ο διαχωρισµός της δηµόσιας διεπαφής του αντικειµένου από την εσωτερική υλοποίησή του είναι απαραίτητος για την παραγωγή συντηρήσιµου και επαναχρησιµοποιήσιµου λογισµικού.

2 Αντικειµενοστρεφής σχεδίαση Σελίδα 2 Στο παραπάνω παράδειγµα, δεν θα υπήρχε κανένας αντίκτυπος στους χρήστες αν, για παράδειγµα, τα σηµεία υλοποιούνταν έτσι ώστε η κατάστασή τους να τηρείται σε πολικές (ακτίνα r, γωνία θ), και όχι σε καρτεσιανές (x, y) συντεταγµένες. Σίγουρα, η υλοποίηση της µεθόδου που επιστρέφει την τετµηµένη x ενός σηµείου, πρέπει να αλλάξει, αλλά αυτή η αλλαγή δεν θα επηρεάσει τους χρήστες. Α- κόµα θα στέλνουν το ίδιο µήνυµα για να ανακτήσουν αυτήν την πληροφορία. Ένα Ο-Ο πρόγραµµα δουλεύει µε αντικείµενα τα οποία στέλνουν µηνύµατα σε άλλα αντικείµενα. Όταν ένα αντικείµενο λαµβάνει ένα µήνυµα, προσδιορίζει αν έχει κατάλληλη µέθοδο που να του επιτρέπει να ανταποκριθεί. Ο ορισµός της µεθόδου περιγράφει πώς το αντικείµενο θα αντιδράσει µε τη λήψη του µηνύµατος. Σε µη Ο-Ο ορολογία, θα µιλούσαµε για το σύνολο των λειτουργιών και διαδικασιών που παρέχονται από το αντικείµενο. Έτσι για να ανακεφαλαιώσουµε την ορολογία: Μέθοδος: Συνώνυµο της διαδικασίας ή λειτουργίας. Καλείται όταν ένα µήνυµα λαµβάνεται από ένα αντικείµενο. Πρωτόκολλο: Το σύνολο των µηνυµάτων στα οποία ανταποκρίνεται ένα αντικείµενο. Για να εκτελεστεί µια λειτουργία, µιλάµε για αποστολή ενός µηνύµατος σε ένα αντικείµενο, αντί για την κλήση µιας διαδικασίας. Το αντικείµενο που λαµβάνει το µήνυµα αναφέρεται ως παραλήπτης (ή αποδέκτης). Έτσι, το µήνυµα είσαικόκκινη? µπορεί να σταλεί σε µια µπάλα σε ένα πρόγραµµα βιντεοπαιχνιδιού. Παρά τη νέα ορολογία, το αποτέλεσµα της αποστολής ενός µηνύµατος σε ένα αντικείµενο ταυτίζεται µε µια παραδοσιακή κλήση λειτουργίας, όπου το αντικείµενο που λαµβάνει το µήνυµα θα ήταν µια παράµετρος της λειτουργίας. Το αποτέλεσµα της αποστολής ενός µηνύµατος στο αντικείµενο είναι να καλέσει την κατάλληλη µέθοδο, η ο- ποία µετά επιστρέφει ένα αντικείµενο σαν αποτέλεσµα. Στην περίπτωση του µηνύµατος είσαικόκκινη?, το αποτέλεσµα που επιστρέφεται θα είναι ένα αντικείµενο που µπορεί να τιµή αληθές ή ψευδές. Γενικότερα, τα µηνύµατα αποτελούνται από έναν επιλογέα µέσω του οποίου αναγνωρίζεται η εργασία που απαιτείται από τον παραλήπτη και ένα σύνολο από µηδέν ή παραπάνω παραµέτρους. Για παράδειγµα, για να αλλάξουµε τη θέση µιας µπάλας σε ένα βιντεοπαιχνίδι, πρέπει να παρέχουµε την νέα θέση της µπάλας σαν µέρος του µηνύµατος. Έτσι το αντικείµενο µπάλα1 λαµβάνει ένα µήνυ- µα που αποτελείται από τον επιλογέα άλλαξε και την παράµετρο µιανέα. 4 Πολυµορφισµός και δυναµική δέσµευση Ένα από τα πιο σηµαντικά χαρακτηριστικά του Ο-Ο προγραµµατισµού είναι ότι η ερµηνεία ενός µηνύµατος είναι στα χέρια του παραλήπτη, δηλαδή το ίδιο µήνυµα µπορεί να ερµηνευτεί από διαφορετικούς παραλήπτες µε διαφορετικούς τρόπους. Μέθοδοι που έ- χουν αυτή την ιδιότητα λέγονται πολυµορφικές. Τα µηνύµατα είναι λοιπόν κλήσεις διαδικασίας, µε το πρόσθετο χαρακτηριστικό ότι η πραγµατική διαδικασία που θα ξεκινήσει δεν είναι καθορισµένη µέχρι το µήνυµα να σταλεί σε ένα συγκεκριµένο παραλήπτη. Αυτή η διαδικασία της καθυστέρησης του καθορισµού της πραγµατικής µεθόδου µέχρι το χρόνο εκτέλεσής της, ονοµάζεται δυναµική δέσµευση (dynamic binding) Ένα σηµαντικό πλεονέκτηµα του πολυµορφισµού και της δυναµικής δέσµευσης είναι ότι επιτρέπει την υπερφόρτωση ονοµάτων, δηλαδή το ίδιο όνοµα µπορεί να χρησιµοποιηθεί στο σύστηµα για να δηλώσει µία κοινώς χρησιµοποιούµενη και καλά κατανοητή εργασία. Αυτή η συνέπεια στην ονοµασία των λειτουργιών µειώνει το πλήθος των διαφορετικών ονοµάτων, ειδικά σε µεγάλα συστήµατα. Ας δούµε ακόµα ένα παράδειγµα της χρησιµότητας πολυµορφισµού και δυναµικής δέσµευσης όπου θα συγκρίνουµε την δυναµική δέσµευση µε την στατική που υπάρχει στις παραδοσιακές γλώσσες. Ας θεωρήσουµε µια εφαρµογή που διαχειρίζεται (πχ σχεδιάζει, κλπ) διάφορα είδη γεωµετρικών σχηµάτων, όπως τετράγωνα, τρίγωνα, ορθογώνια και κύκλους. Για να συλλάβουµε την αφηρηµένη έννοια του σχήµατος µε τύπους δεδοµένων σε µια παραδοσιακή γλώσσα, όπως η Pascal, πρέπει να ορίσουµε µια εγγραφή µε µεταβλητό πεδίο (variant) µέσω του οποίου θα διακρίνονται οι διαφορετικοί τύποι σχηµάτων. Στη γλώσσα C, αυτό θα ήταν ένα πεδίο σε µία δοµή (struct) που θα διαχώριζε τους διαφορετικούς τύπους σχηµάτων. Μετά θα υλοποιούσαµε µια λειτουργία προβολής της εγγραφής. Για να αναλύσουµε την υλοποίηση στα συνθετικά της µέρη, θα µπορούσαµε να παρέχουµε διαφορετικές διαδικασίες για κάθε σχήµα. Σε αυτή την περίπτωση, η διαδικασία θα χρησιµοποιούσε κάποιο είδος εντολής πολλαπλής επιλογής (case) για να καθορίσει τον τύπο σχήµατος που εµπλέκεται, ώστε να καλέσει τη σωστή διαδικασία για το συγκεκριµένο σχήµα (δείτε Εικόνα 2). Επειδή η συσχέτιση µεταξύ κάθε διαδικασίας σχετιζόµενης µε ένα σχήµα και του τύπου της παραµέτρου πρέπει να γίνει κατά τη µεταγλώττιση, η σύνδεση των δυο τους ονοµάζεται στατική δέσµευση (static binding). Με τον ίδιο τρόπο θα µπορούσαµε να ορίσουµε λειτουργίες για τη µετακίνηση ή τον υπολογισµό Εικόνα 2 του εµβαδού κάθε σχήµατος. Αυτές οι διαδικασίες θα είχαν την ίδια λογική πολλαπλής επιλογής case µε την παραπάνω διαδικασία προβολής. Σε µία Ο-Ο γλώσσα µε δυναµική δέσµευση, πάλι πρέπει να υλοποιήσουµε µία µέθοδο προβολής για καθένα από τα τρίγωνα, τετράγωνα, ορθογώνια και κύκλους. Ωστόσο, µπορούµε να χρησιµοποιήσουµε το ίδιο όνοµα σε όλες τις περιπτώσεις. Επιπλέον, δεν είναι πια ευθύνη του προγραµµατιστή να καθορίσει την σωστή µέθοδο που πρέπει να κληθεί. Ο προγραµµατιστής µπορεί να στείλει το µήνυµα προβολής σε οποιοδήποτε σχήµα. Ανάλογα µε τον τύπο του σχήµατος, θα εκτελεστεί η σωστή µέθοδος προβολής από το µήνυ- µα του αποστολέα του συστήµατος (δείτε Εικόνα 3).

3 Αντικειµενοστρεφής σχεδίαση Σελίδα 3 Η Ο-Ο λύση είναι καταλληλότερη όταν έχουµε συχνές αλλαγές και επιθυµούµε να επαναχρησιµοποιούµε τον κώδικα. Ας υποθέσουµε ότι θέλουµε να επεκτείνουµε το παράδειγµα µε τα σχήµατα ώστε να συµπεριλάβουµε άλλον ένα τύπο σχήµατος, το πεντάγωνο. Θα θέλαµε να εφοδιάσουµε τα πεντάγωνα µε ό- λες τις λειτουργίες που υποστηρίζονται από τα άλλα σχήµατα. Στην παραδοσιακή λύση, πρέπει να τροποποιήσουµε όλες τις λειτουργίες συµπεριλαµβάνοντας µια περίπτωση στην πολλαπλή επιλογή για το πεντάγωνο. Σε κάθε περίπτωση πρέπει να προστίθεται µια νέα επιλογή. Σε ένα µεγάλο σύστηµα, µε αυτό το σενάριο είναι εύκολο να προκύψουν λάθη. Υπάρχουν πιθανότητες να παραλείψουµε µία ή περισσότερες από τις απαραίτητες αλλαγές. Σε ένα Ο-Ο σύστηµα, οι απαιτούµενες αλλαγές είναι εντοπισµένες στον κώδικα που υλοποιεί το νέο σχήµα, το πεντάγωνο και απλώς υλοποιούµε αυτόν τον κώδικα, χωρίς να Εικόνα 3 αλλάζουµε τίποτε άλλο. Περιληπτικά, οι έννοιες του πολυµορφισµού και της δυναµικής δέσµευσης επιτρέπουν τη χρήση γενικού, επαναχρησιµοποιήσιµου κώδικα. 5 Κλάσεις Μια σηµαντική ικανότητα που έχουµε είναι να οµαδοποιούµε και να κατηγοριοποιούµε. Οι ελέφαντες, οι τίγρεις, οι πολικές αρκούδες, τα άλογα και οι αγελάδες είναι θηλαστικά. Ο µόλυβδος, το ασήµι και ο λευκόχρυσος είναι όλα µέταλλα. Οι τρεχούµενοι λογαριασµοί, οι κλειστές καταθέσεις µε προθεσµία, είναι τύποι τραπεζικών λογαριασµών, κοκ. Μέσω της οµαδοποίησης είµαστε σε θέση να συσχετίζουµε κοινά χαρακτηριστικά σε όλα τα µέλη µιας κλάσης. Όλα τα θηλαστικά είναι σπονδυλωτά (έχουν ραχοκοκαλιά), είναι θερµόαιµα και έχουν τρίχωµα στο σώµα τους. Όλα τα µέταλλα έχουν ατοµικά βάρη και όλοι οι τραπεζικοί λογαριασµοί έχουν υπόλοιπο. Στον Ο-Ο προγραµµατισµό, η κλάση είναι η αφαίρεση που συλλαµβάνει τις ιδιότητες και τις λειτουργίες που είναι κοινές για ένα σύνολο αντικειµένων. Μια κλάση περιγράφει την αναπαράσταση και το πρωτόκολλο µηνυµάτων που ακολουθεί κάθε µέλος της, ή στην ορολογία του Ο-Ο προγραµµατισµού, το στιγµιότυπο της κλάσης. Στις περισσότερες Ο-Ο γλώσσες, κάθε αντικείµενο είναι στιγµιότυπο κάποιας κλάσης. Συνοψίζοντας, η κλάση είναι µια περιγραφή ενός συνόλου αντικειµένων µε παρόµοια χαρακτηριστικά, ιδιότητες και συµπεριφορά. Ένα στιγµιότυπο είναι ένα µεµονωµένο αντικείµενο που περιγράφεται από την κλάση του και είναι µέλος της. Ας εξετάσουµε µια απλή τραπεζική εφαρµογή στην οποία επιθυµούµε να υποστηρίξουµε ένα σύνολο τραπεζικών λογαριασµών και να εφαρµόσουµε κοινές λειτουργίες, όπως ερώτηση υπολοίπου, κατάθεση και ανάληψη. Τα δεδοµένα που συσχετίζονται µε κάθε ξεχωριστό τραπεζικό λογαριασµό θα αποτελούνται από τουλάχιστον έναν αριθµό λογαριασµού, ένα όνοµα λογαριασµού και ένα υπόλοιπο. Η απεικόνιση του αντικειµένου µπορεί να θεωρηθεί ως µια εγγραφή (record) της Pascal, ή ως µια δοµή (struct) της γλώσσας C - µια συλλογή δηλαδή, από ετερογενή στοιχεία ή πεδία. Τα πεδία ενός αντικειµένου αναφέρονται ως µεταβλητές στιγµιότυπου, δεδοµένου ότι θα απαντώνται σε κάθε στιγµιότυπο και θα µπορούν να τροποποιηθούν. Όλοι οι τραπεζικοί λογαριασµοί εποµένως έχουν τρεις µεταβλητές στιγ- µιότυπου: αριθµό λογαριασµού, όνοµα λογαριασµού και υπόλοιπο. Κατά συνέπεια: Μεταβλητή στιγµιότυπου: εδοµένα που είναι συστατικό µέρος ή πεδίο ενός αντικειµένου. Οι λειτουργίες στους τραπεζικούς λογαριασµούς θα µπορούσαν να περιλαµβάνουν αναλήψεις, καταθέσεις, και ερωτήσεις για το υπόλοιπό τους. Συνεπώς ένα αντικείµενο ενθυλακώνει κατάσταση (δεδοµένα) και λειτουργίες. Ωστόσο, δεδοµένου ότι όλα τα στιγµιότυπα µιας κλάσης υποστηρίζουν το ίδιο σύνολο λειτουργιών, οι µέθοδοι ή λειτουργίες µπορούν να συνδεθούν µε την κλάση. Μόνο η κατάσταση ή ιδιωτικές πληροφορίες που σχετίζονται µε ένα συγκεκριµένο αντικείµενο ανήκουν στην µεταβλητή στιγµιότυπου. Ας εξετάσουµε στιγµιότυπα της κλάσης BankAccount. Κάθε στιγµιότυπο έχει τον δικό του αριθµό, όνοµα, και υπόλοιπο. Ε- ντούτοις, οι λειτουργίες για την πραγµατοποίηση καταθέσεων, αναλήψεων και ερωτήσεων υπολοίπου µπορούν να είναι κοινές για όλα τα στιγµιότυπα και να αποθηκεύονται στην κλάση. Όταν ένα µήνυµα στέλνεται σε έναν τραπεζικό λογαριασµό, το σύστηµα ψάχνει για την αντίστοιχη µέθοδο στην κλάση BankAccount. Η Εικόνα 4 επεξηγεί τις κοινές λειτουργίες που συνδέονται µε την κλάση BankAccount και τρία στιγµιότυπα καθένα από τα οποία διατηρεί την δική του κατάσταση. Εικόνα 4 Αυτή η φυσική, σε αντίθεση µε τη λογική, άποψη των κλάσεων και των στιγµιότυπων µας οδηγεί στους ακόλουθους εναλλακτικούς ορισµούς:

4 Αντικειµενοστρεφής σχεδίαση Σελίδα 4 Κλάση: Αποθήκη για µεθόδους (λειτουργίες) που τις µοιράζονται όλα τα στιγµιότυπα (αντικείµενα) που ανήκουν σε εκείνη την κλάση - ένας µηχανισµός κοινοκτηµοσύνης κώδικα. Στιγµιότυπο: Αποθήκη για δεδοµένα που περιγράφουν την κατάσταση ενός συγκεκριµένου µέλους µιας κλάσης. Ας περιγράψουµε την υλοποίηση της κλάσης BankAccount. Μια κλάση αρχίζει µε τη δήλωση του ονόµατος κλάσης. Κατόπιν α- κολουθεί η δήλωση των µεταβλητών που απαιτούνται για οποιοδήποτε στιγµιότυπο της κλάσης. Αυτές είναι: accountnumber, accountname, και balance. Στο τέλος προσδιορίζονται οι µέθοδοι, κάθε µία από τις οποίες διαθέτει ένα όνοµα µεθόδου και τα απαραίτητα ορίσµατα. Αυτές είναι οι openaccount, withdraw, deposit και querybalance. Για να δηµιουργηθεί ένα νέο στιγµιότυπο της κλάσης BankAccount πρέπει να σταλεί ένα µήνυµα στη µέθοδο OpenAccount. Έτσι δηµιουργείται ένα νέο αντικείµενο. Σε αρκετές γλώσσες (συµπεριλαµβανοµένων των Smalltalk, C++ και Java) αυτό επιτυγχάνεται µε τη λέξη new. Στο παράδειγµα, το µήνυµα που στέλνεται στη µέθοδο OpenAccount θα περιλαµβάνει το όνοµα του λογαριασµού, τον αριθµό λογαριασµού και το αρχικό υπόλοιπο ως παραµέτρους. Το σύστηµα θα δηµιουργήσει τα δεδοµένα στιγµιότυπου για το αντικείµενο και θα σηµειώσει σε ποια κλάση ανήκει. Ας δούµε τώρα τη µέθοδο deposit για παράδειγµα. Έχει µια παράµετρο, το χρηµατικό ποσό που πρόκειται να κατατεθεί. Ο ρόλος της µεθόδου είναι να προσθέσει την παράµετρο στο υπάρχον υπόλοιπο του αντικειµένου που αντιπροσωπεύει το συγκεκριµένο λογαριασµό. 6 Κληρονοµικότητα και υποκλάσεις Συχνά σκεφτόµαστε τα αντικείµενα ως εξειδικεύσεις άλλων αντικειµένων. Τα πολύτιµα µέταλλα είναι υποκατηγορία των µετάλλων, τα αγωνιστικά αυτοκίνητα είναι υποκατηγορία των αυτοκινήτων, τα ροµαντικά µυθιστορήµατα είναι υποκατηγορία των βιβλίων, κ.ο.κ. Όλα τα πολύτιµα µέταλλα είναι µέταλλα αλλά όλα τα µέταλλα δεν είναι πολύτιµα. Οµοίως, όλα τα αγωνιστικά αυτοκίνητα είναι αυτοκίνητα και όλα τα ροµαντικά µυθιστορήµατα είναι βιβλία, αλλά το αντίστροφο δεν ισχύει. Επεκτείνοντας αυτή την έννοια, µπορούµε να θεωρήσουµε µια κλάση αντικειµένων ως υποκλάση κάποιας άλλης. Μπορούµε επίσης να µιλήσουµε για µια κλάση που είναι υπέρ-κλάση κάποιας άλλης. Συνοψίζοντας, µπορούµε να δηµιουργήσουµε Πολύγωνο Τραπεζικός ιεραρχίες κλάσεων που να λογαριασµός βασίζονται σε σχέσεις είναι-ένα. Στην Εικόνα 5 οι προθεσµιακοί, τρεχούµενοι Τετράπλευρο Τρίγωνο και αποταµιευτικοί λογαριασµοί είναι όλοι τραπεζικοί λογαριασµοί. Οµοίως, Προθεσµιακός λογαριασµός Τρεχούµενος λογαριασµός Αποταµιευτικός Καταθετικός λογαριασµός στην Εικόνα 5, τα τετρά- Παραλληλόγραµµο πλευρα και τα τρίγωνα είναι πολύγωνα και τα τετράγωνα και τα παραλληλόγραµµα είναι ειδικές περιπτώσεις Τετράγωνο τετραπλεύρων. Επιπλέον, ένα τετράγωνο είναι ειδική Εικόνα 5 περίπτωση ενός ορθογωνίου. Αυτοί οι τύποι διαγραµµάτων ονοµάζονται (για προφανείς λόγους) διαγράµµατα ιεραρχίας κλάσεων. Το διάγραµµα ιεραρχίας κλάσεων είναι ένα δενδρικό διάγραµµα που εµφανίζει ποιες κλάσεις είναι υποκλάσεις άλλων. Είναι απαραίτητο να επιδειχθεί λίγη προσοχή εδώ. Αρχάριοι, µερικές φορές ακόµα και πεπειραµένοι, έχουν την τάση να συγχέουν τη σχέση είναι-ένα µε τη σχέση αποτελείται-από. ύο παραδείγµατα ιεραρχίας αποτελείται-από εµφανίζονται στην Εικόνα 6. Το έµβολο είναι ένα στοιχείο της µηχανής, δεν είναι µια µηχανή. Οµοίως, ένας κύκλος δεν είναι ένα σηµείο. Το έναυσµα για να περιγραφεί ο κύκλος ως υποκλάση του σηµείου µπορεί να είναι ότι ένα σηµείο απαιτείται για το κέντρο του κύκλου. Ωστόσο, µε αυτόν τον συλλογισµό, ο κύκλος θα έ- πρεπε επίσης να κληρονοµήσει και από την κλάση αριθµός, επειδή ένας αριθµός απαιτείται για την ακτίνα του κύκλου. Μηχανή Έµβολο Σηµείο Κύκλος Εξειδίκευση και γενίκευση Εικόνα 6 Τι σηµαίνει ότι µια κλάση είναι µια υποκλάση κάποιας άλλης; ιαισθητικά, εννοούµε ότι η υποκλάση έχει όλα τα χαρακτηριστικά της γενικότερης κλάσης, αλλά την επεκτείνει κατά κάποιο τρόπο. Τα πολύτιµα µέταλλα έχουν όλα τα χαρακτηριστικά των µετάλλων αλλά, επιπλέον, µπορούν να διακριθούν από τα υπόλοιπα µέταλλα µε βάση τη νοµισµατική τους αξία. Οµοίως, τα τετράπλευρα είναι ειδικές περιπτώσεις πολυγώνων µε τέσσερις πλευρές. Τα πολύγωνα µπορούν να έχουν οποιοδήποτε αριθµό πλευρών. Τα τετράγωνα είναι ειδικές περιπτώσεις των τετραπλεύρων όπου και οι τέσσερις πλευρές έχουν ίσο µήκος, και οι προσκείµενες πλευρές είναι κάθετες η µια στην άλλη. Εφαρµόζοντας ανάποδα αυτά τα επιχειρήµατα, µπορούµε να περιγράψουµε την υπέρ-κλάση µιας κλάσης ως γενίκευση της κλάσης.

5 Αντικειµενοστρεφής σχεδίαση Σελίδα 5 Ένας από τους καλύτερους τρόπους να περιγραφεί κάτι καινούργιο σε κάποιον άλλο είναι να περιγραφεί µε όρους κάποιου µε το ο- ποίο είναι παρόµοιο, δηλαδή περιγράφοντας πώς αυτό διαφέρει από κάτι γνωστό. Ένα παράδειγµα είναι ότι η ζέβρα είναι ένα άλογο µε ρίγες! Αυτός ο συνοπτικός ορισµός περιέχει ένα µεγάλο ποσό πληροφοριών σε κάποιον σχετικό µε τα άλογα. Οι αντικειµενοστρεφείς γλώσσες υποστηρίζουν τις έννοιες της εξειδίκευσης και της περιγραφής διαφορών. Οι κλάσεις οργανώνονται ιεραρχικά σε σχέσεις εξειδίκευσης. Όταν µια κλάση είναι µια υποκλάση κάποιας άλλης, θεωρείται δεδοµένο ότι θα κληρονοµήσει την αναπαράσταση και τη συµπεριφορά της υπέρ-κλάσης της. Χάρη στο µοίρασµα που επιτυγχάνεται λόγω κληρονοµικότητας, η νέα κλάση πρέπει να περιγράψει, µόνο, κατά τι διαφέρει από την υπέρ-κλάση. Συνοψίζοντας: Υποκλάση: Κλάση που κληρονοµεί τις µεθόδους και την αναπαράσταση από µια υπάρχουσα κλάση. Υπέρ-κλάση: Κλάση από την οποία µια άλλη κλάση κληρονοµεί αναπαράσταση και µεθόδους. Για να έχουµε µια καλύτερη αίσθηση για τις έννοιες αυτές, θα επεκτείνουµε το τραπεζικό µας παράδειγµα σε µια ιεραρχία κλάσεων τραπεζικών λογαριασµών, όπως ΤραπεζικόςΛογαριασµός φαίνεται στην Εικόνα 7. Για ΑριθµόςΛογ λόγους απλότητας, έχουµε πε- ΥπόλοιποΛογ ριορίσει το πρόβληµα µόνο στα στοιχειώδη. Ας υποθέσουµε ότι όλοι οι τραπεζικοί λογαριασµοί ΠροθεσµιακόςΛογαριασµός ΑποταµιευτικόςΛογαριασµός ΤρεχούµενοςΛογαριασµός ΗµνίαΛήξης έχουν έναν αριθµό λογαριασµού και ένα υπόλοιπο και, ε- πιπλέον, οι προθεσµιακοί λογα- ΠροθεσµιακόςΛογαριασµός ΑποταµιευτικόςΛογαριασµός ΤρεχούµενοςΛογαριασµός ριασµοί έχουν µια ηµεροµηνία ΑριθµόςΛογ: ΑριθµόςΛογ: ΑριθµόςΛογ: λήξης. Η κλάση ΥπόλοιποΛογ: ,0 ΥπόλοιποΛογ: 134,55 ΥπόλοιποΛογ: 16,44 ΤραπεζικόςΛογαριασµός, ε- ΗµνίαΛήξης: 3/4/2006 ποµένως, έχει δύο µεταβλητές στιγµιότυπου, τις ΑριθµόςΛογ Εικόνα 7 και ΥπόλοιποΛογ, και όλες οι τρεις υποκλάσεις κληρονοµούν αυτή την αναπαράσταση, έτσι ώστε όλα τα στιγµιότυπα έχουν τουλάχιστον αυτά τα δύο πεδία. Οι υ- ποκλάσεις ΤρεχούµενοςΛογαριασµός και ΑποταµιευτικόςΛογαριασµός δεν προσθέτουν καµία µεταβλητή επιπλέον. Η κλάση ΠροθεσµιακόςΛογαριασµός, εντούτοις, παρουσιάζει µια επιπλέον µεταβλητή στιγµιότυπου την ΗµνίαΛήξης, δίνοντας στους κλειστούς λογαριασµούς χρονικό όριο. Γενικά, οι υποκλάσεις µπορούν να προσθέσουν καινούργιες µεταβλητές, αλλά δε µπορούν ποτέ να αφαιρέσουν. Ωστόσο, οι υποκλάσεις µπορούν να προσθέσουν µεθόδους µε ίδια ονόµατα για να υπερισχύσουν των µεθόδων που κληρονοµούνται από την υπέρ-κλάση. Όλοι οι τύποι τραπεζικών λογαριασµών υποστηρίζουν λειτουργίες για ερώτηση υπολοίπου ενός λογαριασµού. Εάν η λειτουργία έχει τις πανοµοιότυπες υλοποιήσεις σε κάθε υποκλάση, µπορούµε να υλοποιήσουµε τη λειτουργία µία και µόνο φορά στην κοινή υπέρκλάση ΤραπεζικόςΛογαριασµός και οι τρεις υποκλάσεις θα την κληρονοµήσουν. Άλλες λειτουργίες, όπως η ερώτηση για την προθεσµία ενός λογαριασµού, θα πρέπει να είναι συγκεκριµένες στην κλάση ΠροθεσµιακόςΛογαριασµός. Σε µερικές περιπτώσεις, µια κοινή λειτουργία που ίσως να επιθυµούσαµε να εφαρµόσουµε µία και µόνο φορά σε µία υπέρ-κλάση θα πρέπει να επαναληφθεί στις υποκλάσεις, εάν η υλοποίησή της εξαρτάται από τον συγκεκριµένο τύπο λογαριασµού. Παραδείγµατος χάριν, η λειτουργία της κατάθεσης (τοποθετώ χρήµατα σε λογαριασµό) µπορεί να είναι ΤραπεζικόςΛογαριασµός ανάληψη: ποσόν κοινή για τους τρεχούµενους κατάθεση: ποσόν και τους αποταµιευτικούς λο- ερώτυπολοίπου γαριασµούς, αλλά να απαιτείται διαφορετική υλοποίηση για τους προθεσµιακούς λογαρι- ΠροθεσµιακόςΛογαριασµός ΑποταµιευτικόςΛογαριασµός ΤρεχούµενοςΛογαριασµός ασµούς. Η Εικόνα 8 απεικονίζει ανάληψη: ποσόν ανάληψη: ποσόν - κατάθεση: ποσόν µια σχεδίαση για την τοποθέ- πότελήγει τηση των λειτουργιών µέσα στην ιεραρχία των κλάσεων. Οι Εικόνα 8 λειτουργίες πρέπει να τοποθετούνται όσο το δυνατόν υψηλότερα στην ιεραρχία, έτσι ώστε µπορούν να µοιράζονται σε όσο το δυνατόν περισσότερες υποκλάσεις. Όταν ένα µήνυµα στέλνεται σε ένα αντικείµενο, το σύστηµα κοιτάζει αρχικά για µια µέθοδο µε το ίδιο όνοµα στην κλάση του αντικειµένου. Εάν βρεθεί η µέθοδος, εκτελείται. Ειδάλλως, συνεχίζεται η αναζήτηση στην υπέρ-κλάση κ.ο.κ. Τελικά, θα βρεθεί µια µέθοδος και θα εκτελεσθεί ή θα φτάσουµε στην κορυφή της ιεραρχίας. Τότε ανακοινώνεται λάθος, δεδοµένου ότι δεν υπάρχει καµία µέθοδος που να µπορεί να ανταποκριθεί στο µήνυµα. Για να διευκρινισθεί αυτή η διαδικασία αναζήτησης, µελετήστε το παράδειγµα στην Εικόνα 8 για να προσδιορίσετε ποια µέθοδος εκτελείται πραγµατικά. Ανακεφαλαιώνοντας, µια νέα κλάση µπορεί να διαφοροποιείται από τις υπέρ-κλάσεις της µε διάφορους τρόπους. Ειδικότερα, η νέα κλάση µπορεί να κάνει ένα ή περισσότερα από τα εξής: Να υποστηρίξει πρόσθετες λειτουργίες, πέρα από αυτές που κληρονοµούνται. Να υποστηρίξει νέες υλοποιήσεις λειτουργιών που έτσι και αλλιώς κληρονοµεί. Να υπερκαλύπτει υπάρχουσες λειτουργίες που υποστηρίζονται από την υπέρ-κλάση, αλλά είναι ακατάλληλες για τη νέα κλάση προσθέτοντας µια λειτουργία που σηµατοδοτεί σφάλµα.

6 Αντικειµενοστρεφής σχεδίαση Σελίδα 6 Να περιέχει ένα περιορισµένο υποσύνολο από τις µεταβλητές στιγµιότυπου της κλάσης Να προσθέτει επιπλέον δεδοµένα. Παρατηρήστε ότι σκοπός της εξειδίκευσης και της κληρονοµικότητας που έχουµε περιγράψει είναι, σε αντίθεση µε την δική µας διαισθητική άποψη, ότι µια υποκλάση είναι επέκταση της υπέρ-κλάσης της Θεωρήσαµε ως δεδοµένο ότι µια κλάση µπορεί να κληρονοµήσει µόνο από µια υπέρ-κλάση, οπότε το διάγραµµα ιεραρχίας κλάσεων είναι πάντα ένα δέντρο. Αυτή λέγεται απλή κληρονοµικότητα. Κάποιες γλώσσες, όπως η C++, επιτρέπουν την πολλαπλή κληρονοµικότητα, στην οποία µια κλάση µπορεί να κληρονοµεί από δυο ή περισσότερες υπέρ-κλάσεις. Η πολλαπλή κληρονοµικότητα είναι προφανώς πιο µπερδεµένη, αλλά πιο ευέλικτη. Υπάρχει διαµάχη ανάµεσα στην αντικειµενοστρεφή κοινότητα για το αν η πολλαπλή κληρονοµικότητα είναι επιθυµητή, και µια πρόσφατη γλώσσα, η Java, δεν την υποστηρίζει. Εδώ θα περιορίσουµε την προσοχή µας στην απλή κληρονοµικότητα. 7 Βιβλιοθήκες κλάσεων Οι αντικειµενοστρεφείς βιβλιοθήκες κλάσεων είναι πιο ευέλικτες από τις παραδοσιακές βιβλιοθήκες αριθµητικών και στατιστικών υπορουτινών της FORTRAN ή της C. Οι παραδοσιακές βιβλιοθήκες είναι στατικές µε την έννοια ότι δεν είναι δυνατό να επαναγράφεται ή να επεκτείνεται µια ρουτίνα που δεν λειτουργεί ακριβώς µε τον τρόπο που επιθυµούµε. Αντίθετα, µια Ο-Ο βιβλιοθήκη επιτρέπει προσαρµογή και επέκταση µε τη βοήθεια υποκλάσεων. Για παράδειγµα, η βιβλιοθήκη κλάσεων της Smalltalk περιλαµβάνει περίπου 150 κλάσεις. Αυτό είναι και πλεονέκτηµα, αλλά και µειονέκτηµα. Πλεονέκτηµα είναι γιατί καινούριες εφαρµογές µπορούν να εκµεταλλευτούν αυτή τη βιβλιοθήκη και να αποφύγουµε να «ανακαλύψουµε τον τροχό». Αρχικά όµως, είναι και µειονέκτηµα γιατί ο προγραµµατιστής πρέπει να µάθει το περιεχόµενο της βιβλιοθήκης και να µπορεί να διακρίνει µεταξύ των σχετικών συνόλων κλάσεων που φαινοµενικά παρέχουν σχεδόν την ίδια λειτουργία. Για παράδειγµα, η βιβλιοθήκη κλάσεων της Smalltalk παρέχει πολλά είδη κλάσεων που υλοποιούν συλλογές. Η βιβλιοθήκη κλάσεων της Smalltalk έχει λειτουργήσει ως µοντέλο για πολλές βιβλιοθήκες Ο-Ο γλωσσών. Οι σηµαντικότερες κλάσεις µπορούν να ταξινοµηθούν ως εξής: Βασικές κλάσεις: Object, Boolean, Character, Integer, Float, Fraction, Date, Time, κλπ Κλάσεις συλλογών: Dictionary, Array, String, Symbol, Set, OrderedCollection, SortedCollection, κλπ Κλάσεις Γραφικών: Point, Rectangle, Bitmap, Pen, κλπ. Είναι κλάσεις που παρέχουν πρόσβαση σε υπορουτίνες γραφικών. Κλάσεις γραφικών διεπαφών: Κλάσεις που υποστηρίζουν παράθυρα, παράθυρα διαλόγου, µενού, πλήκτρα, σύνταξη κει- µένου, κλπ Εργαλεία: Κλάσεις που πλοηγούν µέσα στην βιβλιοθήκη κλάσεων, εκτελούν επιθεώρηση αντικειµένων, εκσφαλµάτωση πηγαίου κώδικα, διαχείριση αλλαγών, κλπ Περιληπτικά, οι αντικειµενοστρεφείς γλώσσες ενθαρρύνουν την παραγωγή των επαναχρησιµοποιήσιµων βιβλιοθηκών κλάσεων. Υ- πάρχουσες βιβλιοθήκες υποστηρίζουν βασικούς τύπους δεδοµένων, γραφικά, διεπαφές χρήστη και εργαλεία υποστήριξης προγραµ- µατισµού. Αλλά όλο και περισσότερο εµφανίζονται βιβλιοθήκες για συγκεκριµένους τοµείς εφαρµογών. 8 Περίληψη των εννοιών του αντικειµενοστρεφούς προγραµµατισµού Ο Ο-Ο προγραµµατισµός χαρακτηρίζεται από: Προγραµµατισµός µε αντικείµενα: Τα αντικείµενα έχουν κατάσταση και µπορούν να απαντούν σε ερωτήσεις για τον εαυτό τους. Τα αντικείµενα είναι τύποι δεδοµένων. Ενθυλακώνουν κατάσταση ή αναπαράσταση ενός αντικειµένου µαζί µε λειτουργίες πάνω σε αυτή την κατάσταση και υποστηρίζουν την αρχή της απόκρυψης πληροφορίας. Προγραµµατισµός µε προσοµοίωση: Οι εφαρµογές σχεδιάζονται και υλοποιούνται ως προσοµοίωση του προβλήµατος που επιλύουν. Τα αντικείµενα µοντελοποιούν οντότητες στον πραγµατικό κόσµο. Αυτό το είδος προγραµµατισµού αναφέρεται συχνά ως ανθρωποµορφικός προγραµµατισµός. Πέρασµα µηνυµάτων: Οι µέθοδοι καθορίζουν το πώς ένα αντικείµενο θα ανταποκριθεί σε ένα δοσµένο µήνυµα. Προγραµµατισµός χρησιµοποιώντας πολυµορφισµό: Τα µηνύµατα ερµηνεύονται µε διαφορετικούς τρόπους από διαφορετικούς παραλήπτες. Προγραµµατισµός χρησιµοποιώντας κληρονοµικότητα: Η διαµοίραση του κώδικα επιτυγχάνεται µέσω της κληρονοµικότητας αναπαράστασης και µεθόδων από τη µια κλάση ενός αντικειµένου σε άλλη. Οι νέες κλάσεις καθορίζονται ως εξειδικεύσεις των κλάσεων που υπάρχουν. 9 Εισαγωγή στην αντικειµενοστρεφή σχεδίαση Έχουµε δει ότι ο O-O προγραµµατισµός παρέχει στο σχεδιαστή ένα σύνολο ισχυρών εννοιών και εργαλείων. Ο σχεδιαστής ενός Ο-Ο προγράµµατος είναι να βρει ποιες κλάσεις, αντικείµενα και µέθοδοι απαιτούνται για το πρόγραµµα. Ο σχεδιαστής πρέπει επίσης να µελετήσει πώς καθεµιά από αυτές τις κλάσεις και αντικείµενα χρησιµοποιεί τα υπόλοιπα. Το τελικό προϊόν της σχεδίασης µπορεί να τεκµηριωθεί χρησιµοποιώντας δύο συµβολισµούς: 1. ιαγράµµατα ιεραρχίας κλάσεων, που εµφανίζουν τις κλάσεις στο πρόγραµµα και πώς συσχετίζονται ως υποκλάσεις και υπέρ-κλάσεις. 2. Λίστες CRC (Class-Responsibility-Collaborators), οι οποίες εµφανίζουν για κάθε κλάση τι παρέχει και ποιες άλλες κλάσεις χρησιµοποιεί.

7 Αντικειµενοστρεφής σχεδίαση Σελίδα 7 Η Ο-Ο σχεδίαση και προγραµµατισµός µπορεί να περιγραφτεί ως προγραµµατισµός µε προσοµοίωση. Η αλληγορία βασίζεται στην µεταφορά των φυσικών ή ιδεατών αντικειµένων του πραγµατικού κόσµου σε αντικείµενα του προγράµµατος. Για παράδειγµα, α- ντικείµενα είναι οι πελάτες σε µια επιχείρηση, τα τρόφιµα σε µια υπεραγορά, ή τα διάφορα ανταλλακτικά σε ένα εργοστάσιο. Προσπαθούµε να ενσαρκώσουµε τα αντικείµενα από το πρόβληµα σε υπολογιστικά µοντέλα, δίνοντας στα αντικείµενα στο πρόγραµµά µας τα ίδια χαρακτηριστικά και δυνατότητες που έχουν στον πραγµατικό κόσµο. Κατά συνέπεια χτίζουµε ένα µοντέλο ή µια προσο- µοίωση του προβλήµατος που θέλουµε να λύσουµε. Όταν τα αντικείµενα της υλοποίησης έχουν άµεση αντιστοίχιση µε τα αντικείµενα του προβλήµατος, είναι πιο εύκολο να κατανοήσουµε και να χρησιµοποιήσουµε το λογισµικό. Για να πάρετε µια αίσθηση για το σχεδιασµό µε αντικείµενα, θα δούµε ένα παράδειγµα µε το παιχνίδι στην Εικόνα 9. Εάν προσεγγίσουµε το πρόβληµα χρησιµοποιώντας O-O σχεδίαση, η πρώτη µας έγνοια είναι να προσπαθήσουµε να προσδιορίσουµε τα α- ντικείµενα που περιλαµβάνονται στο πρόβληµα και όχι τις λειτουργίες. Τα ευκολότερα αντικείµενα που µπορούµε να προσδιορίσουµε είναι εκείνα που υπάρχουν σε αντίστοιχη µορφή και στον πραγµατικό κόσµο. Στο παράδειγµα, τα αντικείµενα είναι τα τούβλα, ο τοίχος, οι πλευρές, Εικόνα 9 το κουπί, η µπάλα και το ίδιο το βιντεοπαιχνίδι, όπως φαίνονται στην Εικόνα 10. Τα αντικείµενα έχουν κατάσταση (πληροφορίες) και συµπεριφορά (διαδικασίες). Μια µπάλα µπορεί να αναπαρασταθεί από µια ακτίνα και µια θέση (Εικόνα 11). Ένα κουπί, µια πλευρά ή ένα τούβλο µπορούν να περιγραφούν από τη θέση τους, το πλάτος και το ύψος. Ανάλογα, η κατάσταση ενός παιχνιδιού αποτελείται από µια µπάλα, ένα κουπί, έναν τοίχο τούβλων και τέσσερις πλευρές. Τα αντικείµενα επίσης υποστηρίζουν µια συµπεριφορά λειτουργίες που µπορεί Εικόνα 10 να εφαρµοστούν για να τροποποιήσουν ή να «προβάλουν» τα δεδοµένα τους. Για παράδειγµα, µια µπάλα ανταποκρίνεται στα αιτήµατα να αναφέρει ή να τροποποιήσει τη θέση της. Οµοίως, µια µπάλα µπορεί να ερωτηθεί εάν βρίσκεται πίσω από το κουπί παιχνιδιών ή εάν συγκρούεται µε οποιαδήποτε από τα άλλα στοιχεία του παιχνιδιού. Μπορούµε να εκτελέσουµε παρόµοιες αναλύσεις πάνω στα άλλα αντικείµενα του παιχνιδιού. Σηµαντικό είναι να αναγνωρίσου- µε τις συσχετίσεις µεταξύ των α- ντικειµένων. Στο παράδειγµα µε το παιχνίδι, το κουπί και η µπάλα συσχετίζονται. Όταν το κουπί πετύχει τη µπάλα, η µπάλα θα αλλάξει κατεύθυνση. Παρόµοια είναι και η περίπτωση όταν η µπάλα πετύχει τον τοίχο. Επίσης µπορούµε να αναγνωρίσουµε και συσχετίσεις Videogame Μπάλα Κουπί Πλευρές τοίχος Μπάλα ακτίνα Τούβλο Πλάτος Ύψος Εικόνα 11 Πλευρές Πλάτος Ύψος Κουπί Πλάτος Ύψος του τύπου αποτελείται-από. Τέτοια σχέση υπάρχει µεταξύ των τούβλων και του τοίχου - ο τοίχος είναι κατασκευασµένος από τούβλα. Με αυτό τον τρόπο µπορούµε να σχηµατίσουµε µια εικόνα για το πώς αλληλεπιδρούν τα διάφορα µέρη του παιχνιδιού. Ουσιαστικά, η Ο-Ο σχεδίαση θεωρεί ότι µια εφαρµογή είναι µια συλλογή από συνεργαζόµενα αντικείµενα. Αντί να «ανακαλύπτουµε τα αντικείµενα» στο χώρο του προβλήµατος, συνηθίζεται να «αναζητούµε τις κλάσεις». Οι κλάσεις είναι ο θεµελιώδης µηχανισµός αφαίρεσης στην Ο-Ο σχεδίαση. Αναγνωρίζουν το γεγονός ότι συλλογές από σχετιζόµενα αντικείµενα µοιράζονται κοινά χαρακτηριστικά και συµπεριφορά. Για παράδειγµα, όλα τα τούβλα στον τοίχο του παραδείγµατός µας µε το παιχνίδι παρουσιάζουν την ίδια συµπεριφορά. Το κάθε τούβλο ξεχωριστά ανήκει στην κλάση Τούβλο. Όλα τα ξεχωριστά είδη της κάθε κλάσης ακολουθούν την κοινή δοµή και συµπεριφορά που περιγράφεται από την κλάση. Το κάθε είδος ξεχωριστά διατηρεί τη δική του κατάσταση. Κάθε τούβλο, για παράδειγµα, διατηρεί τη θέση του στον τοίχο.

8 Αντικειµενοστρεφής σχεδίαση Σελίδα 8 10 Σχεδίαση CRC Η µέθοδος Class-Responsibility-Collaborators (CRC Κλάσεις-Ευθύνες-Συνεργάτες) προτάθηκε το Είναι µία τεχνική σχεδίασης που χρησιµοποιείται ως αφετηρία για την O-O σχεδίαση µιας εφαρµογής. Υπάρχουν τρία βασικά βήµατα σε µία CRC σχεδίαση: 1) Βρίσκουµε τις κλάσεις, δηλαδή προσδιορίζουµε τα αντικείµενα που ενέχονται και τις κλάσεις τους. 2) Καθορίζουµε για ποια θέµατα είναι αρµόδιες, δηλαδή τι κάνουν (συµπεριφορά). 3) Καθορίζουµε τους συνεργάτες τους, δηλαδή άλλες κλάσεις που τις χρειάζονται για να φέρουν σε πέρας τις δουλειές τους. Για να τεκµηριωθεί η σχεδίαση και να περιοριστούν οι λεπτοµέρειες που µπορεί να παρουσιαστούν, υπάρχουν λίστες που καταγράφονται πάνω σε CRC φόρµες, οι οποίες συχνά χρησιµοποιούνται για να τεκµηριώσουν κάθε κλάση. Η εµφάνιση µιας CRC φόρµας φαίνεται στην Εικόνα 12. Είναι βέβαια φυσικό να χρησιµοποιείται ένα εργαλείο λογι- Όνοµα κλάσης σµικού για την τήρηση αυτών των λιστών. Για παράδειγµα θα σχεδιάσουµε µε την τεχνική CRC µια αριθµοµηχανή της οποίας η Ευθύνες Συνεργάτες διεπαφή µε το χρήστη φαίνεται στην Εικόνα 13. Θα θέλατε ί- σως να επιχειρήσετε µια δική σας σχεδίαση πριν διαβάσετε παρακάτω. Η περιγραφή για την αριθµο- µηχανή ακολουθεί: Εικόνα 12 Η αριθµοµηχανή αποτελείται από έναν αριθµό πλήκτρων και µία οθόνη. Υπάρχει ένα πλήκτρο για κάθε ψηφίο (από το 0 µέχρι το 9) το οποίο επιτρέπει την εισαγωγή αριθµών που προβάλλονται στην οθόνη. Υπάρχουν πλήκτρα µε τα οποία γίνονται υπολογισµοί πρόσθεση, διαίρεση κλπ. Το αποτέλεσµα της πράξης παρουσιάζεται στην οθόνη. Εικόνα 13 Η αριθµοµηχανή έχει ακόµη ένα µια προσοµοιωνόµενη χαρτοταινία που µπορεί να κινηθεί προς τα πάνω ή προς τα κάτω χρησιµοποιώντας µια ράβδο κύλισης. Ένα πλήκτρο επιτρέπει την εκτύπωση των περιεχοµένων της χαρτοταινίας Βρίσκοντας τις κλάσεις Ο προσδιορισµός των κλάσεων (και των αντικειµένων) είναι το κλειδί για την Ο-Ο σχεδίαση. Μία συνηθισµένη µέθοδος για να προσδιορίσουµε αρχικά τις κλάσεις είναι να εξετάσουµε την προδιαγραφή του προβλήµατος. Μία σχεδίαση φυσιολογικά ξεκινά από έναν σχετικά λεπτοµερή καθορισµό του προβλήµατος. Η προδιαγραφή είναι σηµαντική για κάθε σχεδίαση, αλλά ειδικά για την Ο-Ο σχεδίαση είναι κρίσιµη. ιαβάστε την προδιαγραφή και εντοπίστε τα ουσιαστικά. Τα ουσιαστικά είναι καλοί υποψήφιοι για τα αντικείµενα µέσα στο πρόγραµµα. Η διαδικασία της ονοµασίας των κλάσεων είναι πολύ σηµαντική. Γενικά τα ονόµατα των κλάσεων θα είναι ουσιαστικά και πρέπει να χρησιµοποιούνται όροι του προβλήµατος. εν υπάρχει συγκεκριµένη φόρµουλα για να βρούµε τη σωστή συλλογή των αντικειµένων που µοντελοποιούν το πρόβληµα. Επιπλέον, η πορεία είναι διερευνητική και αναδροµική. Είναι συνηθισµένο σε µια σχεδίαση να προτείνονται κάποιες κλάσεις, αλλά έπειτα να απορρίπτονται, καθώς η σχεδίαση εξελίσσεται. Επίσης, η ανάγκη για κάποιες κλάσεις δεν εµφανίζεται µέχρι τη φάση της υλοποίησης. Το να προσδιορίσει κανείς τις κλάσεις (και τα αντικείµενα) απαιτεί διορατικότητα, γνώση και κατανόηση του προβλήµατος. Στο παράδειγµα µε την αριθµοµηχανή προτείνονται οι κλάσεις Calculator, Display, Button, PrintTape. Είναι σηµαντικό στις αρχικές φάσεις της σχεδίασης να µην προχωρούµε σε πολλές λεπτοµέρειες στην σχεδίαση. Ακόµη δεν είναι η κατάλληλη στιγµή να αρχίσουµε να λαµβάνουµε υπόψη διαφορετικούς τύπους πλήκτρων, πχ πλήκτρα ψηφίων, πλήκτρα πράξεων ή πλήκτρα εκτύπωσης. Αυτό είναι ένα σηµαντικό θέµα, αλλά θα πρέπει να το αντιµετωπίσουµε αργότερα. Οι κλάσεις θα πρέπει να είναι κλάσεις για τους χρήστες. Κλάσεις για τους προγραµµατιστές, όπως στοίβες που τηρούν µερικά αποτελέσµατα των υπολογισµών, ή µία αριθµητική µονάδα για την εκτέλεση υπολογισµών, είναι σαφώς ακατάλληλες σε αυτή τη φάση Καθορίζοντας τις ευθύνες των κλάσεων Το δεύτερο βήµα είναι να καθορίσουµε τι υποτίθεται ότι πρέπει να κάνουν οι κλάσεις, δηλαδή ποια είναι η συµπεριφορά τους. Ο σκοπός είναι να καθορίσουµε το ρόλο και τα καθήκοντα κάθε κλάσης µέσα στο σύστηµα σε µία ή δύο σύντοµες αγγλικές προτάσεις. Ενώ οι κλάσεις είναι ουσιαστικά, οι ευθύνες είναι ρήµατα. Πάλι διαβάζουµε την προδιαγραφή για να τις βρούµε. Για κάθε µία από τις κλάσεις που προσδιορίσαµε νωρίτερα, φτιάχνουµε µια λίστα ενεργειών. Calculator Προβάλει τον εαυτό του µεταβιβάζοντας τα αιτήµατα σε πλήκτρα, οθόνη και χαρτοταινία. Υπολογίζει άθροισµα, γινόµενο, διαφορά κλπ µεταξύ δύο αριθµών. 1 Beck K, Cunnigham W, A laboratory for teaching object-oriented thinking, ACM Sigplan Notices, sel. 1-6, Οκτ

9 Αντικειµενοστρεφής σχεδίαση Σελίδα 9 Προβάλει τα αποτελέσµατα ενός υπολογισµού ζητώντας από την οθόνη να το κάνει. Προβάλει τον υπολογισµό στην χαρτοταινία ζητώντας από την ίδια να το κάνει. Εκτυπώνει τα περιεχόµενα της χαρτοταινίας ζητώντας της να το κάνει. Display Προβάλει οτιδήποτε του ζητηθεί αλλά δε µπορεί να υπολογίσει τίποτα. Button Ενηµερώνει την αριθµοµηχανή κάθε φορά που πιέζεται. ιατηρεί το ψηφίο ή τη λειτουργία που αντιπροσωπεύει. Προβάλει τον εαυτό του. PrintTape Προβάλει οτιδήποτε της ζητηθεί να εµφανίσει πάνω σε µια εξοµοίωση της χαρτοταινίας, η οποία µπορεί να µετακινηθεί προς τα πάνω και προς τα κάτω. Εάν ζητηθεί, εκτυπώνει τα περιεχόµενα της χαρτοταινίας Καθορίζοντας τους συνεργάτες Τέλος, για κάθε κλάση καθορίζουµε τους συνεργάτες, δηλαδή αυτές τις κλάσεις χωρίς των οποίων τη βοήθεια δε θα ήταν δυνατό για την κλάση να ανταποκριθεί στις ευθύνες της. Μια συνεργασία υποδηλώνει µια αµφίδροµη σχέση, αλλά συχνά η σχέση είναι µονόδροµη. Μια κλάση ζητά από µια κλάση-συνεργάτη να εκτελέσει κάποια εργασία. Ο όρος συνεργάτης µπορεί να αντικατασταθεί µε τον όρο βοηθός. Για το πρόγραµµα της αριθµοµηχανής, οι συνεργάτες για κάθε κλάση είναι: Calculator Display, Button, PrintTape Μια αριθµοµηχανή γνωρίζει για την οθόνη, τα πλήκτρα και την χαρτοταινία, καθώς χρειάζεται να είναι ικανή να τους λέει να προβάλλονται. Button Calculator Ένα πλήκτρο θα πρέπει να γνωρίζει την αριθµοµηχανή, καθώς θα πρέπει να λέει στην αριθµοµηχανή ότι έχει πατηθεί. Κάθε πλήκτρο πρέπει επίσης να έχει µια ένδειξη έτσι ώστε να µπορεί να διακρίνεται από τα άλλα πλήκτρα. Η ένδειξη του πλήκτρου θα είναι µια συµβολοσειρά. Display - Η οθόνη δεν έχει συνεργάτες. ουλεύει ανεξάρτητα όταν τροφοδοτείται µε ένα αποτέλεσµα για να το προβάλει. PrintTape Printer Η χαρτοταινία µπορεί να εµφανίσει οποιαδήποτε πληροφορία της ζητηθεί πάνω στην προσοµοίωση χαρτιού, αλλά θα πρέπει να ζητήσει από ένα πραγµατικό εκτυπωτή να εκτυπώσει τα περιεχόµενά της. Ο προσδιορισµός των συνεργατών δίνει µια ιδέα στο πώς επικοινωνούν µεταξύ τους τα αντικείµενα των κλάσεων για να εκτελέσουν κάποια καθήκοντα. Έτσι ξεκινάµε να έχουµε µια αίσθηση για τη ροή µηνυµάτων µεταξύ των αντικειµένων. Μπορούµε ήδη να καταλάβουµε ότι ένα πλήκτρο στέλνει µήνυµα πληροφορώντας την αριθµοµηχανή ότι έχει πιεσθεί και η αριθµοµηχανή πρέπει να στείλει µηνύµατα στην οθόνη και την χαρτοταινία για να προβάλουν κάτι. Η Εικόνα 14 δείχνει µια συµπληρωµένη Κλάση Button φόρµα CRC για την κλάση Button. Μέχρι τώρα έχουµε ολοκληρώσει µία Ο-Ο σχεδίαση για Ευθύνες Συνεργάτες το πρόγραµµα της αριθµοµηχανής. Έχουµε προσδιορίσει Μπορεί να πει στην Αριθµοµηχανή τις υποψήφιες κλάσεις για το πρόγραµµα και έχουµε ένα Αριθµοµηχανή ότι έχει πατηθεί σύνολο από φόρµες CRC που εµφανίζουν τις αλληλεπι- Γνωρίζει ποιο ψηφίο δράσεις µεταξύ των κλάσεων. Αργότερα θα δούµε πώς µπορούµε να βελτιώσουµε τη σχεδίαση. αντιπροσωπεύει Μπορεί να προβάλει τον εαυτό Συνοπτικά, η σχεδίαση CRC εξασφαλίζει χρήσιµες πληροφορίες σχετικά µε τις κλάσεις και τις µεθόδους και α- του ναγνωρίζει πιθανούς τρόπους διάσπασης ενός προβλήµατος. Η σχεδίαση CRC τείνει να είναι µια πολύ επαναληπτική διεργασία. Αναγνωρίζονται οι υποψήφιες κλάσεις. Εικόνα 14 Μετά κάποιες γίνονται δεκτές, ενώ άλλες απορρίπτονται ίσως επειδή δεν έχουν ευθύνες ή επειδή οι ευθύνες τους υπάγονται σε κάποια άλλη κλάση). Οι ευθύνες τείνουν να µεταναστεύουν από τη µια κλάση στην άλλη καθώς κατανοούµε καλύτερα τα αντικείµενα και τον ρόλο τους µέσα στο πρόβληµα.

10 Αντικειµενοστρεφής σχεδίαση Σελίδα Λεπτοµερειακή σχεδίαση Η σχεδίαση CRC είναι µια διερευνητική διαδικασία η οποία µπορεί να αποτελέσει τη βάση µιας Ο-Ο σχεδίασης. Εδώ παρουσιάζουµε τεχνικές που προχωρούν µετά το CRC και επιτρέπουν στο σχεδιαστή να αναλύσει, να διευκρινίσει και να προσδιορίσει περαιτέρω ένα σχεδιασµό. Αυτές οι τεχνικές είναι: Λεπτοµερειακός προσδιορισµός ευθυνών µε περιπτώσεις-χρήσης (use-cases) Προσδιορισµός σχέσεων µεταξύ κλάσεων Οργάνωση κλάσεων σε ιεραρχίες Οµαδοποίηση ευθυνών Αναζήτηση επαναχρησιµοποιήσιµων πλαισίων σχεδίασης Λεπτοµερειακός προσδιορισµός ευθυνών µε περιπτώσεις-χρήσης Η σχεδίαση CRC περιγράφει σε συντοµία τις ευθύνες της κλάσης σε φυσική γλώσσα. Τελικά, αυτές οι ευθύνες πρέπει να αναλυθούν, ώστε να µπορούµε µε ακρίβεια να περιγράψουµε τις υπηρεσίες που προσφέρει κάθε κλάση. Για κάθε κλάση πρέπει να αναγνωρίσου- µε την κατάσταση (δεδοµένα), που τηρείται από κάθε στιγµιότυπο και το πρωτόκολλο των µηνυµάτων στα οποία απαντά η κλάση. Οι περιπτώσεις-χρήσης (use-cases, µερικές φορές λέγονται και εκτελέσιµα σενάρια) είναι ένας απλός µηχανισµός για να µάθουµε περισσότερα για τον τρόπο αλληλεπίδρασης και επικοινωνίας των αντικειµένων. Η ιδέα είναι να διαλέξουµε κάποια αντιπροσωπευτικά παραδείγµατα του τρόπου που θα χρησιµοποιηθεί η εφαρµογή και να ακολουθήσουµε το µονοπάτι των µηνυµάτων πού στέλνονται. Για παράδειγµα, στην αριθµοµηχανή µια περίπτωση-χρήσης µπορεί να είναι ότι ο χρήστης πληκτρολογεί « =». Οι περιπτώσειςχρήσης συλλαµβάνουν την κατάσταση, τη συµπεριφορά και την κυκλοφορία µηνυµάτων στην εφαρµογή. Συγκεκριµένα, συλλαµβάνουν τα αντικείµενα που εµπλέκονται στην περίπτωση-χρήσης, τα σηµαντικότερα µηνύµατα που ανταλλάσσονται ανάµεσα σε αντικείµενα, και τη ροή ελέγχου. Γενικά, οι περιπτώσεις-χρήσης επικεντρώνονται στη συµπεριφορά σε κάποιο επίπεδο αφαίρεσης, δηλαδή δεν αποσκοπούν στην απογραφή όλων των µηνυµάτων. Θα παρακολουθήσουµε την περίπτωση-χρήσης « =» για την αριθµοµηχανή, αγνοώντας την αλληλεπίδραση µε την αριθµοµηχανή. 1. Πρώτα, πάτησε το 1. Το πλήκτρο µε τον αριθµό 1 λέει στην αριθµοµηχανή «το 1 έχει πατηθεί». Η αριθµοµηχανή αποθηκεύει το 1 και λέει στην οθόνη «πρόβαλε τον αριθµό 1». 2. Μετά, πάτησε το 0. Το πλήκτρο µε τον αριθµό 0 λέει στην αριθµοµηχανή «το 0 έχει πατηθεί». Η αριθµοµηχανή αποθηκεύει το 0 επισυνάπτοντάς το στο προηγούµενο ψηφίο, για να πάρουµε τον αριθµό 10 και λέει στην οθόνη «πρόβαλε τον αριθµό 1». 3. Μετά, πάτησε το +. Το πλήκτρο µε το σύµβολο + λέει στην αριθµοµηχανή «το + έχει πατηθεί». Η αριθµοµηχανή αποθηκεύει το + (δεν µπορεί να προσθέσει ακόµη γιατί ο δεύτερος όρος της πρόσθεσης δεν υπάρχει). 4. Μετά, πάτησε το 1. Το πλήκτρο µε τον αριθµό 1 λέει στην αριθµοµηχανή «το 1 έχει πατηθεί». Η αριθµοµηχανή αποθηκεύει το 1 σε µία περιοχή διαφορετική από εκεί που έχει αποθηκευτεί το 10 (προφανώς, χρειαζόµαστε ονόµατα - θα τους ονοµάσουµε όρος1, πράξη και όρος2. Μέχρι τώρα, ο όρος1 είναι το 10, η πράξη είναι το σύµβολο + και ο όρος2 είναι το 1). Μετά η αριθµοµηχανή λέει στην οθόνη «δείξε το 1». 5. Τέλος, πάτησε το =. Το πλήκτρο µε το σύµβολο = λέει στην αριθµοµηχανή «το = έχει πατηθεί». Η αριθµοµηχανή εκτελεί «όρος1 πράξη όρος2», και λέει στην οθόνη «δείξε το αποτέλεσµα». Τι έχουµε µάθει από µια τέτοια περίπτωση-χρήσης; Η κατάσταση που πρέπει να διατηρείται από την αριθµοµηχανή είναι πιο συγκεκριµένη - χρειάζεται να τηρούµε τα όρος1, πράξη, όρος2. Επίσης, αναγνωρίσαµε το πρωτόκολλο για διάφορα αντικείµενα. Για παράδειγµα, η οθόνη της αριθµοµηχανής πρέπει να υποστηρίζει µηνύµατα όπως: display: astring appendtodisplay: astring Επίσης, θα ήταν άκοµψο να αποκρίνεται η αριθµοµηχανή ξεχωριστά σε κάθε ψηφίο, πχ σκεφτείτε 0,1,2 Θα χρειαστεί να αναπτύξουµε ένα γενικό πρωτόκολλο όπου η ετικέτα του κουµπιού που πατήθηκε να περνάει ως κοµµάτι του µηνύµατος: digitbutton: abuttonlabel Η ανάλυση της περίπτωσης-χρήσης συνεχίζεται διαλέγοντας άλλα αντιπροσωπευτικά παραδείγµατα για να εκθέσουµε περισσότερες λεπτοµέρειες της κατάστασης και της συµπεριφοράς των κλάσεων που εµπλέκονται σε µια εφαρµογή. Συνοψίζοντας, οι περιπτώσεις-χρήσης βοηθούν στον προσδιορισµό της κατάστασης και της συµπεριφοράς των κλάσεων σε µία ε- φαρµογή και να δίνουν µια καλύτερη εικόνα για την αλληλεπίδραση των αντικειµένων σε µια εφαρµογή. Προσδιορισµός σχέσεων µεταξύ κλάσεων, οργάνωση κλάσεων σε ιεραρχίες και οµαδοποίηση ευθυνών Αξίζει να επαναλάβουµε ότι ένας από τους βασικούς στόχους του αντικειµενοστρεφούς προγραµµατισµού είναι να παράγει γενικά, επαναχρησιµοποιήσιµα τµήµατα λογισµικού, τα οποία µπορούν να επαναχρησιµοποιηθούν στην εφαρµογή για την οποία κατασκευάστηκαν, αλλά και σε άλλες µελλοντικές εφαρµογές. Οι έννοιες της κληρονοµικότητας και της εξειδίκευσης επιτρέπουν: Νέες κλάσεις να περιγραφούν ως επεκτάσεις ή εξειδικεύσεις κλάσεων που ήδη υπάρχουν. Υποκλάσεις να κληρονοµήσουν τη συµπεριφορά και την κατάσταση των υπέρ-κλάσεων.

11 Αντικειµενοστρεφής σχεδίαση Σελίδα 11 Τα πλεονεκτήµατα της κληρονοµικότητας και της εξειδίκευσης είναι: Στο επίπεδο του σχεδιασµού, σύντοµοι και ξεκάθαροι ορισµοί οι υποκλάσεις περιγράφονται µόνο στα σηµεία που διαφέρουν από τις υπέρ-κλάσεις τους. Στο επίπεδο της υλοποίησης, η επαναχρησιµοποίηση κώδικα, αντί για την αντιγραφή του οι υποκλάσεις επαναχρησιµοποιούν τον υπάρχοντα κώδικα των υπέρ-κλάσεων. Περιγράψαµε τους µηχανισµούς που υλοποιεί αυτές τις έννοιες νωρίτερα. Αυτές οι έννοιες εισάγουν νέες διαστάσεις στη διαδικασία σχεδίασης. Ένας βασικός σχεδιαστικός στόχος είναι η οµαδοποίηση των ευθυνών µέσω µιας ιεραρχίας κλάσεων. Μια ευθύνη της υ- πέρ-κλάσης µπορεί να µοιραστεί σε κάθε υποκλάση της. Για να εξερευνήσουµε αυτές τις ιδέες θα επιστρέψουµε στο παράδειγµα του βιντεοπαιχνιδιού. Μια αρχική σχεδίαση CRC δηµιούργησε την ιεραρχία κλάσεων που φαίνεται στην Εικόνα 15. Αντικείµενο Θα υποθέσουµε ότι έχουµε απλή κληρονοµικότητα (οι υποκλάσεις µπορούν να έχουν µία µόνο υπέρ-κλάση). Υπάρχει η κλάση Αντικείµενο την οποία κληρονοµούν όλες οι υπόλοιπες. Προς το παρόν, οι κλάσεις που συνιστούν το πρόγραµµα του βιντεοπαιχνιδιού είναι απολύτως ανεξάρτητες µεταξύ τους. Θα δούµε σε λίγο πώς µπορούµε να ανακαλύψουµε οµοιότητες µεταξύ κλάσεων και εποµένως κληρονοµικότητα. Βιντεοπαιχνίδι Μπάλα Κουπί Πλευρές Τ ίχ ς Μπάλα Ακτίνα Τούβλο Πλάτος Ύψος Εικόνα 15 Πλευρά Πλάτος Ύψος Κουπί Πλάτος Ύψος Χωρίς καν να σκεφτούµε τα πρωτόκολλα µηνυµάτων, είναι προφανές ότι όλα τα αντικείµενα που απαρτίζουν το παιχνίδι έχουν κάποια θέση και µέγεθος. Γι αυτό ας εισάγουµε µια νέα κλάση, ΣτοιχείοΠαιχνιδιου, η οποία θα χειριστεί αυτές τις ευθύνες για λογαριασµό των υποκλάσεών της. Όµως πρέπει πρώτα να γενικεύσουµε τον ορισµό του µεγέθους η µπάλα έχει ακτίνα αλλά άλλα στοιχεία έχουν πλάτος και ύψος. Γενικεύουµε λοιπόν το µέγεθος ως µια περιοχή έτσι ο ίδιος ορισµός θα χρησιµοποιηθεί για όλα τα στοιχεία. Σηµειώστε ότι η ΣτοιχείοΠαιχνιδιού καλείται αφηρηµένη κλάση. εν θα δηµιουργήσουµε στιγµιότυπα αυτής της κλάσης ο ρόλος της είναι να συλλαµβάνει την αφηρηµένη έννοια της θέσης / µεγέθους. Θα υπάρξουν άλλες ευθύνες οι οποίες θα είναι συγκεκριµένες για κάθε υποκλάση. Μπορούµε να βελτιώσουµε περαιτέρω το σχεδιασµό; Τι άλλες αφαιρέσεις θα ήταν χρήσιµες; Υπάρχουν τουλάχιστο δυο όψεις σε αυτό το ζήτηµα. Μερικά από τα εξαρτήµατα του παιχνιδιού είναι κινούµενα (η µπάλα και το κουπί), ενώ άλλα δεν είναι κινούµενα (τα τούβλα και οι πλευρές). Θα πρέπει να ορίσουµε κλάσεις ΚινούµενοΣτοιχείο και ΑκίνητοΣτοιχείο ; Πώς κρίνουµε εάν αυτές οι κλάσεις είναι χρήσιµες ή όχι; Είναι σαφές ότι εάν λίγες ευθύνες µπορούν να µετατοπιστούν στην καινούργια αφηρηµένη κλάση, τότε δεν έχουµε κερδίσει πολλά. Ίσως υπάρχει µια καλύτερη αφαίρεση. Η τρέχουσα σχεδίαση δεν έχει την έννοια του τοίχου, αλλά εάν κάποιος περιέγραφε το παιχνίδι τότε σίγουρα θα αναφερόταν σε αυτόν. Ας εισάγουµε λοιπόν µια κλάση Τοίχος που αποτελείται από τούβλα. Χωρίς να προχωρούµε σε περισσότερες ΣτοιχείοΠαιχνιδιού εξηγήσεις, προ- σέξτε µια σχεδίαση που αναπαρίσταται στην Εικόνα 16. ΒασικόΑντικείµενοΠαιχνιδιού ΣύνθετοΑντικείµενοΠαιχνιδιού Συνοψίζοντας, όταν επεξεργαζόµαστε µια Ο-Ο σχεδίαση οφείλουµε να προσδιορίζουµε τις σχέσεις µεταξύ των κλάσεων και να κατανέµουµε συ- Μπάλα Τούβλο Κουπί Πλευρά Τοίχος Πλευρέ Εικόνα 16 µπεριφορές στις κλάσεις µέσα σε ένα σχήµα ιεραρχικής οργάνωσης. Σηµαντικές σχέσεις µεταξύ κλάσεων τις οποίες έπρεπε να εντοπίσουµε είναι: Σχέσεις είναι-ένα. Τις χειριζόµαστε µε σχέσεις υπέρ-κλάση / υποκλάση. Για παράδειγµα µπάλες, τούβλα, κουπιά και πλευρές είναι όλα βασικά αντικείµενα του παιχνιδιού. Σχέσεις είναι-παρόµοιο. Αναγνωρίζουµε ότι αντικείµενα όπως µπάλες, τούβλα, κλπ έχουν όλα ιδιότητες, όπως θέση και µέγεθος. Σχέσεις είναι-τµήµα. Το κουπί, η µπάλα και τα τούβλα είναι στοιχεία του βιντεοπαιχνιδιού. Παροµοίως, ο τοίχος αποτελείται από τούβλα. Η κατανόηση των σχέσεων των κλάσεων είναι κρίσιµη ώστε να παραχθεί ποιοτική αντικειµενοστρεφής σχεδίαση.

12 Αντικειµενοστρεφής σχεδίαση Σελίδα 12 Αναζήτηση επαναχρησιµοποιήσιµων πλαισίων σχεδίασης Η επαναχρησιµοποίηση µπορεί να επιτευχθεί µε την χρήση κληρονοµικότητας και αφηρηµένων κλάσεων. Ένας απώτερος σκοπός και πολύ πιο δύσκολος είναι να προσδιορίσουµε επαναχρησιµοποιήσιµα πλαίσια σχεδίασης, δηλαδή υποσυστήµατα συνεργαζόµενων κλάσεων που µπορούν να επαναχρησιµοποιηθούν για συγκεκριµένα πεδία εφαρµογών. Ίσως το παλαιότερο παράδειγµα ενός πλαισίου σχεδίασης είναι η αρχιτεκτονική µοντέλου - όψης - ελεγκτή (Model-View-Controller, MVC) που εισήχθηκε από τη Smalltalk για την υλοποίηση γραφικών διεπαφών (Graphical User Interfaces, GUI). Τα συστατικά της γραφικής διεπαφής διαχωρίζονται στα τρία τµήµατα της αρχιτεκτονικής. Το µοντέλο περιλαµβάνει δεδοµένα, κλάσεις και αντικείµενα για την εφαρµογή, η όψη προβάλει τις πληροφορίες του µοντέλου και ο ελεγκτής χειρίζεται τα συµβάντα του ποντικιού και του πληκτρολογίου. Αυτή η αρχιτεκτονική έχει µερικά αξιοσηµείωτα χαρακτηριστικά. Επιτρέπει πολλαπλές όψεις του ίδιου µοντέλου, καθώς επίσης και την χρησιµοποίηση αυτών σαν µέρη κατασκευής µέσα σε µεγαλύτερα τµήµατα, δηλαδή καινούργια είδη όψεων µπορούν να κατασκευαστούν χρησιµοποιώντας ήδη υπάρχουσες όψεις ως υπό-όψεις. Η βιβλιοθήκη της Smalltalk περιλαµβάνει µια µεγάλη βιβλιοθήκη όψεων και ελεγκτών µε συµπεριφορά σε κείµενο, γραφικά και λίστες για παράδειγµα. Αυτά µπορούν να εξειδικευτούν ακόµα περισσότερο από τους προγραµµατιστές. Η σηµαντική συνεισφορά της αρχιτεκτονικής MVC δεν είναι τα τρία τµήµατά της, αλλά η αλληλεπιδράσεις µεταξύ τους, και η αναγνώριση ότι αυτό το πλαίσιο αλληλεπίδρασης είναι επαναχρησιµοποιήσιµο. Επαναχρησιµοποιήσιµα πλαίσια σχεδίασης προορίζονται για συγκεκριµένα πεδία εφαρµογών, όπως διεπαφές χρήστη, συστήµατα αρχείων και δροµολόγηση διεργασιών. Η αναγνώριση αυτών των οικογενειών συνεργαζοµένων κλάσεων προσθέτει µια άλλη διάσταση - πρόκληση στην διαδικασία σχεδίασης. 12 Η σχεδίαση είναι προγραµµατισµός και ο προγραµµατισµός είναι σχεδίαση Η αντικειµενοστρεφής σχεδίαση είναι επαναληπτική διαδικασία. Σε κάθε επανάληψη, η σχεδίαση εξελίσσεται. Ενώ στην παραδοσιακή ανάπτυξη λογισµικού, σχεδίαση και υλοποίηση θεωρούνται ξεχωριστές κατά βάση δραστηριότητες, στην Ο-Ο µέθοδο οι δύο δραστηριότητες είναι συχνά δυσδιάκριτες. Αυτό συµβαίνει για τρεις κυρίως λόγους: 6. Η πρωτοτυποποίηση είναι ένα αναπόσπαστο κοµµάτι της Ο-Ο σχεδίασης και υλοποίησης. Κατασκευάζουµε πρωτότυπα διότι αναγνωρίζουµε ότι στις περισσότερες περιπτώσεις οι απαιτήσεις για ένα σύστηµα είναι τουλάχιστον ασαφείς ή όχι πλήρως κατανοητές. Είναι µία διερευνητική διαδικασία, µε την οποία ελέγχουµε την εγκυρότητα της ανάλυσης, της σχεδίασης και των επιλογών διεπαφής χρήστη. Η πρωτοτυποποίηση υπαγορεύει ότι η σχεδίαση και η υλοποίηση προχωρούν σε µεγάλα αλυσιδωτά επαναλαµβανόµενα βήµατα. 7. Οι δραστηριότητες που συµβαίνουν κατά τη διάρκεια της βελτίωσης µιας Ο-Ο σχεδίασης είναι παρόµοιες και στη σχεδίαση ενός λειτουργικού πρωτοτύπου. Ακόµη, δραστηριότητες όπως η αναδιοργάνωση της ιεραρχίας κλάσεων συµβαίνουν τόσο κατά την υλοποίηση του πρωτοτύπου, όσο και κατά τη σχεδίαση. 8. Οι σχεδιαστές πρέπει να είναι πολύ πιο ενηµερωµένοι σε ό,τι αφορά το περιβάλλον ανάπτυξης, εξαιτίας των επιπτώσεων που έχουν οι επαναχρησιµοποιηµένες βιβλιοθήκες κλάσεων στη σχεδίαση. Ο Meyer 2 υποστηρίζει ότι σχεδίαση και υλοποίηση είναι στιγµιότυπα της ίδιας δραστηριότητας - του προγραµµατισµού. 13 Μεθοδολογίες αντικειµενοστρεφούς σχεδίασης Στη λογοτεχνία έχουν παρουσιαστεί αρκετές µεθοδολογίες Ο-Ο σχεδίασης, πράγµα που αντανακλά τη σχετική ανωριµότητα της επιστηµονικής αυτής περιοχής σε σύγκριση µε τη δοµηµένη σχεδίαση. Γενικά είναι αποδεκτό ότι ο Ο-Ο προγραµµατισµός είναι πιο κατανοητός από την Ο-Ο σχεδίαση, που µε τη σειρά της είναι καλύτερα κατανοητή από την Ο-Ο ανάλυση που µε τη σειρά της είναι καλύτερα κατανοητή από την Ο-Ο διαχείριση έργου. Προσεγγίσαµε τη σχεδίαση κυρίως µε βάση τη µεθοδολογία που ονοµάζεται οδηγούµενα-από-ευθύνες σχεδίαση (responsibilitydriven design 3 ). Άλλες γνωστές µεθοδολογίες περιλαµβάνουν object-oriented design, HOOP, OOSD. Καθεµιά από τις µεθοδολογίες χρησιµοποιεί (διαφορετική) διαγραµµατική απεικόνιση για να παρουσιάζει την τελική σχεδίαση. 14 Συζήτηση και αξιολόγηση Σε ότι αφορά την επιρροή στους προγραµµατιστές, ο Ο-Ο προγραµµατισµός προβλεπόταν να είναι τη δεκαετία του 1990, αυτό που ήταν ο δοµηµένος προγραµµατισµός στη δεκαετία του Αυτό πράγµατι συνέβη - η Ο-Ο σχεδίαση και προγραµµατισµός αποτελεί την κυρίαρχη προσέγγιση στην σύγχρονη ανάπτυξη λογισµικού. Σε αυτό βοήθησε η κυκλοφορία και ευρεία χρήση γλωσσών προγραµµατισµού που υποστηρίζουν το Ο-Ο στιλ, όπως οι C++, Ada, Smalltalk και Java. Τα ισχυρά σηµεία της Ο-Ο προσέγγισης είναι: η φυσικότητα της µοντελοποίηση της εφαρµογής µε αντικείµενα, κλάσεις και µεθόδους η αρθρωσιµότητα (σε συνδυασµό µε την απόκρυψη πληροφορίας) που προσφέρουν οι κλάσεις η ευκολία επαναχρησιµοποίησης στοιχείων λογισµικού λόγω κληρονοµικότητας Τις τελευταίες δεκαετίες η Ο-Ο µεθοδολογία έχει κυριαρχήσει στη σχεδίαση προγράµµατος και στην ανάπτυξη λογισµικού. 2 Meyer B, Object-Oriented Software construction, Prentice-Hall, Wirfs-Brock R J and Johnson Ralph E, Surveying current research in O-O design, Communications of the ACM, vol. 33, no. 9, pp , Sept

13 Αντικειµενοστρεφής σχεδίαση Σελίδα 13 Περίληψη αξιολόγησης Ιδιαίτερα χαρακτηριστικά και πλεονεκτήµατα Ξεφεύγει από τις προηγούµενες προσεγγίσεις της σχεδίασης παρέχοντας µια σφαιρική άποψη της σχέσης µεταξύ δεδοµένων και λειτουργιών. Εξασφαλίζει µέγιστη επαναχρησιµοποίηση µέσω του µηχανισµού της κληρονοµικότητας. Μειονεκτήµατα Η σχεδίαση δεν απορρέει από καλά καθορισµένα βήµατα. Απαιτείται πιο βαθιά και δηµιουργική προσέγγιση. Φιλοσοφία / Προοπτική Η θεωρία πίσω από τη µέθοδο είναι ότι η δοµή του προγράµµατος πρέπει να είναι ένα µοντέλο ή µία προσοµοίωση της περιοχής του προβλήµατος. Ένα τέτοιο µοντέλο εκφράζεται µέσω αντικειµένων που αντιπροσωπεύουν πιστά τα στοιχεία της εφαρµογής. Συστηµατική; Αρκετά. Η αναγνώριση αντικειµένων, κλάσεων και κληρονοµικότητας γίνεται κατά περίπτωση. Πληθώρα τύπων διαγραµµάτων βοηθούν στη διαδικασία σχεδίασης και την τεκµηρίωση των σχεδιαστικών επιλογών. Κατάλληλες εφαρµογές Όλες. Η Ο-Ο σχεδίαση ταιριάζει ιδιαίτερα σε προγράµµατα που οδηγούνται από συµβάντα. Τέτοια είναι τα προγράµµατα που αναφέρθηκαν ως παραδείγµατα. Το πρόγραµµα ανταποκρίνεται σε διάφορα συµβάντα που προκαλεί ο χρήστης µέσω του πληκτρολογίου και του ποντικιού. Κάθε συµβάν εξυπηρετείται µε κλήση µιας µεθόδου του κατάλληλου αντικειµένου. Ακατάλληλες εφαρµογές Καµία. Πάνω-προς-κάτω; Όχι. Όταν ένα πρόγραµµα έχει σχεδιαστεί χρησιµοποιώντας την Ο-Ο µέθοδο είναι ένα δίκτυο αντικειµένων χωρίς προφανή ιεραρχία. Κατά τη σχεδίαση αναγνωρίζονται οι ιεραρχίες κλάσεων, αλλά αυτή η διαδικασία δεν είναι απαραίτητο να εκτελείται από πάνω προς τα κάτω. Καλό για µεγάλης κλίµακας σχεδιασµό; Ναι. Η Ο-Ο σχεδίαση έχει εφαρµοστεί µε επιτυχία σε πολλά µεσαία και µεγάλα προγράµµατα και συστήµατα λογισµικού. Πιο συγκεκριµένα η έµφαση που δίνεται στην επαναχρησιµοποίηση βοηθάει ώστε νέα και µεγάλα προγράµµατα να µπορούν να σχεδιαστούν εύκολα. Καλό για µικρής κλίµακας σχεδιασµό; Όχι. Το τελικό προϊόν της Ο-Ο σχεδίασης είναι η δοµή ενός προγράµµατος σε µεγάλη κλίµακα, εκφρασµένη µε κλάσεις, αντικείµενα και µεθόδους. Ο λεπτοµερής σχεδιασµός των µεθόδων πρέπει να γίνει χρησιµοποιώντας άλλη προσέγγιση. Υποστήριξη εργαλείων ιατίθενται εργαλεία που υποστηρίξουν τη δηµιουργία, σύνταξη, επόπτευση και µετασχηµατισµό διαφόρων τύπων διαγραµµάτων που χρησιµοποιεί η µέθοδος. 15 Περίληψη Η Ο-Ο σχεδίαση χαρακτηρίζεται από: Αναζήτηση των κλάσεων: Αναγνωρίζονται οι κλάσεις (και τα αντικείµενα) που αρµόζουν για συγκεκριµένο πεδίο προβλη- µάτων. Λεπτοµερή ορισµό ευθυνών των κλάσεων: Καθορίζεται ο ρόλος και οι ευθύνες κάθε κλάσης µέσα στο σύστηµα. Προσδιορισµό συνεργατών κάθε κλάσης: Καθορίζεται εκείνες οι κλάσεις χωρίς τη συνδροµή των οποίων µια κλάση δεν µπορεί να φέρει εις πέρας τις ευθύνες της. Εκλέπτυνση ευθυνών µε περιπτώσεις-χρήσης: Μαθαίνουµε πώς συµπεριφέρονται και επικοινωνούν τα αντικείµενα χρησιµοποιώντας σενάρια εκτέλεσης. Αναγνώριση σχέσεων µεταξύ κλάσεων: Προχωρούµε σε ποιο λεπτοµερειακή σχεδίαση αναγνωρίζοντας σηµαντικές σχέσεις µεταξύ κλάσεων, όπως είναι-ένα, είναι-τµήµα. Οργάνωση των κλάσεων σε ιεραρχίες: Ανακαλύπτουµε σχέσεις είναι-ένα ανάµεσα σε κλάσεις χρησιµοποιώντας τις έννοιες της εξειδίκευσης και της γενίκευσης. Μεταφράζουµε τις ιεραρχίες κλάσεων σε επαναχρησιµοποιούµενο κώδικα µέσω κληρονοµικότητας και αφηρηµένων κλάσεων. Οµαδοποίηση ευθυνών: Μεταφέρουµε συµπεριφορά από µια κλάση σε άλλη υλοποιώντας συµπεριφορές έτσι ώστε κοινός κώδικας να µοιράζεται από όλες τις υποκλάσεις. Αναζήτηση επαναχρησιµοποιήσιµων πλαισίων σχεδίασης: Αναγνωρίζουµε υποσυστήµατα συνεργαζόµενων κλάσεων που αλληλεπιδρούν µε τρόπο που µπορεί να επαναχρησιµοποιηθεί σε κάποια ανάλογη περίπτωση. Κλείνοντας, είναι σηµαντικό να αντιληφθούµε ότι τα Ο-Ο συστήµατα είναι ακόµα σε, σχετικά, βρεφικό στάδιο. εν υπάρχει µια ευρέως αποδεκτή µεθοδολογία Ο-Ο σχεδίασης.

14 Αντικειµενοστρεφής σχεδίαση Σελίδα 14 Ασκήσεις 1. Μπορεί η αντικειµενοστρεφής σχεδίαση να χαρακτηρισθεί ως πάνω-προς-κάτω ή κάτω-προς-πάνω διαδικασία; 2. Αν ο προγραµµατισµός και η σχεδίαση είναι δύο όψεις του ίδιου νοµίσµατος, όπως διατείνεται η Ο-Ο σχεδίαση, αυτό ση- µαίνει ότι όλοι οι σχεδιαστές πρέπει να είναι επίσης προγραµµατιστές; 3. Σε ποιο βαθµό επηρεάζεται η Ο-Ο σχεδίαση από τις βιβλιοθήκες κλάσεων που διατίθενται; Σε ποιο βαθµό οι σχεδιαστές πρέπει να γνωρίζουν τις διαθέσιµες βιβλιοθήκες; 4. Συνεχίστε τη σχεδίαση της αριθµοµηχανής που περουσιάστηκε. Συγκεκριµένα: Σχεδιάστε περισσότερες περιπτώσεις-χρήσης. Οµαδοποιήστε τις κλάσεις σε µια ιεραρχία 5. Τι χαρακτηριστικά ή ενδείξεις πρέπει να χρησιµοποιήσουµε για να προσδιορίσουµε πιθανά ελαττώµατα σε µια Ο-Ο σχεδίαση; Για παράδειγµα, µια κλάση µε υπερβολικό πλήθος ευθυνών θα έπρεπε να επανεξεταστεί. 6. Εφαρµόστε τις τεχνικές που παρουσιάστηκαν για να σχεδιάσετε µια ταµειολογιστική µηχανή (ΑΤΜ) τραπέζης. Το ΑΤΜ α- νταποκρίνεται σε ακολουθίες εντολών. Υποθέστε ότι το ΑΤΜ είναι ικανό να εκτελεί τα παρακάτω: Αναγνωρίζει κάθε χρήστη µέσω µιας προσωπικής κάρτας και ενός συγκεκριµένου κωδικού που εισάγει ο χρήστης. Κάνει καταθέσεις και αναλήψεις σε λογαριασµούς. Μεταφέρει κεφάλαια µεταξύ δύο λογαριασµών. Προβάλει το υπόλοιπο ενός λογαριασµού.

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΜΟΝΤΕΛΑ ΣΥΣΤΗΜΑΤΟΣ Διδάσκων: Γ. Χαραλαμπίδης, Επ. Καθηγητής

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

Η στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες:

Η στοίβα (stack) H στοίβα είναι ένας αποθηκευτικός χώρος οργανωµένος κατά τέτοιο τρόπο ώστε να υποστηρίζει δύο βασικές λειτουργίες: Άσκηση 5Α_5 26/3/2003 11.5. Άσκηση 5A - [αναγνώριση αντικειµένων-διάγραµµα κλάσεων] [Σε αντικατάσταση της άσκησης 5 του κεφαλαίου 11] 11.5.1. Περιγραφή Η άσκηση αυτή είναι η πρώτη από µία σειρά ασκήσεων

Διαβάστε περισσότερα

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

Διαβάστε περισσότερα

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Διάλεξη 8: Σχεδίαση Συστήματος Σχεδίαση Συστήματος 2 Διεργασία μετατροπής του προβλήματος σε λύση. Από το Τί στο Πώς. Σχέδιο: Λεπτομερής περιγραφή της λύσης. Λύση:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.1. Ανάπτυξη Προγράµµατος Τι είναι το Πρόγραµµα; Το Πρόγραµµα: Είναι ένα σύνολο εντολών για την εκτέλεση ορισµένων λειτουργιών από τον υπολογιστή.

Διαβάστε περισσότερα

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

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

Διαβάστε περισσότερα

αντίστοιχο γεγονός. Όταν όντως το κουμπί

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ελληνικό Ανοικτό Πανεπιστήµιο. Η ιαχείριση Απαιτήσεων στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο. Η ιαχείριση Απαιτήσεων στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Η ιαχείριση Απαιτήσεων στην Ενοποιηµένη ιαδικασία ρ. Πάνος Φιτσιλής Περιεχόµενα Τι είναι διαχείριση απαιτήσεων Ποια είναι η ροή των εργασιών στη φάση της καταγραφής των

Διαβάστε περισσότερα

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

Διαβάστε περισσότερα

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

Διαβάστε περισσότερα

5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος

5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος 5. Γραφήματα 5.1 Εισαγωγή 5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος Το Discoverer παρέχει μεγάλες δυνατότητες στη δημιουργία γραφημάτων, καθιστώντας δυνατή τη διαμόρφωση κάθε συστατικού μέρους

Διαβάστε περισσότερα

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

Διαβάστε περισσότερα

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro Για να μπορέσουμε να εισάγουμε δεδομένα από το πληκτρολόγιο αλλά και για να εξάγουμε εμφανίσουμε αποτελέσματα στην οθόνη του υπολογιστή χρησιμοποιούμε τις εντολές Εισόδου και Εξόδου αντίστοιχα. Σύνταξη

Διαβάστε περισσότερα

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

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή Οι σηµερινές δραστηριότητες των επιχειρήσεων δηµιουργούν την ανάγκη για όσο το δυνατό µεγαλύτερη υποστήριξη από τα πληροφοριακά τους

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

Διαβάστε περισσότερα

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

Διαβάστε περισσότερα

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα Κεφάλαιο 7. 7.1 ομές εδομένων για Γραφικά Υπολογιστών. Οι δομές δεδομένων αποτελούν αντικείμενο της επιστήμης υπολογιστών. Κατά συνέπεια πρέπει να γνωρίζουμε πώς οργανώνονται τα γεωμετρικά δεδομένα, προκειμένου

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Οδηγίες σχεδίασης στο περιβάλλον Blender

Οδηγίες σχεδίασης στο περιβάλλον Blender Οδηγίες σχεδίασης στο περιβάλλον Blender Στον πραγματικό κόσμο, αντιλαμβανόμαστε τα αντικείμενα σε τρεις κατευθύνσεις ή διαστάσεις. Τυπικά λέμε ότι διαθέτουν ύψος, πλάτος και βάθος. Όταν θέλουμε να αναπαραστήσουμε

Διαβάστε περισσότερα

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που 7.7 Πρωτόκολλο ARP 1 ύο είδη διευθύνσεων: MAC - IP Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που µπορεί

Διαβάστε περισσότερα

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

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

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

Περιεχόμενο του μαθήματος ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Απαιτήσεις Λογισμικού Περιπτώσεις χρήσης Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2012-2013 1 Περιεχόμενο του μαθήματος

Διαβάστε περισσότερα

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης Περιπτώσεις Χρήσης περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης περιπτώσεις χρήσης Τι θα κάνει το λογισμικό για κάποιον

Διαβάστε περισσότερα

ραστηριότητες στο Επίπεδο 1.

ραστηριότητες στο Επίπεδο 1. ραστηριότητες στο Επίπεδο 1. Στο επίπεδο 0, στις πρώτες τάξεις του δηµοτικού σχολείου, όπου στόχος είναι η οµαδοποίηση των γεωµετρικών σχηµάτων σε οµάδες µε κοινά χαρακτηριστικά στη µορφή τους, είδαµε

Διαβάστε περισσότερα

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Οι περιπτώσεις χρήσης 1 Ελληνικό Ανοικτό Πανεπιστήµιο Οι περιπτώσεις χρήσης ρ. Πάνος Φιτσιλής 2 Περιεχόµενα Το µοντέλο των περιπτώσεων χρήσης Τα διαγράµµατα των περιπτώσεων χρήσης Λεκτική περιγραφή των περιπτώσεων χρήσης Τρόπος

Διαβάστε περισσότερα

Κανόνες για ανάπτυξη διαγραµµάτων κλάσεων

Κανόνες για ανάπτυξη διαγραµµάτων κλάσεων 1 Ελληνικό Ανοικτό Πανεπιστήµιο Κανόνες για ανάπτυξη διαγραµµάτων κλάσεων ρ. Πάνος Φιτσιλής 2 Περιεχόµενα Προσδιορισµός κλάσεων Πως να ονοµάσουµε τις κλάσεις; Που να τις βρούµε; Τι να κοιτάξουµε; Τι να

Διαβάστε περισσότερα

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

Περιεχόμενο του μαθήματος ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Η Αντικειμενοστρεφής Τεχνολογία Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 202-203 Περιεχόμενο του μαθήματος Η έννοια

Διαβάστε περισσότερα

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

Διαβάστε περισσότερα

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη Επιλογή και επανάληψη Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως, ότι στο

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 435: ΑΛΛΗΛΕΠΙ ΡΑΣΗ ΑΝΘΡΩΠΟΥ ΥΠΟΛΟΓΙΣΤΗ Ακαδηµαϊκό Έτος 2004 2005, Χειµερινό Εξάµηνο 2 Η ΟΜΑ ΙΚΗ ΕΡΓΑΣΙΑ: ΑΝΑΠΤΥΞΗ ΑΡΧΙΚΗΣ Ι ΕΑΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΚΑΙ ΑΝΑΛΥΣΗ ΑΝΑΓΚΩΝ

Διαβάστε περισσότερα

Atlantis - Νέο user interface

Atlantis - Νέο user interface New Desktop 1 Atlantis - Νέο user interface ATLANTIS - ΝΕΟ USER INTERFACE...2 ΓΕΝΙΚΗ ΠΑΡΟΥΣΙΑΣΗ...3 ΓΡΑΜΜΗ ΣΥΣΤΗΜΑΤΟΣ...4 ΜΠΑΡΑ ΧΡΗΣΤΗ (USER TOOLBAR)...5 ΚΕΝΤΡΙΚΟ ΜΕΝΟΥ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ...6 Κεντρικό μενού

Διαβάστε περισσότερα

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

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει. οµηµένες τεχνικές Ο στόχος των δοµηµένων τεχνικών είναι: Υψηλής ποιότητας προγράµµατα Εύκολη τροποποίηση προγραµµάτων Απλοποιηµένα προγράµµατα Μείωση κόστους και χρόνου ανάπτυξης. Οι βασικές αρχές τους

Διαβάστε περισσότερα

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

ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Sites:

Διαβάστε περισσότερα

2.2.3 Η εντολή Εκτύπωσε

2.2.3 Η εντολή Εκτύπωσε 2.2.3 Η εντολή Εκτύπωσε Η εντολή Εκτύπωσε χρησιµοποιείται προκειµένου να εµφανίσουµε κάτι στην οθόνη του υπολογιστή. Για τον λόγο αυτό ονοµάζεται και εντολή εξόδου. Ισοδύναµα µπορεί να χρησιµοποιηθεί και

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

Διαβάστε περισσότερα

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo; Κεφάλαιο 2 Εισαγωγή Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo; Η Logo είναι μία από τις πολλές γλώσσες προγραμματισμού. Κάθε γλώσσα προγραμματισμού έχει σκοπό τη δημιουργία προγραμμάτων

Διαβάστε περισσότερα

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

Μοντελοποίηση Πεδίου Μοντελοποίηση Πεδίου περιεχόμενα παρουσίασης Εννοιολογικές κλάσεις Συσχετίσεις εννοιολογικών κλάσεων Τύποι ιδιοτήτων Γενίκευση Συχνά σφάλματα μοντελοποίησης πεδίου Εννοιολογικές κλάσεις και κλάσεις λογισμικού

Διαβάστε περισσότερα

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων 1 Γενικά Εξαιρετικά σηµαντικά: η απόφαση για το που ανήκουν οι µέθοδοι, και πως αλληλεπιδρούν τα αντικείµενα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

Διαβάστε περισσότερα

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Σκοπός της 10ης άσκησης είναι να μάθουμε να χρησιμοποιούμε sprites και να φτιάξουμε ένα παιχνίδι που χρησιμοποιεί συγκρούσεις. Θα δούμε επίσης μερικά

Διαβάστε περισσότερα

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισµός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης µεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of)είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako:

Διαβάστε περισσότερα

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Βάσεις εδοµένων Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης v.vescoukis@cs.ntua.gr ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ Συστήµατα ιαχείρισης Βάσεων

Διαβάστε περισσότερα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Θέµα 1 ο Α. Να απαντήσετε τις παρακάτω ερωτήσεις τύπου Σωστό Λάθος (Σ Λ) 1. Σκοπός της συγχώνευσης 2 ή περισσοτέρων ταξινοµηµένων πινάκων είναι η δηµιουργία

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν Επαναληπτικές δοµές Η λογική των επαναληπτικών διαδικασιών εφαρµόζεται όπου µία ακολουθία εντολών εφαρµόζεται σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό. Όταν ψάχνουµε θέση για να παρκάρουµε κοντά

Διαβάστε περισσότερα

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Υλοποίηση στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Υλοποίηση στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Η Υλοποίηση στην Ενοποιηµένη ιαδικασία ρ. Πάνος Φιτσιλής Περιεχόµενα Πρωτοτυποποίηση Προγραµµατισµός υλοποίησης Ανάπτυξη συστήµατος Μοναδιαίος έλεγχος Ολοκλήρωση 2 3 Η υλοποίηση

Διαβάστε περισσότερα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

Διαβάστε περισσότερα

επιµέλεια Θοδωρής Πιερράτος

επιµέλεια Θοδωρής Πιερράτος Ερωτήσεις Σωστό Λάθος 1. Οι διαστάσεις ενός πίνακα δεν µπορούν να µεταβάλλονται κατά την εκτέλση ενός αλγόριθµου. 2. Ο πίνακας είναι στατική δοµή δεδοµένων. 3. Ένας πίνακας δυο στηλών µπορεί να περιέχει

Διαβάστε περισσότερα

Εισαγωγή στη Σχεδίαση Λογισμικού

Εισαγωγή στη Σχεδίαση Λογισμικού Εισαγωγή στη Σχεδίαση Λογισμικού περιεχόμενα παρουσίασης Τι είναι η σχεδίαση λογισμικού Έννοιες σχεδίασης Δραστηριότητες σχεδίασης Σχεδίαση και υποδείγματα ανάπτυξης λογισμικού σχεδίαση Η σχεδίαση του

Διαβάστε περισσότερα

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

Αρχιτεκτονική Λογισμικού Αρχιτεκτονική Λογισμικού περιεχόμενα παρουσίασης Τι είναι η αρχιτεκτονική λογισμικού Αρχιτεκτονική και απαιτήσεις Σενάρια ποιότητας Βήματα αρχιτεκτονικής σχεδίασης Αρχιτεκτονικά πρότυπα Διαστρωματωμένη

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Προγραµµατισµός Η/Υ Ο προγραµµατισµός είναι η διατύπωση του αλγορίθµου σε µορφή κατανοητή από τον Η/Υ ώστε να τον εκτελέσει («τρέξει» όπως λέµε στην ορολογία της

Διαβάστε περισσότερα

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή Γ Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή Η χρήση των ηλεκτρονικών υπολογιστών στο τεχνικό σχέδιο, και ιδιαίτερα στο αρχιτεκτονικό, αποτελεί πλέον μία πραγματικότητα σε διαρκή εξέλιξη, που επηρεάζει

Διαβάστε περισσότερα

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας 4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας 4.1.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας από βάση δεδομένων Όταν εκκινήσουμε τον Discoverer εμφανίζεται στην οθόνη μας το παράθυρο διαλόγου του βοηθητικού προγράμματος

Διαβάστε περισσότερα

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

Διαβάστε περισσότερα

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου Ορισµοί κεφαλαίου Αλγόριθµος είναι µια πεπερασµένη σειρά ενεργειών, αυστηρά καθορισµένων και εκτελέσιµων σε πεπερασµένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήµατος. Σηµαντικά σηµεία κεφαλαίου Κριτήρια

Διαβάστε περισσότερα

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στην Access... 9 Γνωριμία με την Access... 12 Δημιουργία βάσης δεδομένων... 22 Άνοιγμα και κλείσιμο βάσης δεδομένων... 24 Ερωτήσεις ανακεφαλαίωσης... 25 Πρακτική εξάσκηση...

Διαβάστε περισσότερα

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΜΑΤΙΚΗΣ Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού Μάρα Νικολαϊδου Δραστηριότητες Διαδικασιών Παραγωγής Λογισµικού Καθορισµός απαιτήσεων και εξαγωγή προδιαγραφών

Διαβάστε περισσότερα

ΜΕΡΟΣ Ι: ΓΕΩΓΡΑΦΙΚΑ Ε ΟΜΕΝΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ Η ΦΥΣΗ ΤΩΝ ΓΕΩΓΡΑΦΙΚΩΝ Ε ΟΜΕΝΩΝ...

ΜΕΡΟΣ Ι: ΓΕΩΓΡΑΦΙΚΑ Ε ΟΜΕΝΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ Η ΦΥΣΗ ΤΩΝ ΓΕΩΓΡΑΦΙΚΩΝ Ε ΟΜΕΝΩΝ... ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΜΕΡΟΣ Ι: ΓΕΩΓΡΑΦΙΚΑ Ε ΟΜΕΝΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ...1 1. Η ΦΥΣΗ ΤΩΝ ΓΕΩΓΡΑΦΙΚΩΝ Ε ΟΜΕΝΩΝ...3 Κατηγορίες των Γεωγραφικών εδοµένων...3 Γεωγραφικές οντότητες...3 ιαστάσεις

Διαβάστε περισσότερα

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

Διαβάστε περισσότερα

Σηµειώσεις στις σειρές

Σηµειώσεις στις σειρές . ΟΡΙΣΜΟΙ - ΓΕΝΙΚΕΣ ΕΝΝΟΙΕΣ Σηµειώσεις στις σειρές Στην Ενότητα αυτή παρουσιάζουµε τις βασικές-απαραίτητες έννοιες για την µελέτη των σειρών πραγµατικών αριθµών και των εφαρµογών τους. Έτσι, δίνονται συστηµατικά

Διαβάστε περισσότερα

Εκπαιδευτική Μονάδα 10.2: Εργαλεία χρονοπρογραμματισμού των δραστηριοτήτων.

Εκπαιδευτική Μονάδα 10.2: Εργαλεία χρονοπρογραμματισμού των δραστηριοτήτων. Εκπαιδευτική Μονάδα 10.2: Εργαλεία χρονοπρογραμματισμού των δραστηριοτήτων. Στην προηγούμενη Εκπαιδευτική Μονάδα παρουσιάστηκαν ορισμένα χρήσιμα παραδείγματα διαδεδομένων εργαλείων για τον χρονοπρογραμματισμό

Διαβάστε περισσότερα

Μηχανική ΙI. Λογισµός των µεταβολών. Τµήµα Π. Ιωάννου & Θ. Αποστολάτου 2/2000

Μηχανική ΙI. Λογισµός των µεταβολών. Τµήµα Π. Ιωάννου & Θ. Αποστολάτου 2/2000 Τµήµα Π Ιωάννου & Θ Αποστολάτου 2/2000 Μηχανική ΙI Λογισµός των µεταβολών Προκειµένου να αντιµετωπίσουµε προβλήµατα µεγιστοποίησης (ελαχιστοποίησης) όπως τα παραπάνω, όπου η ποσότητα που θέλουµε να µεγιστοποιήσουµε

Διαβάστε περισσότερα

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Ερωτήσεις Σωστό - Λάθος 1. Ο αλγόριθµος πρέπει να τερµατίζεται µετά από εκτέλεση πεπερασµένου αριθµού εντολών. 2. Η είσοδος σε έναν αλγόριθµο µπορεί να είναι έξοδος σε έναν άλλο αλγόριθµο. 3. Ένας αλγόριθµος

Διαβάστε περισσότερα

α) Κύκλος από δύο δοσµένα σηµεία Α, Β. Το ένα από τα δύο σηµεία ορίζεται ως κέντρο αν το επιλέξουµε πρώτο. β) Κύκλος από δοσµένο σηµείο και δοσµένο ευ

α) Κύκλος από δύο δοσµένα σηµεία Α, Β. Το ένα από τα δύο σηµεία ορίζεται ως κέντρο αν το επιλέξουµε πρώτο. β) Κύκλος από δοσµένο σηµείο και δοσµένο ευ ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΟΓΙΣΜΙΚΟ SKETCHPAD ΜΕΡΟΣ Α Μιλώντας για ένα λογισµικό δυναµικής γεωµετρίας καλό θα ήταν να διακρίνουµε αρχικά 3 οµάδες εργαλείων µε τα οποία µπορούµε να εργαστούµε µέσα στο συγκεκριµένο περιβάλλον.

Διαβάστε περισσότερα

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

Διαβάστε περισσότερα

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram. Εισαγωγή αρχείων δεδοµένων 1. Η εισαγωγή αρχείων δεδοµένων στο LaVIEW γίνεται στο Block Diagram µε την εντολή Read From Spreadsheet File. 2. Εισάγουµε την εντολή Read From Spreadsheet File στο Block Diagram

Διαβάστε περισσότερα

ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΙ ΠΑΤΡΑΣ ΤΕΙ ΠΑΤΡΑΣ ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT

ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΙ ΠΑΤΡΑΣ ΤΕΙ ΠΑΤΡΑΣ ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Α Κ Α Η Μ Α Ι Κ Ο Ε Τ Ο Σ 2 0 1 1-2 0 1 2 ΣΗΜΕΙΩΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΕΠΙΧΕΙΡΗΣΙΑΚΏΝ ΠΑΙΓΝΙΩΝ- ΠΡΟΓΡΑΜΜΑ GAMBIT Ο συγκεκριµένος οδηγός για το πρόγραµµα

Διαβάστε περισσότερα

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση: Σχεδίαση Κλάσεων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.11.19 Εισαγωγή 2 ιαρκής συντήρηση και επέκταση λογισµικού Οι εταιρίες συνήθως συντηρούν, επεκτείνουν

Διαβάστε περισσότερα

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Η και ο στην Ενοποιηµένη ιαδικασία ρ. Πάνος Φιτσιλής Περιεχόµενα Γενικές αρχές ανάλυσης και σχεδιασµού Τα βήµατα της ανάλυσης και του σχεδιασµού Συµπεράσµατα 2 3 Η ανάλυση

Διαβάστε περισσότερα

3. Σηµειώσεις Access. # Εισαγωγή ψηφίου ή κενού διαστήµατος. Επιτρέπονται τα ση-

3. Σηµειώσεις Access. # Εισαγωγή ψηφίου ή κενού διαστήµατος. Επιτρέπονται τα ση- Μάθηµα 3 Προχωρηµένες ιδιότητες πεδίων Μάσκες εισαγωγής Οι ιδιότητες Μορφή και Μάσκα εισαγωγής περιγράφονται µαζί γιατί έχουν κοινά χαρακτηριστικά που αφορούν την εµφάνιση. Με την ιδιότητα Μορφή καθορίζουµε

Διαβάστε περισσότερα

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

Διαβάστε περισσότερα

Εισαγωγή στις Βάσεις εδοµένων και την Access

Εισαγωγή στις Βάσεις εδοµένων και την Access Μάθηµα 1 Εισαγωγή στις Βάσεις εδοµένων και την Access Τι είναι οι βάσεις δεδοµένων Μία βάση δεδοµένων (Β..) είναι µία οργανωµένη συλλογή πληροφοριών, οι οποίες είναι αποθηκευµένες σε κάποιο αποθηκευτικό

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εισαγωγή στην Τεχνολογία Λογισµικού

Εισαγωγή στην Τεχνολογία Λογισµικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Μάθηµα "Τεχνολογία Λογισµικού", 9ο εξάµηνο Εισαγωγή στην Τεχνολογία Λογισµικού Νίκος Παπασπύρου Γιάννης Μαΐστρος Βασίλης

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος

Διαβάστε περισσότερα

Εισαγωγή στην Τεχνολογία Λογισµικού

Εισαγωγή στην Τεχνολογία Λογισµικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Μάθηµα "Τεχνολογία Λογισµικού", 9ο εξάµηνο Τι είναι Λογισµικό; Προγράµµατα ηλεκτρονικού υπολογιστή οµές δεδοµένων µε µόνιµη

Διαβάστε περισσότερα

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη. 1ΗΣ ΣΕΛΙΔΑΣ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 2015 Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΣΥΝΟΛΟ

Διαβάστε περισσότερα

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο

Διαβάστε περισσότερα

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Εισαγωγή στις έννοιες Αλγόριθµοι και Πολυπλοκότητα, Οργάνωση Δεδοµένων και Δοµές Δεδοµένων Χρήσιµοι µαθηµατικοί

Διαβάστε περισσότερα

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Σύντοµες Σηµειώσεις. Γιώργος Μανής

Εισαγωγή στον Προγραµµατισµό. Σύντοµες Σηµειώσεις. Γιώργος Μανής Εισαγωγή στον Προγραµµατισµό Σύντοµες Σηµειώσεις Γιώργος Μανής Νοέµβριος 2012 Αλγόριθµοι και Λογικά ιαγράµµατα Αλγόριθµος λέγεται µία πεπερασµένη διαδικασία καλά ορισµένων ϐηµάτων µου ακολουθείται για

Διαβάστε περισσότερα