Ε ΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

Download "Ε ΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ"

Transcript

1 Ε ΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΕ ΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ ΠΛΗ24 ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΙΙ Πρότυπα Σχεδίασης Πάνος Φιτσιλής 2004

2 We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil. Donald Knuth 2

3 Πίνακας Περιεχοµένων 1 ΕΙΣΑΓΩΓΗ Η ΤΑΞΙΝΟΜΗΣΗ ΤΩΝ ΠΡΟΤΥΠΩΝ ΤΑ ΠΡΟΤΥΠΑ GOF ΗΜΙΟΥΡΓΙΚΑ ΠΡΟΤΥΠΑ ΟΜΙΚΑ ΠΡΟΤΥΠΑ ΠΡΟΤΥΠΑ ΣΥΜΠΕΡΙΦΟΡΑΣ Η ΠΕΡΙΓΡΑΦΗ ΕΝΟΣ ΠΡΟΤΥΠΟΥ ΤΑ ΠΟΙΟΤΙΚΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΕΝΟΣ ΠΡΟΤΥΠΟΥ ΣΥΜΠΕΡΑΣΜΑΤΑ ΒΙΒΛΙΟΓΡΑΦΙΑ Πίνακας Εικόνων Εικόνα 1: Το πρότυπο Factory...12 Εικόνα 2: Το πρότυπο Factory Method...13 Εικόνα 3: Το πρότυπο Singleton...16 Εικόνα 4: Το πρότυπο Adapter...16 Εικόνα 5: Το πρότυπο Façade...19 Εικόνα 6: Το πρότυπο Proxy...20 Εικόνα 7: Chain of Responsibility...21 Εικόνα 8: Το πρότυπο Command...22 Εικόνα 9: Το πρότυπο Iterator...22 Εικόνα 10: Το πρότυπο memento...24 Εικόνα 11: Το πρότυπο Template Method

4 1 Εισαγωγή Η λειτουργία του λογισµικού σε αντικειµενοστρεφή περιβάλλοντα βασίζεται στη συνεργασία των αντικειµένων. Από αυτή την συνεργασία προκύπτει η λειτουργία του συστήµατος. Καθώς αναπτύσσουµε συστήµατα συχνά βρισκόµαστε αντιµέτωποι µε προβλήµατα που έχουµε ήδη συναντήσει και που έχουµε ήδη δει (déjà vu). Αυτά τα επαναλαµβανόµενα προβλήµατα µαζί µε τις επαναχρησιµοποιούµενες λύσεις τους ονοµάζονται πρότυπα σχεδίασης (design patterns). Στο άρθρο αυτό, παρουσιάζουµε τα βασικά στοιχεία που είναι απαραίτητα να γνωρίζουµε για την κατανόηση και χρήση των προτύπων σχεδίασης. Σκοπός του άρθρου δεν είναι να εξαντλήσει το θέµα των προτύπων σχεδίασης αλλά να παρουσιάσει τις βασικές έννοιες που χρησιµοποιούνται στην περιοχή αυτή, δίνοντας ερεθίσµατα για παραπέρα µελέτη. Μπορούµε να πούµε ότι ένα πρότυπο σχεδίασης είναι ένας έξυπνος και οξυδερκής τρόπος επίλυσης µιας ειδικής κατηγορίας προβληµάτων. Η λύση αυτή προκύπτει από την επίλυση του προβλήµατος από ένα αριθµό διαφορετικών ατόµων οι οποίοι και έχουν αντιµετωπίσει το ίδιο πρόβληµα από διάφορες οπτικές γωνίες και σε διάφορες περιπτώσεις. Το πρότυπο σχεδίασης είναι ανάµεσα στο σύνολο των υπαρχόντων λύσεων, η γενικότερη, η πληρέστερη και η πιο εύκαµπτη λύση. Η βασική ιδέα των προτύπων σχεδίασης ανήκει στον αρχιτέκτονα Christopher Alexander, ο οποίος στο τέλος της δεκαετίας του 70 έγραψε δύο βιβλία µε τίτλο «Α Pattern Language» και «Α timeless way of building» όπου περιγράφεται η ιδέα των προτύπων σχεδίασης και δίνονται παραδείγµατα. Ο Alexander χρησιµοποίησε πρότυπα για να σχεδιάσει κτήρια και πόλεις. Τα πρότυπά του έχουν να κάνουν µε κήπους, δρόµους, εισόδους κτηρίων κ.λπ. Η ιδέα των προτύπων σχεδίασης για την κατασκευή λογισµικού άρχισε να χρησιµοποιείται προς το τέλος της δεκαετίας του 80 και πιο συγκεκριµένα στο διεθνές συνέδριο OOPSLA (Object Oriented Programming, Systems & Applications) του 1987 ο W. Cunningham και ο Κ. Beck παρουσίασαν ένα άρθρο µε τίτλο «Using Pattern Languages for Object-Oriented Programs» στο οποίο περιέγραψαν 5 πρότυπα που µπορούσαν να χρησιµοποιηθούν για το σχεδιασµό ενός παραθύρου στη γλώσσα Smalltalk. 4

5 Η επιστηµονική κοινότητα πολύ γρήγορα αναγνώρισε την αξία της ιδέας και πολλοί άρχισαν να προτείνουν αλλά και να γράφουν νάα πρότυπα. Το σηµείο σταθµός αυτής της διαδικασίας αποτέλεσε η έκδοση του βιβλίου «Design Paterns» των Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides το Η αποδοχή του βιβλίου υπήρξε καθολική αποδεικνύοντας τη βασική ανάγκη για αλλαγή του παραδοσιακού τρόπου κατασκευής συστηµάτων και κατασκευή λογισµικού βασισµένη σε πρότυπα και από επαναχρησιµοποιούµενα συστατικά. Η οµάδα συγγραφής ονοµάστηκε «συµµορία των τεσσάρων» (Gang of Four - GoF) και τα πρότυπα τα οποία πρότειναν αναφέρονται σαν πρότυπα GoF. Έχουν δοθεί πολλοί ορισµοί για το τι είναι πρότυπο. Ένας γενικός και γενικά αποδεκτός ορισµός είναι: Ένα πρότυπο είναι µια αφαίρεση µιας συγκεκριµένης µορφής η οποία επαναλαµβάνεται σε συγκεκριµένες µη τυχαίες καταστάσεις. Από τον παραπάνω ορισµό προκύπτει ότι τα πρότυπα προσανατολίζονται στην επίλυση προβληµάτων σχεδιασµού, της συγκεκριµένης µορφής που επαναλαµβάνεται. Η συγκεκριµένη µορφή που επαναλαµβάνεται δεν επαναλαµβάνεται µε ένα τυχαίο τρόπο αλλά αντίθετα σε ένα συγκεκριµένο περιβάλλον, σε µια συγκεκριµένη κατάσταση και κάτω από τις ίδιες συνθήκες. Έτσι το πρότυπο, η αφαίρεση της συγκεκριµένης µορφής, δεν προτείνει απλά και µόνο µια λύση αλλά ταυτόχρονα ισορροπεί ανάµεσα στους συγκρουόµενους περιορισµούς της δεδοµένης κατάστασης. Το κάθε πρότυπο έχει ένα όνοµα, το οποίο εξυπηρετεί ως εννοιολογική λαβή για να διευκολύνει τη συζήτηση τη σχετική µε το πρότυπο και τη γνώση που αυτό αντιπροσωπεύει. Ένας πιο χρηστικός ορισµός του προτύπου είναι ο παρακάτω: Πρότυπο είναι ένα ονοµασµένο ψήγµα διδακτικής πληροφορίας που κελυφοποιεί τη βασική δοµή και την αναγκαία γνώση-εµπειρία µιας επιτυχηµένης οικογένειας δοκιµασµένων λύσεων σε επαναλαµβανόµενα προβλήµατα του ιδίου τύπου, που προκύπτουν σε ένα συγκεκριµένο χώρο που υπόκειται σε γνωστούς περιορισµούς και αλληλοσυγκρουόµενες δυνάµεις. Το πρότυπο είναι ένας τρι-µερής κανόνας που εκφράζει τη σχέση µεταξύ του χώρου αναφοράς, τις αλληλεπιδρούσες δυνάµεις και το σχηµατισµό λογισµικού που επιτρέπει 5

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

7 µια λύση αποτελεί πρότυπο πρέπει να εµφανίζεται τουλάχιστον σε τρεις διαφορετικές περιπτώσεις συστηµάτων και να έχει επαληθευτεί από ανεξάρτητους παρατηρητές. Η τεκµηρίωση ενός προτύπου είναι εξαιρετικά δύσκολη και σηµαντική εργασία. Ένα καλό πρότυπο πρέπει να ικανοποιεί τα παρακάτω χαρακτηριστικά: Λύνει το πρόβληµα: Ένα πρότυπο οφείλει να παρουσιάζει τη λύση του προβλήµατος και όχι µια γενική προσέγγιση ή µια στρατηγική. Βασίζεται σε δοκιµασµένες έννοιες: Ένα πρότυπο πρέπει να βασίζεται σε δοκιµασµένες λύσεις και όχι σε νέες µη δοκιµασµένες θεωρίες. Η λύση δεν είναι προφανής: Μια τετριµµένη λύση σε ένα απλό πρόβληµα δεν έχει αξία µια και ο καθένας µπορεί να την παράγει εύκολα και γρήγορα. Αντίθετα µια σύνθετη λύση απαιτεί πολύ χρόνο και σκέψη και προφανώς έχει µεγάλη αξία. Περιγράφει σχέσεις: Τα πρότυπα δεν είναι απλές περιγραφές κοµµατιών κώδικα, αλλά αντίθετα περιγράφουν βαθύτερους µηχανισµούς και σχέσεις. Τα πρότυπα λαµβάνουν υπόψη την ανθρώπινη διάσταση: Στόχος ενός προτύπου είναι να βελτιώσει την ποιότητα του συστήµατος, που έχει ως συνέπεια τη βελτίωση της ποιότητας και της χρηστικότητας που απολαµβάνουν οι άνθρωποι. Προφανώς δεν ισχύει το αντίθετο, δηλαδή αν µια λύση δεν είναι πρότυπο δεν είναι απαραίτητα και κακή λύση. Υπάρχουν πολλές περιπτώσεις εξαιρετικών λύσεων οι οποίες δεν αποτελούν πρότυπα για το λόγο ότι δεν ισχύει ο κανόνας της επανάληψης. 7

8 2 Η ταξινόµηση των προτύπων Η εισαγωγή της ιδέας των προτύπων δηµιούργησε ένα κύµα παραγωγής ανοµοιογενών προτύπων, άλλα εκ των οποίων αναφέρονταν στην υλοποίηση ενώ άλλα αναφέρονταν στον σχεδιασµό. Έτσι πολύ γρήγορα δηµιουργήθηκε η ανάγκη της ταξινόµησης αυτών ανάλογα µε το είδος και το επίπεδο της λύσης που πρότειναν. Σύµφωνα µε την προσέγγιση των Buschmann και λοιπών στο βιβλίο Pattern-Oriented Software Architecture (POSA) ορίζονται τρία είδη προτύπων ως ακολούθως: Αρχιτεκτονικά Πρότυπα (Architectural Patterns). Ένα αρχιτεκτονικό πρότυπο εκφράζει τη δοµική οργάνωση ενός συστήµατος λογισµικού. Για παράδειγµα προσδιορίζει τα υποσυστήµατα, προδιαγράφει τις υπευθυνότητές τους, τους κανόνες που διέπουν την οργάνωσή τους και τις σχέσεις τους. Πρότυπα σχεδιασµού (Design Patterns). Ένα πρότυπο σχεδιασµού είναι ένας τρόπος περιγραφής ενός υποσυστήµατος ή των συστατικών ενός συστήµατος λογισµικού. Περιγράφουν συνηθισµένες επαναλαµβανόµενες δοµές επίλυσης γενικών προβληµάτων σχεδιασµού σε ένα συγκεκριµένο χώρο εφαρµογής. Ιδιωµατισµοί (Idioms). Ένας ιδιωµατισµός είναι ένα πρότυπο χαµηλού επιπέδου που εξειδικεύεται από µια γλώσσα προγραµµατισµού. Ένας ιδιωµατισµός περιγράφει την υλοποίηση µιας συγκεκριµένης λειτουργίας του συστατικού καθώς και τη σχέση του µε άλλες λειτουργίες του συστατικού σε µια γλώσσα προγραµµατισµού. Η διαφορά µεταξύ αυτών των τριών ειδών προτύπων είναι το επίπεδο αφαίρεσης που υλοποιούν και της λεπτοµέρειας που προδιαγράφουν. Τα αρχιτεκτονικά πρότυπα περιγράφουν υψηλού επιπέδου στρατηγικές που αφορούν τα µεγάλα συστατικά και τις γενικές ιδιότητες και µηχανισµούς ενός συστήµατος. Η εφαρµογή τους έχει µεγάλη επιρροή στη γενική µορφή και οργάνωση του συστήµατος. Τα πρότυπα σχεδιασµού είναι µεσαίου µεγέθους και προδιαγράφουν τη δοµή και τη συµπεριφορά των οντοτήτων του συστήµατος και των σχέσεών τους. εν επηρεάζουν τη γενική δοµή του συστήµατος, αλλά αντ' αυτού καθορίζουν τις µικρο-αρχιτεκτονικές των υποσυστηµάτων και των συστατικών. Τέλος οι ιδιωµατισµοί, είναι πρότυπα χαµηλού επιπέδου, δεµένα µε µια γλώσσα προγραµµατισµού που περιγράφουν τον τρόπο µε τον οποίο γράφουµε τον κώδικα ή τον τρόπο µε τον οποίο υλοποιούµε συγκεκριµένα προβλήµατα. 8

9 Ένας δεύτερος τρόπος ταξινόµησης που είναι και ο επικρατέστερος είναι ανάλογος του σκοπού του προτύπου, έχει περιγραφεί από τον Gamma και λοιπούς στο βιβλίο τους Design Patterns και είναι από τους επικρατέστερους. Στο βιβλίο του, ο Gamma και οι λοιποί, περιγράφουν 23 πρότυπα τα οποία ταξινοµούνται σε τρεις κατηγορίες οι οποίες και είναι: ηµιουργικά πρότυπα Τα δηµιουργικά (creational) πρότυπα περιγράφουν τη δηµιουργία αντικειµένων και βοηθούν στο να κάνουµε το σύστηµα ανεξάρτητο του τρόπου του οποίου τα αντικείµενα δηµιουργούνται, συνθέτονται και καταστρέφονται. Τα δηµιουργικά πρότυπα αποκτούν ιδιαίτερη σηµασία κατά την εξέλιξη του συστήµατος όταν οι περισσότερες σχέσεις είναι σχέσης συναρµολόγησης και όχι κληρονοµικότητας. Αυτό συµβαίνει γιατί σε µεγάλα συστήµατα αυτό που µας ενδιαφέρει περισσότερο είναι να ορίσουµε ένα σύνολο βασικών κλάσεων, οι οποίες µπορούν να συναρµολογηθούν µε πολλούς διαφορετικούς τρόπους για τη δηµιουργία σύνθετων συµπεριφορών αντί για τον ορισµό κλάσεων µε πολύ µεγάλη πολυπλοκότητα και σύνθετη συµπεριφορά. Στην περίπτωση αυτή η δηµιουργία ενός αντικειµένου δεν είναι απλά η αρχικοποίησή του. ύο είναι τα βασικά θέµατα γύρω από τα οποία περιστρέφονται τα πρότυπα αυτής της κατηγορίας. Το πρώτο είναι, η κελυφοποίηση της γνώσης για το πια κλάση χρησιµοποιείται από το σύστηµα και δεύτερον πως δηµιουργούνται στιγµιότυπα κλάσεων. Ως αποτέλεσµα τα δηµιουργικά πρότυπα µας δίνουν µεγάλη ευελιξία στο τι δηµιουργούµε, στο ποιος το δηµιουργεί, στο πως δηµιουργείται και στο πότε δηµιουργείται Τα πρότυπα αυτής της κατηγορίας σύµφωνα µε το Gamma είναι: Abstract Factory Builder Factory Method Prototype ηµιουργεί µια διεπαφή για τη δηµιουργία διάφορων οικογενειών κλάσεων Χωρίζει την κατασκευή του αντικειµένου από την αναπαράστασή του Ορίζει µια διεπαφή για τη δηµιουργία ενός αντικειµένου αλλά αφήνει την αρχικοποίηση στις υποκλάσεις ηµιουργεί ένα πλήρως αρχικοποιηµένο πρωτότυπο αντικείµενο 9

10 έτοιµο να αντιγραφεί. Singleton Μια κλάση της οποίας µπορεί να υπάρχει µόνο ένα στιγµιότυπο. οµικά πρότυπα Τα δοµικά (structural) πρότυπα προσδιορίζουν το πως οι κλάσεις και τα αντικείµενα συναρµολογούνται σε µεγαλύτερες δοµές. Τα δοµικά πρότυπα που εστιάζονται σε κλάσεις, περιγράφουν το πώς χρησιµοποιείται η σχέση κληρονοµικότητας για να παράγουµε χρήσιµες διεπαφές. Ένα απλό παράδειγµα είναι αυτό της πολλαπλής κληρονοµικότητας που δηµιουργεί µια καινούργια κλάση βασισµένη σε δύο ή περισσότερες άλλες κλάσεις. Η παραγόµενη κλάση έχει τις ιδιότητες όλων των κλάσεωνπατέρας. Το πρακτικό αποτέλεσµα ενός τέτοιου προτύπου είναι ότι µπορούµε να συνδιάζουµε µε εύκολο τρόπο API (Application Programming Interface). Τα δοµικά πρότυπα αντικειµένων, περιγράφουν το πως από αντικείµενα συναρµολογούµε µεγαλύτερες δοµές. Τα πρότυπα αυτής της κατηγορίας σύµφωνα µε το Gamma είναι: Adapter Bridge Composite Decorator Façade Flyweight Proxy ηµιουργία κοινής διεπαφής για διαφορετικές κλάσεις ιαχωρισµός της διεπαφής από την υλοποίηση του αντικειµένου Χειρισµός δενδρικών δοµών απλών ή σύνθετων αντικειµένων Προσθέτει υπευθυνότητες σε ένα αντικείµενο µε δυναµικό τρόπο Μια κλάση που αντιπροσωπεύει ένα υποσύστηµα Είναι ένα πρότυπο για να βελτιστοποιήσουµε το µοίρασµα των πόρων σε περιπτώσεις που χρειαζόµαστε µεγάλο αριθµό αντικειµένων Ένα αντικείµενο που αντιπροσωπεύει κάποιο άλλο Πρότυπα συµπεριφοράς 10

11 Τα πρότυπα συµπεριφοράς (Behavioral): Περιέχουν αντικείµενα που χειρίζονται συγκεκριµένες ενέργειες µέσα στο σύστηµα. Τα πρότυπα αυτά κελυφοποιούν διαδικασίες όπως µεταγλώττιση κειµένου, εκτέλεση µια αίτησης, µετακίνηση (iteration) µέσα σε µια ακολουθία (sequence), υλοποίηση ενός αλγορίθµου. Τα πρότυπα αυτής της κατηγορίας σύµφωνα µε το Gamma είναι: Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor Πρότυπο για το πέρασµα µιας αίτησης από ένα αντικείµενο σε ένα σύνολο αντικειµένων Κελυφοποίηση µιας αίτησης εντολής σε ένα αντικείµενο Η αναπαράσταση µιας γλώσσας σε ένα πρόγραµµα Πρότυπο που διατρέχει και προσπελαύνει µια λίστα αντικειµένων Πρότυπο που απλοποιεί την επικοινωνία µεταξύ αντικειµένων Καταγράφει την εσωτερική κατάσταση ενός αντικειµένου και το ανακατασκευάζει Πρότυπο που ειδοποιεί ένα σύνολο αντικειµένων για µια αλλαγή Αλλάζει τη συµπεριφορά ενός αντικειµένου όταν αλλάξει η κατάσταση του αντικειµένου. Ουσιαστικά αλλάζει την κλάση του αντικειµένου. Ορίζει οικογένειες αλγορίθµων και τις κελυφοποιεί σε κλάσεις Ορίζει το σκελετό ενός αλγορίθµου αφήνοντας τον ορισµό ορισµένων βηµάτων στις υποκλάσεις. Επιτρέπει τον ορισµό καινούργιων µεθόδων σε µια κλάση χωρίς να αλλάξει την κλάση 11

12 3 Τα πρότυπα GoF 3.1 ηµιουργικά πρότυπα Το πρότυπο Abstract Factory. Το πρότυπο αυτό παρέχει µια διεπαφή για τη δηµιουργία διάφορων οικογενειών κλάσεων ή συσχετιζόµενων κλάσεων χωρίς να προσδιορίζουµε ποια κλάση ακριβώς. Ένα παράδειγµα για την κατανόηση του προτύπου είναι το ακόλουθο: σ ένα εργοστάσιο κατασκευής αυτοκινήτων υπάρχουν πρέσες, οι οποίες µε την κατάλληλη ρύθµιση µπορούν να παράγουν αριστερές και δεξιές πόρτες για διάφορους τύπους οχηµάτων. Η πρέσα ακολουθεί το πρότυπο abstract factory. Το πρότυπο αυτό είναι εύκολα αναγνωρίσιµο και πολύ συνηθισµένο. Στο παρακάτω παράδειγµα τo πρότυπο factory χρησιµοποιείται για την διαχείριση του κύκλου ζωής ενός αντικειµένου (δηµιουργία, συντήρηση) και πιο συγκεκριµένα για τη δηµιουργία µια σύνδεσης µε τη βάση δεδοµένων. Εικόνα 1: Το πρότυπο Factory Το πρότυπο Builder. Το πρότυπο Builder διαχωρίζει την κατασκευή ενός αντικειµένου από την αναπαράστασή του, έτσι ώστε η κατασκευή του να µπορεί να δηµιουργήσει διαφορετικές αναπαραστάσεις. Το πρότυπο χρησιµοποιείται για την επίλυση προβληµάτων της µορφής: Έστω ότι θέλουµε να κατασκευάσουµε έναν υπολογιστή. Η κατασκευή του υπολογιστή γίνεται σε στάδια. Επιπλέον ο πρώτος υπολογιστή που θέλουµε να κατασκευάσουµε έχει 512ΜΒ µνήµη και 2GHz CPU, ενώ ο δεύτερος έχει 256ΜΒ µνήµη και 3GHz CPU. Το πρότυπο Builder είναι αυτό που περιγράφει τη διαδικασία κατασκευής, ενώ το πρότυπο Abstract Factory περιγράφει τα συστατικά του τελiκού προϊόντος. 12

13 Το πρότυπο Factory Method Ορίζει µια διεπαφή για τη δηµιουργία ενός αντικειµένου αλλά αφήνει την αρχικοποίηση του αντικειµένου στις υποκλάσεις. Το πρότυπο αυτό είναι γνωστό και µε το όνοµα virtual constructor. Χρησιµοποιώντας το ίδιο παράδειγµα της συναρµολόγησης ενός υπολογιστή, το πρότυπο Factory Method χρησιµοποιείται για να παράγει µια µέθοδο η οποία θα µας επιτρέπει να διαµορφώνουµε κάθε φορά µε διαφορετικό τρόπο τα συστατικά του υπολογιστή. Το πρότυπο Abstract Factory συνήθως υλοποιείται από το πρότυπο Factory Method. Για να γίνει κατανοητό το πρότυπο Factory Method καθώς και γενικότερα η χρήση των προτύπων παρουσιάζουµε ένα αναλυτικό παράδειγµα. X Factory getclass X XY XZ abc Εικόνα 2: Το πρότυπο Factory Method Στην παραπάνω εικόνα, η κλάση x είναι η κλάση πατέρας ενώ οι κλάσεις xy και xz είναι κλάσεις παιδιά.. Η κλάση Factory είναι η κλάση που αποφασίζει ποια από τις κλάσεις παιδιά να επιστρέψει σε συνάρτηση µε τα δεδοµένα εισόδου που παρέχει ο χρήστης. Η µέθοδος getclass είναι αυτή που περνάει στην κλάση Factory τα δεδοµένα, to string abc, και επιστρέφει στον προγραµµατιστή ένα στιγµιότυπο της κλάσης x. Ποιος είναι ο τύπος (η κλάση) του στιγµιότυπου που επιστρέφεται δεν έχει σηµασία για τον προγραµµατιστή, µια και όλα έχουν τις ίδιες µεθόδους και έχουν µόνο διαφορετικές υλοποιήσεις. Η απόφαση για το πιο στιγµιότυπο να επιστρέψει η µέθοδος getclass εξαρτάται αποκλειστικά από την κλάση factory. Ας δούµε ένα µικρό και απλό παράδειγµα της χρήσης της κλάσης Factory. Υποθέτουµε ότι η εφαρµογή που θέλουµε να φτιάξουµε περιέχει µια φόρµα η οποία επιτρέπει στο χρήστη να εισάγει είτε «όνοµα επίθετο» είτε «επίθετο, όνοµα». Θεωρούµε 13

14 ότι αν δεν υπάρχει κόµµα µεταξύ των ονοµάτων αναφερόµαστε στον πρώτο τύπο ενώ αν υπάρχει αναφερόµαστε στο δεύτερο τύπο. Η υλοποίηση της παραπάνω λογικής είναι εξαιρετικά απλή µε τη χρήση µιας εντολής if µέσα σε µια µέθοδο µιας κλάσης, αλλά για χάρη του παραδείγµατος θα δείξουµε την υλοποίηση της παραπάνω λογικής µε τη χρήση του προτύπου factory. Ξεκινάµε µε τον ορισµό της κλάσης πατέρας η οποία παίρνει ως όρισµα ένα String και το χωρίζει σε δύο ονόµατα: class Namer { // χωρίζει το string σε δύο ονόµατα protected String last; //αποθήκευση του επιθέτου protected String first; //αποθήκευση του µικρού ονόµατος } public String getfirst() { return first; //επιστρέφει το µικρό όνοµα } public String getlast() { return last; //επιστρέφει το επίθετο } Στην κλάση αυτή ουσιαστικά δεν κάνουµε τίποτε άλλο εκτός από την υλοποίηση των µεθόδων getfirst() και getlast(). Στις µεταβλητές last και first αποθηκεύουµε το επίθετο και το µικρό όνοµα αντίστοιχα. Λόγω του γεγονότος ότι οι παραγόµενες κλάσεις χρειάζεται να προσπελαύνουν αυτές τις µεταβλητές τις ορίζουµε ως protected. Οι δύο παραγόµενες κλάσεις είναι οι ακόλουθες: class FirstFirst extends Namer { //χωρίζει το επίθετο από το όνοµα public FirstFirst(String s) { int i = s.lastindexof(" "); //βρίσκει το πρώτο κενό if (i > 0) { //αριστερά βρίσκεται το όνοµα first = s.substring(0, i).trim(); //δεξιά είναι το επίθετο last =s.substring(i+1).trim(); } else { first = ; // εάν δεν υπάρχει κενό last = s; // τοποθέτησε όλο το string στο επίθετο } } } και class LastFirst extends Namer { //χώρισε επίθετο, όνοµα public LastFirst(String s) { int i = s.indexof(","); //βρες το κόµµα if (i > 0) { //αριστερά είναι το επίθετο last = s.substring(0, i).trim(); //δεξιά είναι το όνοµα 14

15 } } first = s.substring(i + 1).trim(); } else { last = s; // εάν δεν υπάρχει κόµµα first = ""; // βάλε το string στο όνοµα } Η κλάση factory είναι η παρακάτω class NameFactory { // Επιστρέφει ένα στιγµιότυπο από LastFirst ή FirstFirst //ανάλογα µε τον αν βρήκε κόµµα ή όχι public Namer getnamer(string entry) { int i = entry.indexof(","); //το κόµµα καθορίζει τη σειρά if (i>0) return new LastFirst(entry); else return new FirstFirst(entry); } } Επιπλέον, για τη χρήση του παραπάνω κώδικα χρειάζεται η κατασκευή ενός παραθύρου που θα δέχεται ως είσοδο το string και θα παρουσιάζει το επίθετο από το όνοµα διαχωρισµένα. Το πρότυπο Prototype ηµιουργεί ένα πλήρως αρχικοποιηµένο πρωτότυπο αντικείµενο έτοιµο να αντιγραφεί. Ένα παράδειγµα εφαρµογής που θα µπορούσε να ωφεληθεί από το πρότυπο Prototype είναι µια εφαρµογή που αποθηκεύει εικόνες σε διάφορα format. H δυνατότητα αποθήκευσης εικόνων ενός νέου format, θα ήταν πολύ εύκολο να προστεθεί στην εφαρµογή, µε τη χρήση του πρότυπου Prototype, µια και τα στιγµιότυπα των κλάσεων καθώς και η χρονική στιγµή που δηµιουργούνται, ορίζονται δυναµικά. Το πρότυπο Singleton Το πρότυπο singleton δηµιουργεί ένα και µόνο ένα στιγµιότυπο του αντικειµένου ανεξάρτητα από το πόσες φορές αυτό αρχικοποιείται. Η πιο συνηθισµένη χρήση του προτύπου Singleton είναι για τη δηµιουργία ενός εξυπηρετητή (server) όπως για παράδειγµα συµβαίνει στην περίπτωση της Java και µε την εφαρµογή της Remote Method Invocation (RMI). 15

16 Εικόνα 3: Το πρότυπο Singleton 3.2 οµικά πρότυπα Το πρότυπο Adapter Στο πρότυπο Adapter (προσαρµοστής), ένα αντικείµενο υλοποιεί τη διεπαφή που χρησιµοποιείται από τα άλλα αντικείµενα µε ενιαίο και γενικό τρόπο έτσι ώστε τα αντικείµενα που προσπελαύνουν µια συσκευή (device) ή ένα άλλο συστατικό (component) να µην χρειάζεται να γνωρίζουν την συγκεκριµένη υλοποίηση αλλά µόνο τη διεπαφή (interface) αυτής. Ένα πολύ καλό παράδειγµα του πρότυπου adapter είναι ένας οδηγός βάσης δεδοµένων όπως ένας ODBC (Open Database Connectivity) driver ή JDBC (Java Database Connectivity) driver που δίνει στις εφαρµογές ένα ανεξάρτητο τρόπο προσπέλασης της βάσης δεδοµένων είτε πρόκειται για MS-Access είτε για MS- SQL Server είτε για ORACLE. Εικόνα 4: Το πρότυπο Adapter Το πρότυπο Bridge Το πρότυπο bridge διαχωρίζει τη διεπαφή µιας κλάσης από την υλοποίηση της έτσι ώστε να µπορούν να µεταβάλλονται ανεξάρτητα. Το πρότυπο bridge µοιάζει αρκετά µε το πρότυπο adapter έχουν όµως την εξής διαφορά. Το πρότυπο adapter µετατρέπει τη διεπαφή της κλάσης από µια µορφή σε µια άλλη. Αντίθετα, το πρότυπο bridge απλά διαχωρίζει τη διεπαφή από την υλοποίηση χωρίς να τη µετασχηµατίζει. Έτσι το πρότυπο bridge χρησιµοποιείται όταν θέλουµε να κρατούµε τη διεπαφή σταθερή και να αλλάζουµε κάθε φορά την υλοποίηση. 16

17 Το πρότυπο Composite Συχνά οι προγραµµατιστές βρίσκονται αντιµέτωποι µε την περίπτωση στην οποία ένα συστατικό µπορεί να είναι ένα µεµονωµένο αντικείµενο ή µπορεί να αντιπροσωπεύει µια συλλογή των αντικειµένων. Το πρότυπο Composite είναι σχεδιασµένο για να προσαρµόζεται και στις δύο περιπτώσεις. Μπορεί να χρησιµοποιηθεί για να φτιάξουµε ιεραρχίες σύνθεσης (composition, aggregation) ή για να κατασκευάσουµε δενδρικές δοµές δεδοµένων. Συµπερασµατικά, πρότυπο Composite είναι µια συλλογή αντικειµένων, οποιαδήποτε από τα οποία µπορεί να είναι είτε ένα σύνθετο, είτε ένα απλό αντικείµενο. Επιπλέον, στην περίπτωση των δενδρικών δοµών, µερικά αντικείµενα µπορούν να είναι κόµβοι που έχουν κλαδιά ενώ άλλα µπορεί να είναι φύλλα. Το πρόβληµα που επιλύει το πρότυπο Composite είναι αυτό της ύπαρξης µόνο µιας διεπαφής για την προσπέλαση όλων των αντικειµένων που περιέχονται στο Composite είτε πρόκειται για απλά είτε για σύνθετα αντικείµενα. Επιπλέον, όπως αναφέραµε το πρότυπο Composite διακρίνει σε δενδρικές δοµές κόµβους και φύλλα. Οι κόµβοι είναι αντικείµενα στους οποίους µπορούµε να προσθέσουµε παιδιά, ενώ τα φύλλα δεν έχουν παιδία. Το πρότυπο Decorator Το πρότυπο decorator µας δίνει έναν τρόπο για να τροποποιήσουµε τη συµπεριφορά µεµονωµένων αντικειµένων χωρίς να χρειασθεί να δηµιουργήσουµε µια νέα κλάση. Υποθέστε ότι έχουµε ένα πρόγραµµα που χρησιµοποιεί πέντε αντικείµενα, τρία από τα οποία χρειάζονται ένα πρόσθετο χαρακτηριστικό γνώρισµα. Θα µπορούσαµε πολύ εύκολα να δηµιουργήσουµε µια καινούργια κλάση µε αυτό το κοινό χαρακτηριστικό, πράγµα το οποίο είναι µια σωστή και αποδεκτή λύση. Εντούτοις, εάν κάθε ένα από αυτά τα τρία αντικείµενα απαιτεί διαφορετικές τροποποιήσεις, αυτό θα σήµαινε τρεις νέες κλάσεις. Στην περίπτωση αυτή η δηµιουργία τριών νέων κλάσεων εισάγει πολυπλοκότητα στο σύστηµα η οποία δεν είναι απαραίτητη. Στην περίπτωση αυτή χρησιµοποιείται το πρότυπο decorator. Στην πράξη το πρότυπο decorator χρησιµοποιείται πολύ συχνά. Οι γραµµές εργαλείων που ενεργοποιούνται δυναµικά κατά τη διάρκεια εκτέλεσης ενός προγράµµατος είναι ίσως το πιο συνηθισµένο παράδειγµα. 17

18 Το πρότυπο Façade Συχνά, καθώς οι εφαρµογές που αναπτύσσουµε µεγαλώνουν σε µέγεθος, µεγαλώνει και η πολυπλοκότητα των δοµών και του συστήµατος γενικότερα. Επιπλέον, ο αντικειµενοστρεφής τρόπος ανάπτυξης σε συνδυασµό µε τα πρότυπα σχεδίασης οδηγεί σε εξαιρετικά µεγάλες ιεραρχίες και σε κερµατισµό της λογικής µε αποτέλεσµα να γίνεται δύσκολη έως αδύνατη η κατανόηση της λογικής του συστήµατος. Η δυσκολία αυξάνεται ακόµη πιο πολύ όταν υπάρχει µεγάλος αριθµός υποσυστηµάτων µε τα οποία το σύστηµα ανταλλάσει δεδοµένα. Το πρότυπο Façade µας επιτρέπει να απλοποιήσουµε την συνολική εικόνα παρουσιάζοντας µια διεπαφή ανά υποσύστηµα αντί να έχουµε µια διεπαφή ανά κλάση. Αυτή η απλοποίηση µπορεί σε µερικές περιπτώσεις να µειώσει την ευελιξία των ελλοχευουσών κλάσεων, αλλά συνήθως παρέχει όλη τη απαιτούµενη λειτουργικότητα εκτός εξαιρέσεων και ειδικών περιπτώσεων. Για τις εξαιρετικές αυτές περιπτώσεις όπου η διεπαφή του υποσυστήµατος δεν µπορεί να µας προσφέρει τη λειτουργικότητα που χρειαζόµαστε είναι δυνατόν να χρησιµοποιήσουµε χωρίς κανένα πρόβληµα τη λειτουργικότητα την οποία παρέχουν οι ελλοχεύουσες κλάσεις και µεθόδοι. Η εφαρµογή του πρότυπου Façade είναι απλή και πολύ συνηθισµένη στην καθηµερινή πράξη. Για παράδειγµα, η γλώσσα προγραµµατισµού Java παρέχει ένα σύνολο κλάσεων που συνδέουν την εφαρµογή µε τη βάση δεδοµένων χρησιµοποιώντας τη διεπαφή JDBC (Java Database Connectivity). Επιπλέον, χρησιµοποιώντας την ίδια διεπαφή JDBC, µπορούµε να συνδέσουµε την εφαρµογή µας µε οποιαδήποτε βάση δεδοµένων για την οποία υπάρχει διεπαφή JDBC. Σε περίπτωση που η διεπαφή JDBC, δεν παρέχει επακριβώς την λειτουργικότητα που επιθυµούµε, µια και από τη φύση της είναι γενική, µπορούµε να χρησιµοποιήσουµε την ειδικευµένη διεπαφή που παρέχει ο κατασκευαστής της βάσης δεδοµένων (native drivers). 18

19 Εικόνα 5: Το πρότυπο Façade Στην παραπάνω εικόνα το Façade είναι η Εφαρµογή ανείων. Το Façade «Εφαρµογή ανείων» γνωρίζει: ποια κλάση του υποσυστήµατος είναι υπεύθυνη να εξυπηρετήσει κάθε εξωτερική αίτηση προς το υποσύστηµα πώς να µεταβιβάσει τις αιτήσεις στο κατάλληλο αντικείµενο του υποσυστήµατος Αντίστοιχα οι κλάσεις του υποσυστήµατος γνωρίζουν πως να υλοποιήσουν τη λειτουργικότητα του υποσυστήµατος γνωρίζουν πως να χειρισθούν τη δουλειά που τους ανατίθεται από το αντικείµενο Façade δεν γνωρίζουν την ύπαρξη του Façade. Το πρότυπο Flyweight Υπάρχουν προγραµµατιστικές περιπτώσεις όπου πρέπει να δηµιουργήσουµε έναν πολύ µεγάλο αριθµό αντικειµένων, το καθένα από τα οποία αποθηκεύει µια µικρή ποσότητα πληροφορίας και διαφέρει το ένα από το άλλο στην τιµή µιας µεταβλητής. Είναι δυνατόν να µειώσουµε το µεγάλο αυτό αριθµό αντικειµένων µετακινώντας τις µεταβλητές αυτές εκτός του κυρίως σώµατος της κλάσεως και να περνάµε τις µεταβλητές αυτές ως παραµέτρους. 19

20 Το πρότυπο flyweight δίνει τη λύση για το χειρισµό τέτοιων περιπτώσεων. Το πρότυπο διαχωρίζει τις µεταβλητές του αντικειµένου σε εγγενείς και σε εξωγενείς. Οι εγγενείς µεταβλητές είναι αυτές που συνδέονται άµεσα µε το αντικείµενο, του προσδίδουν ταυτότητα και παραµένουν στο εσωτερικό του αντικειµένου, ενώ οι εξωγενείς µεταβλητές µεταφέρονται εκτός του αντικειµένου και τις περνάµε στο αντικείµενο ως παραµέτρους. Το πρότυπο Flyweight χρησιµοποιείται πολύ συχνά για το χειρισµό των χαρακτήρων σε ένα επεξεργαστή κειµένου, ή το χειρισµό των ψηφίδων µιας εικόνας κ.λπ. Το πρότυπο Proxy Ένα πρότυπο proxy (πληρεξούσιο) υλοποιεί τη χρήση πληρεξούσιων αντικειµένων κατά τη διάρκεια µιας αλληλεπίδρασης. Συνήθως ένα πληρεξούσιο αντικείµενο ενεργεί ως υποκατάστατο ενός πραγµατικού αντικειµένου. Τα πληρεξούσια αντικείµενα χρησιµοποιούνται σε πρωτόκολλα αλληλεπίδρασης µε φυσικά αποµακρυσµένα αντικείµενα. Για παράδειγµα, όταν ένα αντικείµενο πρέπει να αλληλεπιδράσει µε ένα αποµακρυσµένο αντικείµενο, µέσω ενός δικτύου (internet), ο προτιµηµένος τρόπος είναι να κελυφοποιήσουµε και να κρύψουµε το µηχανισµό αλληλεπίδρασης σ ένα πληρεξούσιο αντικείµενο, το οποίο µεσολαβεί στην επικοινωνία µεταξύ του αρχικού αντικειµένου και του αποµακρυσµένου αντικειµένου. Εικόνα 6: Το πρότυπο Proxy 3.3 Πρότυπα συµπεριφοράς Το πρότυπο Chain of Responsibility Το πρότυπο Chain of Responsibility (αλυσίδα ευθύνης) επιτρέπει σε κλάσεις να προσπαθήσουν να χειρισθούν ένα αίτηµα, χωρίς αυτές να γνωρίζουν την ύπαρξη των άλλων κλάσεων του συστήµατος ούτε και τη λειτουργικότητα αυτών. Το πρότυπο παρέχει µια χαλαρή σύζευξη µεταξύ των κλάσεων, µε µόνο κοινό στοιχείο το αίτηµα προς εξυπηρέτηση το οποίο περνά από την µια κλάση στην άλλη. 20

21 Ένα παράδειγµα εφαρµογής του πρότυπου Chain of Responsibility είναι ένα σύστηµα βοήθειας. Σε ένα τέτοιο σύστηµα όταν ο χρήστης ζητά βοήθεια πατώντας στο κατάλληλο σηµείο της οθόνης. Αν υπάρχει βοήθεια διαθέσιµη σχετική µε αυτό το θέµα τότε παρουσιάζεται. Σε αντίθετη περίπτωση το σύστηµα ψάχνει για σχετικό θέµα βοήθειας σε υψηλότερο επίπεδο µέχρι να εξαντλήσει όλα τα δυνατά επίπεδα. Εάν δεν υπάρχει σχετικό θέµα βοήθειας, το µήνυµα χάνεται και δεν επιδεικνύεται καµία πληροφορία. Στην παρακάτω εικόνα παρουσιάζεται ένα τέτοιο σενάριο όπου ο χρήστης ζητά βοήθεια για το «ΟΚ». Αν δεν βρεθεί βοήθεια για το συγκεκριµένο διάλογο τότε ψάχνουµε για βοήθεια στην κατηγορία «Button Help» κ.λπ. Εικόνα 7: Chain of Responsibility Το πρότυπο Command Το πρότυπο Command (εντολή) χρησιµοποιείται συνήθως για τη συλλογή των αιτηµάτων (requests) από τα αντικείµενα πελάτες, τη συσκευασία των αιτηµάτων σε ένα νέο αντικείµενο µε σκοπό την επεξεργασία τους και την τελική αποστολή των αιτηµάτων στο αντικείµενο-εξυπηρετητής. Το πρότυπο Command επιτρέπει τη δηµιουργία διεπαφών από το αντικείµενο που κάνει την επεξεργασία. 21

22 Εικόνα 8: Το πρότυπο Command Το πρότυπο Interpreter Σε µερικά συστήµατα είναι απαραίτητη η ύπαρξη µιας γλώσσας για την περιγραφή των διαδικασιών προς εκτέλεση. Το πρότυπο Interpreter περιγράφει τον ορισµό της γραµµατικής της γλώσσας καθώς και τη µεταγλώττιση και εκτέλεση των εντολών της. Το πρότυπο Iterator Το πρότυπο Iterator είναι ένας απλός µηχανισµός για να διατρέξουµε και να προσπελάσουµε µια λίστα αντικειµένων. Το πρότυπο Iterator κελυφοποιεί την εσωτερική υλοποίηση της λίστας ενώ ταυτόχρονα προσφέρει ένα στάνταρτ µηχανισµό για να διατρέχουµε τη λίστα. Εικόνα 9: Το πρότυπο Iterator Το πρότυπο Mediator Ένα πρόγραµµα αποτελείται από ένα σύνολο κλάσεων, οι οποίες µοιράζονται την λογική και τους υπολογισµούς που οφείλει να εκτελέσει το σύστηµα. Για την υλοποίηση της συµπεριφοράς που τους έχει ανατεθεί οι κλάσεις χρειάζεται να γνωρίζουν την 22

23 συµπεριφορά άλλων κλάσεων του συστήµατος. Όσο το σύστηµα γίνεται µεγαλύτερο, τόσο πιο δύσκολο και πιο πολύπλοκο γίνεται να γνωρίζουν οι κλάσεις αυτή τη συµπεριφορά. Επιπλέον, η συντήρηση του συστήµατος γίνεται πολύπλοκη καθώς αυξάνει ο αριθµός των εξαρτήσεων και των αλληλεπιδράσεων µεταξύ των κλάσεων. Το πρότυπο Mediator (µεσολαβητής) λύνει αυτό το πρόβληµα µε την προαγωγή της χαλαρότερης σύνδεσης (loose coupling) µεταξύ των κλάσεων. Οι Mediators επιτυγχάνουν αυτό το στόχο µε το να έχουν αναλυτική γνώση της συµπεριφοράς, της λογικής και των υπευθυνοτήτων της κάθε κλάσης του συστήµατος. Οι κλάσεις ενηµερώνουν το Mediator για οποιαδήποτε αλλαγή έχει συµβεί και ο Mediator µε τη σειρά του ενηµερώνει τις κλάσεις για τις αλλαγές που έχουν συµβεί και πρέπει να γνωρίζουν. Το πρότυπο Memento Η προσπέλαση των δεδοµένων ενός αντικειµένου γίνεται µε τη χρήση των public µεθόδων του. Στην περίπτωση που κάποιος θα ήθελε να αποθηκεύσει την εσωτερική κατάσταση ενός αντικειµένου, θα έπρεπε κάνοντας χρήση των public µεθόδων του αντικειµένου, να διαβάσει όλα τα δεδοµένα του αντικειµένου και στην συνέχεια να τα αποθηκεύσει. Όµως στη γενική περίπτωση αυτό δεν είναι εφικτό λόγω του γεγονότος ότι τα αντικείµενα δεν εκθέτουν όλα τα δεδοµένα τους µέσω public µεθόδων αφού στον αντικειµενοστρεφή τρόπο ανάπτυξης η κελυφοποίηση θεωρείται καλή τεχνική. Από την άλλη πλευρά, η λειτουργικότητα της αποθήκευσης των δεδοµένων ενός αντικειµένου και της µετέπειτα αποκατάστασής αυτών είναι επιθυµητή σε πληθώρα συστηµάτων (π.χ. λειτουργικότητα undo). Το πρότυπο memento προσπαθεί να λύσει αυτό το πρόβληµα µε τη δηµιουργία προνοµίων πρόσβασης στην εσωτερική κατάσταση του αντικειµένου που θέλουµε να αποθηκεύσουµε. Σύµφωνα µε το πρότυπο memento έχουµε τρεις ρόλους για τα αντικείµενα: 1. Ο ρόλος originator. Είναι το αντικείµενο του οποίου θέλουµε να αποθηκεύσουµε τα δεδοµένα. 2. Ο ρόλος memento. Είναι το αντικείµενο που αποθηκεύει την κατάσταση του originator και 23

24 3. Ο επιστάτης (caretaker) που διαχειρίζεται το συγχρονισµό των γεγονότων της αποθήκευσης και της ανακατασκευής. Οι τρεις παραπάνω ρόλοι παρουσιάζονται στην παρακάτω εικόνα. Εικόνα 10: Το πρότυπο memento Το πρότυπο Observer Τα σηµερινά συστήµατα λειτουργούν σε σύνθετα παραθυρικά περιβάλλοντα όπου πολλές φορές είναι αναγκαίο να παρουσιάζουµε τα δεδοµένα ταυτόχρονα. Για παράδειγµα είναι πολύ συνηθισµένο να παρουσιάζουµε την τιµή µιας µετοχής τόσο αριθµητικά όσο και σε γράφηµα. Προφανώς όταν η τιµή της µετοχής αλλάζει το σύστηµα πρέπει να ενηµερώνει τόσο την αριθµητική τιµή όσο και το γράφηµα. Το πρόβληµα αυτό αντιµετωπίζεται από το πρότυπο Observer (παρατηρητής). Το πρότυπο Observer προϋποθέτει ότι το αντικείµενο που περιέχει τα δεδοµένα είναι διαφορετικό από το αντικείµενο που τα παρουσιάζει, και ότι τα αντικείµενα που παρουσιάζουν τα δεδοµένα είναι αυτά που παρατηρούν τις αλλαγές. Το πρότυπο State Το πρότυπο State αλλάζει τη συµπεριφορά ενός αντικειµένου όταν αλλάξει η κατάσταση του αντικειµένου. Το πρότυπο State χρησιµοποιείται όταν θέλουµε να έχουµε έναν εσωτερικό διακόπτη κλάσης µέσα σε ένα αντικείµενο και ανάλογα µε την εσωτερική κατάσταση του αντικειµένου να διαλέγουµε το είδος της κλάσης του. Το πρότυπο Strategy Το πρότυπο Strategy (στρατηγική) αποτελείται από ένα σύνολο σχετικών αλγορίθµων οι οποίοι κελυφοποιούνται µέσα σε µια κλάση οδηγό (driver) που ονοµάζεται πλαίσιο (context). Η εφαρµογή πελάτης (client) επιλέγει έναν από τους διαφορετικούς 24

25 αλγορίθµους προς εκτέλεση ή εναλλακτικά το πλαίσιο επιλέγει τον πλέον κατάλληλο. Ο στόχος του προτύπου Strategy είναι να µπορούµε να επιλέγουµε αλγόριθµο µεταξύ των διαθέσιµων αλγορίθµων Η διαφορά µεταξύ του πρότυπου state και του πρότυπου strategy είναι ότι στο πρότυπο state κελυφοποιούµε τις κλάσεις οι οποίες διαφέρουν ενώ στο πρότυπο strategy κελυφοποιούµε τους αλγορίθµους που διαφέρουν. Το πρότυπο strategy χρησιµοποιείται από εφαρµογές που απαιτούν µια ιδιαίτερη υπηρεσία ή µια λειτουργία η οποία έχει διάφορες παραλλαγές. Η επιλογή του κατάλληλου αλγορίθµου προς εκτέλεση γίνεται αυτόµατα από το σύστηµα ή από τον ενδιαφερόµενο χρήστη. Επιπλέον, ο αριθµός των διαθέσιµων στρατηγικών-αλγορίθµων είναι δυνατόν να µεταβάλλεται χρονικά. Το πρότυπο strategy είναι χρήσιµο σε πολλές περιπτώσεις όπως:: στην αποθήκευση των αρχείων µε διαφορετικό format στην συµπίεση αρχείων χρησιµοποιώντας διαφορετικούς αλγορίθµους στην καταγραφή video χρησιµοποιώντας τα διαφορετικά πρότυπα συµπίεσης στην σχεδίαση δεδοµένων µε διαφορετικούς τρόπους κ.λπ. Το πρότυπο Template Method Το πρότυπο Template Method είναι ίσως το πιο χρησιµοποιηµένο πρότυπο. Χρησιµοποιείται για να περιγράψει το σκελετό ενός αλγορίθµου, αφήνοντας την υλοποίηση του αλγορίθµου στις υποκλάσεις. Το βασικό πλεονέκτηµα της χρήσης του προτύπου είναι η αλλαγή του κώδικα της εφαρµογής χωρίς να χρειαστεί να αλλάξει η δοµή του συστήµατος. Επιπλέον, το πρότυπο είναι ιδιαίτερα χρήσιµο για το διαχωρισµό της µεταβαλλόµενης από την αµετάβλητη συµπεριφορά του συστήµατος. Η αµετάβλητη συµπεριφορά τοποθετείται στην αφηρηµένη κλάση (στο template) ενώ η µεταβαλλόµενη συµπεριφορά τοποθετείται στις υποκλάσεις. 25

26 Εικόνα 11: Το πρότυπο Template Method. Στην παραπάνω εικόνα η αφηρηµένη κλάση AbstractClass ορίζει δύο µεθόδους PrimitiveOperation1() και PrimitiveOperation2(). Η συγκεκριµένη κλάση ConcreteClass υλοποιεί τις µεθόδους PrimitiveOperation1() και PrimitiveOperation2() εισάγοντας λεπτοµέρειες. Η µέθοδος TemplateMethod() της αφηρηµένης κλάσης ορίζει το σκελετό του αλγορίθµου, ο οποίος απλά καλεί τις κλάσεις PrimitiveOperation1() και PrimitiveOperation2(). Το πρότυπο Visitor Ο σκοπός του προτύπου Visitor είναι να κελυφοποιήσει τις λειτουργίες που θέλουµε να εκτελέσουµε πάνω σε µια δοµή δεδοµένων. Με τον τρόπο αυτό µπορούµε να αλλάξουµε τον τρόπο µε τον οποίο διαχειριζόµαστε τα δεδοµένα χωρίς να χρειαστεί να αλλάξουµε τις κλάσεις που χρησιµοποιούν τα δεδοµένα. Έτσι µε τη χρήση του προτύπου visitor µπορούµε να διαχωρίσουµε τις κλάσεις που περιέχουν τα δεδοµένα και τις δοµές δεδοµένων από τις κλάσεις που περιέχουν τους αλγορίθµους για τη διαχείριση των δεδοµένων. 26

27 4 Η Περιγραφή ενός προτύπου Υπάρχουν πολλοί τρόποι για να περιγράψει κανείς ένα πρότυπο. Οι Alexander, Gamma και Buschmann προτείνουν τα δικά τους σχήµατα περιγραφή τα οποία ονοµάζονται Αλεξανδριανό ή κανονικό, σχήµα GoF και σχήµα POSA αντίστοιχα. Τα σχήµατα περιγραφής προτύπων είναι σε γενικές γραµµές παρόµοια. Το παρακάτω είναι το σχήµα περιγραφής προτύπων GoF το οποίο περιγράφει τα ακόλουθα: Όνοµα και Ταξινόµηση Κάθε πρότυπο πρέπει να έχει ένα όνοµα µε σηµασία. Το όνοµα πρέπει να δίνεται µε τέτοιο τρόπο έτσι να µπορεί να χρησιµοποιείται εύκολα όταν συζητούµε για αυτό και να µην χρειάζεται να το περιγράψουµε περιφραστικά. Σκοπός Είναι µια σύντοµη περιγραφή του προβλήµατος που λύνει το πρότυπο και του σκοπού για τον οποίο φτιάχτηκε. Συνώνυµα Το κάθε πρότυπο µπορεί να είναι γνωστό µε διάφορα εναλλακτικά ονόµατα τα οποία και περιγράφονται στο σηµείο αυτό. Κίνητρο Το κίνητρο, το σενάριο µε το οποίο καταδεικνύουµε τη χρησιµότητα του προτύπου. Εφαρµοσιµότητα Οι περιπτώσεις για τις οποίες το πρότυπο είναι κατάλληλο οµή Η δοµή του προτύπου δίνεται σε µια αντικειµενοστρεφή γλώσσα µοντελοποίησης. Αρχικά τα πρότυπα GoF περιγράφηκαν µε τη χρήση της ΟΜΤ (Object Modeling Technique) αλλά πλέον µπορεί κανείς να τα συναντήσει στη διεθνή βιβλιογραφία και σε γλώσσα UML. Συµµετέχοντες (Participants) Οι κλάσεις ή/και τα αντικείµενα που συµµετέχουν στο πρότυπο καθώς και οι υπευθυνότητές τους. 27

28 Συνεργασίες (Collaborations) Πώς οι συµµετέχοντες συνεργάζονται για να υλοποιήσουν τις υπευθυνότητές τους. Συνέπειες Πως τελικά το πρότυπο ικανοποιεί τους στόχους του. Στο σηµείο αυτό αναφέρονται οι παραδοχές που έγιναν καθώς και οι περιορισµοί στους οποίους υπόκειται το πρότυπο. Υλοποίηση Τεχνικές, συµβουλές σχετικές µε το πρότυπο χρήσιµες για την υλοποίηση του προτύπου στο σύστηµα. Παραδειγµατικός κώδικας Τµήµατα του κώδικα που παρουσιάζουν µε µορφή παραδείγµατος την υλοποίηση του προτύπου Γνωστές χρήσεις Τρόποι µε τους οποίους έχει ήδη χρησιµοποιηθεί το πρότυπο Σχετικά Πρότυπα Πρότυπα µε άµεση σχέση µε το παρών πρότυπο. Ποιες είναι οι οµοιότητες και ποιες οι διαφορές από άλλα παρόµοια πρότυπα. 28

29 5 Τα ποιοτικά χαρακτηριστικά ενός προτύπου Ένα πρότυπο αποτελεί µια επαναχρησιµοποιούµενη µονάδα λογισµικού. Εποµένως είναι ιδιαίτερα σηµαντικό να είναι υψηλής ποιότητας. Τα βασικά ποιοτικά χαρακτηριστικά ενός προτύπου είναι τα ακόλουθα: Κελυφοποίηση (Encapsulation) και Αφαίρεση (Abstraction) Κάθε πρότυπο κελυφοποιεί ένα καλά καθορισµένο πρόβληµα και παρουσιάζει µια σαφή λύση σε ένα συγκεκριµένο χώρο αναφοράς. Τα πρότυπα πρέπει να έχουν ένα σαφές περίγραµµα έτσι ώστε τόσο το πρόβληµα όσο και η λύση του να είναι ξεκάθαρες. Επίσης υλοποιούν αφαιρέσεις, που ενσωµατώνουν τη γνώση και την εµπειρία διαφορετικών περιοχών εφαρµογής. Τέλος, εµφανίζονται σε ποικίλα ιεραρχικά επίπεδα εννοιολογικής λεπτοµέρειας. Ανοικτό και ευµετάβλητο Κάθε πρότυπο πρέπει να είναι ανοικτό για επεκτάσεις και παραµετροποίηση από άλλα πρότυπα έτσι ώστε να µπορεί να συνδυασθεί στη λύση ενός µεγαλύτερου προβλήµατος. Επιπλέον, το κάθε πρότυπο πρέπει να µπορεί να επιδέχεται απεριόριστο αριθµό διαφορετικών υλοποιήσεων µόνο του ή σε συνδυασµό µε άλλα. Συνθεσιµότητα και γενικευσιµότητα Αν και οι όροι συνθεσιµότητα και γενικευσιµότητα δεν είναι δόκιµοι στην Ελληνική γλώσσα η ιδέα πίσω από αυτές τις λέξεις είναι η δυνατότητα των προτύπων που έχουν ήδη εφαρµοσθεί να αποτελούν τη βάση για εφαρµογή και άλλων προτύπων σε πιο υψηλό επίπεδο. Βέβαια η συµπεριφορά των προτύπων δεν είναι γραµµική και οµοιόµορφη αλλά εξαρτάται από το πεδίο εφαρµογής, πράγµα που σηµαίνει ότι νέοι τρόποι συνδυασµού τους παράγουν και νέες συµπεριφορές. Ισορροπία Κάθε πρότυπο πρέπει να ισορροπήσει µεταξύ των δυνατοτήτων του και των περιορισµών του. Μερικές πρακτικές συµβουλές για τα πρότυπα είναι: Η αρχή της ελάχιστης έκπληξης: Το πρότυπο δεν πρέπει να δηµιουργεί έκπληξη και απορία στον αναγνώστη. 29

30 Το πρότυπο πρέπει να εφαρµόζει την αρχή 80-20, που λέει ότι σε ένα σύστηµα στο 80% του χρόνου εκτελείται µόνο το 20% του κώδικα, ή µε απλά λόγια ότι οι συνηθισµένες λειτουργίες πρέπει να είναι πολύ απλές ενώ οι δύσκολες να είναι απλά εφαρµόσιµες. Μόνο οι απαραίτητοι κανόνες. Όσους περισσότερους κανόνες εισάγουµε τόσο αυξάνουµε την πολυπλοκότητα και δυσκολία της εφαρµογής. Ο κανόνας Demeter. Μια κλάση πρέπει να αναφέρεται στα δεδοµένα της και στις µεθόδους της και όσο το δυνατόν λιγότερο σε άλλες κλάσεις. Ο σχεδιασµός του συστήµατος τελειώνει όταν δεν µπορούµε να αφαιρέσουµε τίποτε άλλο από αυτόν. Η απλότητα είναι πιο σηµαντική από τη γενικότητα. Κάθε κλάση υλοποιεί µια αφαίρεση και κάθε αφαίρεση περιγράφεται από µια κλάση (ισοµορφισµός) Ο στόχος είναι ότι, κάθε καλό πρότυπο περιγράφει ένα σύνολο που είναι µεγαλύτερο από τα µέρη που το απαρτίζουν, λόγω των συνδυασµών των κλάσεων και του τρόπου που λειτουργούν όλες µαζί έτσι ώστε να υλοποιήσουν τους στόχους του προτύπου. 30

31 6 Συµπεράσµατα Όλες οι ώριµες ειδικότητες της µηχανικής βασίζονται εκτός από τις επιστηµονικές θεωρίες και τα µαθηµατικά µοντέλα σε ένα σύνολο καλών πρακτικών και εφαρµοσµένων διαδικασιών για την επίλυση των γνωστών και συνηθισµένων προβληµάτων. Οι έµπειροι µηχανικοί δεν σχεδιάζουν τα προϊόντα τους µόνο σύµφωνα µε τις αυστηρές αρχές των µαθηµατικών και της επιστήµης, αλλά πρέπει να λάβουν υπόψη τους ένα σύνολο παραγόντων που επιδρούν σε ένα σύγχρονο ανταγωνιστικό περιβάλλον Οι παράγοντες αυτοί περιλαµβάνουν την ταχύτητα παράδοσης του προϊόντος, το κόστος, την ποιότητα, τις ανάγκες των πελατών κ.λπ. Τα πρότυπα σχεδιασµού βοηθούν προς αυτή την κατεύθυνση, ειδικά στην µηχανική λογισµικού η οποία είναι και από τις νεότερες κατευθύνσεις της µηχανικής µε το να ορίσουν ποιες λύσεις είναι ήδη γνωστές και έχουν εφαρµοσθεί κατ επανάληψη και ποιες όχι. Τα πρότυπα αναπαριστούν συµπυκνωµένη εµπειρία πολλών µηχανικών λογισµικού δοκιµασµένη σε µεγάλο αριθµό συστηµάτων. Βοηθούν στο να σφυρηλατήσουµε το όραµα µιας κοινής αρχιτεκτονικής κατεύθυνσης και των κοινών βασικών δοµών οι οποίες θα βοηθήσουν στην ωρίµαση της µηχανικής λογισµικού Εάν µια λύση µπορεί να εκφρασθεί σε µορφή προτύπων, τότε µπορεί να εφαρµοστεί και σε άλλες περιπτώσεις συστηµάτων, και διευκολύνει την επαναχρησιµοποίηση αυτής σε ολόκληρο φάσµα των παραδοτέων της µηχανικής λογισµικού. Επιπλέον τα πρότυπα είναι ένα βασικό εργαλείο για την αναπαράσταση και την επικοινωνία της γνώσης και της εµπειρίας µεταξύ της κοινότητας των µηχανικών λογισµικού. Εκτός από το γεγονός ότι τα πρότυπα κελυφοποιούν τη γνώση δηµιουργούν και ένα κοινό λεξιλόγιο για τους µηχανικούς πράγµα το οποίο διευκολύνει σε µεγάλο βαθµό την επικοινωνία, ενώ ταυτόχρονα βελτιώνουν την τεκµηρίωση των συστηµάτων λογισµικού. Είναι βέβαιο ότι τα πρότυπα θα συνεχίσουν να επηρεάζουν σε µεγάλο βαθµό τη τεχνολογία λογισµικού και τα επόµενα χρόνια µια και περιέχουν πολύτιµη γνώση που αποκτήθηκε από τους ειδικούς του χώρου σε µια µεγάλη χρονική περίοδο. 31

32 7 Βιβλιογραφία 1. Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksdahl-King, and Shlomo Angel., A Pattern Language, Oxford University Press, Christopher Alexander, The Timeless Way of Building, Oxford University Press, Grady Booch, James Rumbaugh, Ivar Jacobson: The Unified Modeling Language User Guide. Addison-Wesley Longman, Martin Fowler, UML Distilled, Addison-Wesley, Michael Jesse Chonoles and James A. Schardt, UML 2 for Dummies, Hungry Minds, Floyd Marinescu, EJB Design Patterns, John Willey & Sons, Inc., Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Addison-Wesley, Graig Larman, Applying UML and Patterns, Prentice Hall, Bruce Eckel, Thinking in Patterns, ιαθέσιµο στο 10. James O. Coplien, Software Patterns, ιαθέσιµο στο 11. Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal, Peter Sommerlad, Michael Stal, Pattern-Oriented Software Architecture, Volume 1: A System of Patterns, John Wiley & Sons; James Cooper, The Design Patterns Java Companion, Addison Wesley Design Patterns Series, Η εικόνα των προτύπων GoF στο εξώφυλλο προέρχεται από τον δικτυακό ιστοχώρο και έχει φτιαχτεί από τον Guilherme Balena Versiani. 32

Μοτίβα Σχεδίασης (Design Patterns)

Μοτίβα Σχεδίασης (Design Patterns) Ενότητα 6 Μοτίβα Σχεδίασης (Design Patterns) Ορισµοί βασικές έννοιες. Σηµαντικά µοτίβα σχεδίασης: Παρατηρητής (Observer). Πρόσοψη (Façade). Προσαρµογέας (Adapter). Πληρεξούσιος (Proxy). Μοναχοπαίδι (Singleton).

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

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

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

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

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

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

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

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

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

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

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

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

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

Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής

Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής 1 Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στη Ενοποιηµένη Προσέγγιση Unified Process (UP) ρ. Πάνος Φιτσιλής 2 Περιεχόµενα Τι είναι η UP Βασικές αρχές µηχανικής λογισµικού Οι βασικές έννοιες της UP Οι τέσσερις

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

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

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

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

Εμπειρική μελέτη χρήσης αντικειμενοστραφών προτύπων σχεδίασης σε λογισμικό ανοικτού κώδικα

Εμπειρική μελέτη χρήσης αντικειμενοστραφών προτύπων σχεδίασης σε λογισμικό ανοικτού κώδικα ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών του τμήματος Πληροφορικής Κατεύθυνση "Πληροφοριακά Συστήματα Εμπειρική μελέτη χρήσης αντικειμενοστραφών προτύπων

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

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται

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

ΣΧΕ ΙΑΣΜΟΣ ΕΠΙΦΑΝΕΙΑΣ Με το σχεδιασµό επιφάνειας (Custom επιφάνεια) µπορούµε να σχεδιάσουµε επιφάνειες και αντικείµενα που δεν υπάρχουν στους καταλόγους του 1992. Τι µπορούµε να κάνουµε µε το σχεδιασµό

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

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

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

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

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

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD

ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD ΗΜΙΟΥΡΓΙΑ ΙΣΤΟΣΕΛΙ ΑΣ ΣΤΟ MICROSOFT WORD Σε ορισµένες περιπτώσεις είναι ιδιαίτερα χρήσιµη η δηµιουργία ιστοσελίδων ενηµερωτικού περιεχοµένου οι οποίες στη συνέχεια µπορούν να δηµοσιευθούν σε κάποιο τόπο

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

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

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

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

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

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

EΞΟΙΚΕΙΩΣΗ ΜΕ ΤΟ MOVIE MAKER

EΞΟΙΚΕΙΩΣΗ ΜΕ ΤΟ MOVIE MAKER EΞΟΙΚΕΙΩΣΗ ΜΕ ΤΟ MOVIE MAKER 1. Ανοίξτε από ΟΛΑ ΤΑ ΠΡΟΓΡΑΜΜΑΤΑ, το Windows movie maker 2. Αυτή είναι η βασική επιφάνεια εργασίας του λογισµικού Το movie maker µας δίνει δύο δυνατότητες. Να κάνουµε ένα

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

Outlook Express-User Instructions.doc 1

Outlook Express-User Instructions.doc 1 Οδηγίες προς τους υπαλλήλους του ήµου Θεσσαλονίκης για την διαχείριση της ηλεκτρονικής τους αλληλογραφίας µε το Outlook Express (Ver 1.0 22-3-2011) (Για οποιοδήποτε πρόβληµα ή απορία επικοινωνήστε µε τον

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Σχολιασµένη Βιβλιογραϕία Χρηστος. Ζαρολιαγκης Καθηγητής Τµήµα Μηχ/κων Υπολογιστών & Πληροϕορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Φεβρουάριος 2013 1 Περίληψη

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

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

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

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

ΥΠΗΡΕΣΙΑ WEBMAIL ΚΥΠΕΣ

ΥΠΗΡΕΣΙΑ WEBMAIL ΚΥΠΕΣ ΥΠΗΡΕΣΙΑ WEBMAIL ΚΥΠΕΣ Η υπηρεσία διαχείρισης αλληλογραφίας µέσω web (webmail) δίνει την δυνατότητα στους χρήστες να διαχειριστούν την αλληλογραφία τους απ οποιοδήποτε σηµείο βρίσκονται εφόσον υπάρχει

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

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης

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

ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ»

ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ» ΚΡΥΠΤΟΓΡΑΦΙΑ Α. ΑΠΟ ΤΟ ΒΙΒΛΙΟ «Η ΦΥΣΗ ΚΑΙ Η ΔΥΝΑΜΗ ΤΩΝ ΜΑΘΗΜΑΤΙΚΩΝ» - Κρυπτογραφία είναι - Κρυπτανάλυση είναι - Με τον όρο κλειδί. - Κρυπτολογία = Κρυπτογραφία + Κρυπτανάλυση - Οι επιστήµες αυτές είχαν

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

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

Εισαγωγή στη Χρήση της Εφαρµογής Compaq Visual Fortran & του Microsoft Developer Studio

Εισαγωγή στη Χρήση της Εφαρµογής Compaq Visual Fortran & του Microsoft Developer Studio Εισαγωγή στη Χρήση της Εφαρµογής Compaq Visual Fortran & του Microsoft Developer Studio Το κείµενο που ακολουθεί είναι ένας σύντοµος οδηγός στο περιβάλλον προγραµµατισµού της γλώσσας Fortran, για τις ανάγκες

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

Περίληψη ιπλωµατικής Εργασίας

Περίληψη ιπλωµατικής Εργασίας Περίληψη ιπλωµατικής Εργασίας Θέµα: Εναλλακτικές Τεχνικές Εντοπισµού Θέσης Όνοµα: Κατερίνα Σπόντου Επιβλέπων: Ιωάννης Βασιλείου Συν-επιβλέπων: Σπύρος Αθανασίου 1. Αντικείµενο της διπλωµατικής Ο εντοπισµός

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

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

ΕΚΦΩΝΗΣΗ ΥΠΟΧΡΕΩΤΙΚΗΣ ΕΡΓΑΣΙΑΣ σε UML ΕΚΦΩΝΗΣΗ ΥΠΟΧΡΕΩΤΙΚΗΣ ΕΡΓΑΣΙΑΣ σε UML για το µάθηµα ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ Ακαδηµαϊκό Έτος 2012-2013 «Αντικειµενοστρεφής Ανάλυση Ηλεκτρονικού Καταστήµατος Προσφορών (e-shop)» Η άσκηση αφορά στη χρήση της

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

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

Περιεχόμενα. ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στη UML... 19 Περιεχόμενα ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στη UML... 19 1.1 Εισαγωγή... 19 1.2 Η γλώσσα UML... 20 1.2.1 Μεθοδολογίες ανάπτυξης λογισμικού... 21 1.2.2 Τύποι διαγραμμάτων της UML... 22 1.3 Διαγράμματα της UML... 24

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

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

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

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

Ανάλυση Πληροφοριακών Συστημάτων. «Εισαγωγή στην UML» Βασίλειος Καρακόιδας 26 10 2005

Ανάλυση Πληροφοριακών Συστημάτων. «Εισαγωγή στην UML» Βασίλειος Καρακόιδας 26 10 2005 Ανάλυση Πληροφοριακών Συστημάτων «Εισαγωγή στην UML» Βασίλειος Καρακόιδας 26 10 2005 Περιεχόμενα Παρουσίασης Εισαγωγικά Προαπαιτούμενα Πρόγραμμα διαλέξεων Εργασίες Λογισμικό Εισαγωγή στην UML Βιβλιογραφία

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

ΑΝΙΧΝΕΥΣΗ ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ ΣΕ ΛΟΓΙΣΜΙΚΟ ΑΝΟΙΧΤΟ ΚΩΔΙΚΑ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΓΚΟΥΝΤΙΝΑΣ ΛΑΖΑΡΟΣ(ΑΜ:708) ΕΠΙΒΛΕΠΩΝ : ΑΛΕΞΑΝΔΡΟΣ ΛΑΖΑΡΙΔΗΣ

ΑΝΙΧΝΕΥΣΗ ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ ΣΕ ΛΟΓΙΣΜΙΚΟ ΑΝΟΙΧΤΟ ΚΩΔΙΚΑ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΓΚΟΥΝΤΙΝΑΣ ΛΑΖΑΡΟΣ(ΑΜ:708) ΕΠΙΒΛΕΠΩΝ : ΑΛΕΞΑΝΔΡΟΣ ΛΑΖΑΡΙΔΗΣ Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Ο Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Ο Ι Δ Ρ Υ Μ Α Σ Ε Ρ Ρ Ω Ν Σ Χ Ο Λ Η Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Ω Ν Ε Φ Α Ρ Μ Ο Γ Ω Ν Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ & Ε Π Ι Κ Ο Ι Ν Ω Ν Ι Ω Ν ΑΝΙΧΝΕΥΣΗ ΠΡΟΤΥΠΩΝ

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

Ν Ι Κ Ο Λ Α Ο Σ Π. Κ Υ Ρ Α Ν Α Κ Ο Σ ΤΟΠΟΓΡΑΦΟΣ ΜΗΧΑΝΙΚΟΣ Ε.Μ.Π. Εργολ. ηµοσίων Eργων ΜΗΧΑΝΙΚΟΣ ΛΟΓΙΣΜΙΚΟΥ ΕΛ.ΚΕ.ΠΑ. ΕΠΙΜΕΤΡΗΣΕΙΣ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ

Ν Ι Κ Ο Λ Α Ο Σ Π. Κ Υ Ρ Α Ν Α Κ Ο Σ ΤΟΠΟΓΡΑΦΟΣ ΜΗΧΑΝΙΚΟΣ Ε.Μ.Π. Εργολ. ηµοσίων Eργων ΜΗΧΑΝΙΚΟΣ ΛΟΓΙΣΜΙΚΟΥ ΕΛ.ΚΕ.ΠΑ. ΕΠΙΜΕΤΡΗΣΕΙΣ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ 7 Ν Ι Κ Ο Λ Α Ο Σ Π. Κ Υ Ρ Α Ν Α Κ Ο Σ ΤΟΠΟΓΡΑΦΟΣ ΜΗΧΑΝΙΚΟΣ Ε.Μ.Π. Εργολ. ηµοσίων Eργων ΜΗΧΑΝΙΚΟΣ ΛΟΓΙΣΜΙΚΟΥ ΕΛ.ΚΕ.ΠΑ. ErgoMetr ΕΠΙΜΕΤΡΗΣΕΙΣ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ Νέο σύγχρονο πρόγραµµα γενικών επιµετρήσεων σε

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

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας)

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας) Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016 Γεωργία Καπιτσάκη (Λέκτορας) ΠΕΡΙΟΧΗ Α: ΕΦΑΡΜΟΓΕΣ ΜΕ ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΠΙΓΝΩΣΗ ΣΥΓΚΕΙΜΕΝΟΥ Οι αισθητήρες μας δίνουν τη δυνατότητα συλλογής

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

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

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

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

Tεχνολογία Λογισµικού II

Tεχνολογία Λογισµικού II Tεχνολογία Λογισµικού II ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα ΣΧΕ ΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ Τόµος B' Tεχνολογία Λογισµικού II BAΣIΛEIOΣ

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

ΑΝΑΖΗΤΗΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ

ΑΝΑΖΗΤΗΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ ΑΝΑΖΗΤΗΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΕΣ ΒΙΒΛΙΟΘΗΚΕΣ Μία από τις πιο σηµαντικές υπηρεσίες που προσφέρει το διαδίκτυο στην επιστηµονική κοινότητα είναι η αποµακρυσµένη πρόσβαση των χρηστών σε ηλεκτρονικές βιβλιοθήκες

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

Το Ηλεκτρονικό Ταχυδροµείο (e-mail) είναι ένα σύστηµα που δίνει την δυνατότητα στον χρήστη να ανταλλάξει µηνύµατα αλλά και αρχεία µε κάποιον άλλο

Το Ηλεκτρονικό Ταχυδροµείο (e-mail) είναι ένα σύστηµα που δίνει την δυνατότητα στον χρήστη να ανταλλάξει µηνύµατα αλλά και αρχεία µε κάποιον άλλο Το Ηλεκτρονικό Ταχυδροµείο (e-mail) είναι ένα σύστηµα που δίνει την δυνατότητα στον χρήστη να ανταλλάξει µηνύµατα αλλά και αρχεία µε κάποιον άλλο χρήστη µέσω υπολογιστή άνετα γρήγορα και φτηνά. Για να

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

ΕΚΠΑΙ ΕΥΤΙΚΕΣ ΡΑΣΤΗΡΙΟΤΗΤΕΣ ΜΕ ΤΟ ΑΒΑΚΙΟ/E-SLATE

ΕΚΠΑΙ ΕΥΤΙΚΕΣ ΡΑΣΤΗΡΙΟΤΗΤΕΣ ΜΕ ΤΟ ΑΒΑΚΙΟ/E-SLATE Θέµα ιερεύνησης: Σχεδιασµός γραµµάτων Μπορώ να φτιάξω το δικό µου επεξεργαστή κειµένου; Στη διερεύνηση αυτή οι µαθητές καλούνται να κατασκευάσουν µια γραµµατοσειρά µε όλα τα κεφαλαία γράµµατα του ελληνικού

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

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12 Αρχιτεκτονικές κατανεμημένων συστημάτων Στόχοι Εξήγηση των πλεονεκτημάτων και των μειονεκτημάτων των αρχιτεκτονικών κατανεμημένων συστημάτων Εξέταση των αρχιτεκτονικών συστημάτων πελάτηδιακομιστή και των

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

παράθυρα ιδακτικό υλικό µαθητή Πλήκτρα για να το παράθυρο Λωρίδα τίτλου Πλαίσιο παραθύρου

παράθυρα ιδακτικό υλικό µαθητή Πλήκτρα για να το παράθυρο Λωρίδα τίτλου Πλαίσιο παραθύρου ιδακτικό υλικό µαθητή παράθυρα Κατά τη διάρκεια της µελέτης µας γράφουµε και διαβάζουµε, απλώνοντας πάνω στο γραφείο τετράδια και βιβλία. Ξεκινώντας ανοίγουµε αυτά που µας ενδιαφέρουν πρώτα και συνεχίζουµε

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

ιαχείριση Πληροφοριών στο ιαδίκτυο

ιαχείριση Πληροφοριών στο ιαδίκτυο ιαχείριση Πληροφοριών στο ιαδίκτυο Εργαστήριο (Φυλλάδιο 8) ΤΕΙ Καβάλας - Σχολή ιοίκησης & Οικονοµίας Τµήµα ιαχείρισης Πληροφοριών ιδάσκων: Μαρδύρης Βασίλειος, ιπλ. Ηλ. Μηχανικός & Μηχ. Υπολογιστών, MSc

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

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

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

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

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

Κεφάλαιο 9 ο Κ 5, 4 4, 5 0, 0 0,0 5, 4 4, 5. Όπως βλέπουµε το παίγνιο δεν έχει καµιά ισορροπία κατά Nash σε αµιγείς στρατηγικές διότι: (ΙΙ) Α Κ

Κεφάλαιο 9 ο Κ 5, 4 4, 5 0, 0 0,0 5, 4 4, 5. Όπως βλέπουµε το παίγνιο δεν έχει καµιά ισορροπία κατά Nash σε αµιγείς στρατηγικές διότι: (ΙΙ) Α Κ Κεφάλαιο ο Μεικτές Στρατηγικές Τώρα θα δούµε ένα παράδειγµα στο οποίο κάθε παίχτης έχει τρεις στρατηγικές. Αυτό θα µπορούσε να είναι η µορφή που παίρνει κάποιος µετά που έχει απαλείψει όλες τις αυστηρά

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

η σύνθεση ενός υπολογιστή

η σύνθεση ενός υπολογιστή ιδακτικό υλικό µαθητή η σύνθεση ενός υπολογιστή Αν παρατηρήσουµε έναν υπολογιστή βλέπουµε ότι αποτελείται από τα ακόλουθα µέρη: Οθόνη Μονάδα συστήµατος Ποντίκι Πληκτρολόγιο τη µονάδα συστήµατος, όπου βρίσκονται

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

Πληροφορίες. Εισαγωγή στην Πληροφορική. Κατηγορίες υλισµικού. Περίληψη µαθήµατος (συνέχεια) Επεξεργαστής Μνήµη. Χειµερινό Εξάµηνο 2006-07

Πληροφορίες. Εισαγωγή στην Πληροφορική. Κατηγορίες υλισµικού. Περίληψη µαθήµατος (συνέχεια) Επεξεργαστής Μνήµη. Χειµερινό Εξάµηνο 2006-07 Πληροφορίες Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Μόνο για την επόµενη Τετάρτη 25/10, το µάθηµα (12-13) δεν θα πραγµατοποιηθεί. Τα εργαστήρια θα ξεκινήσουν

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

Ε ΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Ε ΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Ε ΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΕ ΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ ΠΛΗ24 ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΙΙ ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΑΝΑΛΥΣΗΣ & ΣΧΕ ΙΑΣΗΣ ΜΕ ΤΗ UML ΣΥΣΤΗΜΑ ΕΛΕΓΧΟΥ ΑΝΕΛΚΥΣΤΗΡΩΝ (ELEVATOR CONTROL SYSTEM)

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Χειμερινό Εξάμηνο 2013 - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 Αρχιτεκτονική

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

ΣΗΜΕΙΩΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΜΟΣ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΣΗΜΕΙΩΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΜΟΣ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΚΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΣΗΜΕΙΩΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΜΟΣ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ρ. Βασίλειος Βεσκούκης ΠΕΙΡΑΙΑΣ, 2000 Περιεχόµενα 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗ

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

Don t hire us if you want average. We only do exceptional.

Don t hire us if you want average. We only do exceptional. Εισαγωγή Το i-flexible είναι ένα εργαλείο σύγχρονης εταιρικής παρουσίασης, αμφίδρομης επικοινωνίας, δειγματισμού και λήψης παραγγελιών, με δυνατότητες διαχείρισης ομάδων χρηστών και ορισμού δικαιωμάτων

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

(GNU-Linux, FreeBSD, MacOsX, QNX

(GNU-Linux, FreeBSD, MacOsX, QNX 1.7 διαταξεις (σελ. 17) Παράδειγµα 1 Θα πρέπει να κάνουµε σαφές ότι η επιλογή των λέξεων «προηγείται» και «έπεται» δεν έγινε απλώς για λόγους αφαίρεσης. Μπορούµε δηλαδή να ϐρούµε διάφορα παραδείγµατα στα

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

Η ΕΝΝΟΙΑ ΤΟΥ Ε ΟΜΕΝΟΥ ΚΑΙ ΤΟΥ ΤΥΠΟΥ Ε ΟΜΕΝΩΝ

Η ΕΝΝΟΙΑ ΤΟΥ Ε ΟΜΕΝΟΥ ΚΑΙ ΤΟΥ ΤΥΠΟΥ Ε ΟΜΕΝΩΝ Κεφάλαιο 1 Εισαγωγή Στο κεφάλαιο αυτό παρουσιάζεται µια συνοπτική εισαγωγή στη θεωρία των βάσεων δεδοµένων και των συστηµάτων διαχείρισης βάσεων δεδοµένων, προκειµένου ο αναγνώστης να κατανοήσει τις βασικές

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ»

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ «ΠΛΗΡΟΦΟΡΙΚΗ» ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ Σάββατο 5 Ιουνίου 2010 Οδηγίες: Η διάρκεια της εξέτασης είναι τρεις και µισή (3 ½) ώρες. Ισχύουν όσα αναφέρονται στους Κανονισµούς Εξετάσεων του ΕΑΠ γενικότερα και της Θ.Ε. ειδικότερα. Τα

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

Σενάριο 13. Προγραμματίζοντας ένα Ρομπότ

Σενάριο 13. Προγραμματίζοντας ένα Ρομπότ Σενάριο 13. Προγραμματίζοντας ένα Ρομπότ Ταυτότητα Σεναρίου Τίτλος: Προγραμματίζοντας ένα Ρομπότ Γνωστικό Αντικείμενο: Πληροφορική Διδακτική Ενότητα: Ελέγχω-Προγραμματίζω τον Υπολογιστή Τάξη: Γ Γυμνασίου

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

Προδιαγραφές Απαιτήσεων Γιάννης Σμαραγδάκης

Προδιαγραφές Απαιτήσεων Γιάννης Σμαραγδάκης Προδιαγραφές Απαιτήσεων Γιάννης Σμαραγδάκης Τα κυριότερα παραδοτέα/προϊόντα μιας διεργασίας ανάπτυξης λογισμικού Άρθρωση του προβλήματος, κατανόηση (προδιαγραφές απαιτήσεων) α ) Ποιο πρόβλημα λύνουμε;

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

Τίτλος Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης. Συντάκτης. Ακαδηµαϊκό ιαδίκτυο GUnet Οµάδα Ασύγχρονης Τηλεκπαίδευσης

Τίτλος Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης. Συντάκτης. Ακαδηµαϊκό ιαδίκτυο GUnet Οµάδα Ασύγχρονης Τηλεκπαίδευσης Τίτλος Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης Συντάκτης Ακαδηµαϊκό ιαδίκτυο GUnet Οµάδα Ασύγχρονης Τηλεκπαίδευσης Ηµεροµηνία Μάιος 2004 Πίνακας Περιεχοµένων ΕΙΣΑΓΩΓΗ 3 ΦΙΛΟΣΟΦΙΑ ΠΛΑΤΦΟΡΜΑΣ 4 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ

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

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

Διάγραμμα Κλάσεων. Class Diagram Διάγραμμα Κλάσεων Class Diagram Γενικά Ορίζει τις κλάσεις αντικειμένων σε ένα σύστημα, τις μεθόδους και τις συναρτήσεις τους, και τις συσχετίσεις μεταξύ των κλάσεων. Περιγράφουν την δομή και συμπεριφορά

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

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1 Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ.Χατζόπουλος 2 Δένδρο αναζήτησης είναι ένας ειδικός τύπος δένδρου που χρησιμοποιείται για να καθοδηγήσει την αναζήτηση μιας

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

Microsoft Dynamics NAV & Verticals

Microsoft Dynamics NAV & Verticals Microsoft Dynamics NAV & Verticals 1 Cosmos Business Systems SA Cosmos Consulting SA Software Solutions Microsoft Dynamics NAV ERP Τι είναι; Το Enterprise Resource Planning (ERP) είναι μια λύση λογισμικού

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

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο 2005-06

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο 2005-06 Τεχνολογικά Επιτεύγµατα Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 Ανάπτυξη ισχυρών µικροεπεξεργαστών ηµιουργία τοπικών δικτύων υψηλών ταχυτήτων «Εισαγωγή στα Κατανεµηµένα Λειτουργικά Συστήµατα»

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

Περιεχόµενο. ΕΠΛ 422: Συστήµατα Πολυµέσων. Σχεδίαση και Ανάπτυξη Πολυµεσικών Εφαρµογών. Βιβλιογραφία. Καγιάφας [2000]: Κεφάλαιο 9, [link]

Περιεχόµενο. ΕΠΛ 422: Συστήµατα Πολυµέσων. Σχεδίαση και Ανάπτυξη Πολυµεσικών Εφαρµογών. Βιβλιογραφία. Καγιάφας [2000]: Κεφάλαιο 9, [link] Περιεχόµενα ΕΠΛ 422: Συστήµατα Πολυµέσων Σχεδίαση και Ανάπτυξη Πολυµεσικών Εφαρµογών Βασικά ζητήµατα σχεδίασης Η διαδικασία ανάπτυξης πολυµεσικών εφαρµογών Η οµάδα ανάπτυξης πολυµεσικών εφαρµογών Σχεδίαση

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

7.8 Σύστηµα ονοµάτων περιοχών (Domain Name System, DNS)

7.8 Σύστηµα ονοµάτων περιοχών (Domain Name System, DNS) 7.8 ύστηµα ονοµάτων περιοχών (Domain Name System, DNS) Ερωτήσεις 1. Γιατί χρησιµοποιούµε συµβολικά ονόµατα αντί για τις διευθύνσεις; 2. ε τι αναφέρονται το όνοµα και η διεύθυνση ενός υπολογιστή; Πώς και

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

Εφαρμογή ψηφιοποίησης RollMan

Εφαρμογή ψηφιοποίησης RollMan Εφαρμογή ψηφιοποίησης RollMan Η εφαρμογή ψηφιοποίησης των ληξιαρχικών πράξεων RollMan (RollManager) δημιουργήθηκε από την εταιρία ειδικά για το σκοπό αυτό στο πλαίσιο της συνεργασίας με τους Δήμους. Από

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

----------Εισαγωγή στη Χρήση του SPSS for Windows ------------- Σελίδα: 0------------

----------Εισαγωγή στη Χρήση του SPSS for Windows ------------- Σελίδα: 0------------ ----------Εισαγωγή στη Χρήση του SPSS for Windows ------------- Σελίδα: 0------------ ΚΕΦΑΛΑΙΟ 8 ο 8.1 Συντελεστές συσχέτισης: 8.1.1 Συσχέτιση Pearson, και ρ του Spearman 8.1.2 Υπολογισµός του συντελεστή

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

ροµολόγηση πακέτων σε δίκτυα υπολογιστών

ροµολόγηση πακέτων σε δίκτυα υπολογιστών ροµολόγηση πακέτων σε δίκτυα υπολογιστών Συµπληρωµατικές σηµειώσεις για το µάθηµα Αλγόριθµοι Επικοινωνιών Ακαδηµαϊκό έτος 2011-2012 1 Εισαγωγή Οι παρακάτω σηµειώσεις παρουσιάζουν την ανάλυση του άπληστου

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

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

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

Κεφάλαιο 1. Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή computer aided design and manufacture (cad/cam)

Κεφάλαιο 1. Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή computer aided design and manufacture (cad/cam) Κεφάλαιο 1 Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή computer aided design and manufacture (cad/cam) 1.1 Ορισμός σχεδιομελέτης και παραγωγής με χρήση υπολογιστή CAD (Computer

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

Γενικό Λύκειο Κρουσώνα - Σχολικό έτος 2013-2014 Εκπαιδευτικός: Παπαδάκης Σταµάτης

Γενικό Λύκειο Κρουσώνα - Σχολικό έτος 2013-2014 Εκπαιδευτικός: Παπαδάκης Σταµάτης Οδηγάµε το Γενικό Λύκειο Κρουσώνα - Σχολικό έτος 2013-2014 Φύλλο Εργασίας Προγραµµατισµός Εφαρµογής στο AppInventor http://ai2.appinventor.mit.edu Ακολουθώντας τα βήµατα αυτού του φύλλου εργασίας, θα αναπτύξουµε

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

Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης

Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης Ταυτότητα Σεναρίου Τίτλος : Ενεργός Μετεωρολογικός Χάρτης Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω,

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

Στρατηγική xline ERP xline ERP xline ERP

Στρατηγική xline ERP xline ERP xline ERP Στρατηγική Επιλογή Οι ανάγκες της σύγχρονης επιχείρησης απαιτούν την ύπαρξη στρατηγικών στόχων και επιλογών, τόσο σε επιχειρηματικό, όσο και σε τεχνολογικό επίπεδο. Κινητήριος δύναμη και των δύο αποτελεί

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

Σενάριο 17: Παιχνίδι μνήμης με εικόνες

Σενάριο 17: Παιχνίδι μνήμης με εικόνες Σενάριο 17: Παιχνίδι μνήμης με εικόνες Φύλλο Εργασίας Τίτλος: Παιχνίδι μνήμης με εικόνες Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω, Συνθετικές

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

ΟΤΑ Επιχειρησιακή Νοηµοσύνη. Ενότητα: Bc1.1.6 Παρακολούθηση (monitoring) εκτέλεσης Επιχειρησιακών Διαδικασιών και εξαγωγή «µετρήσιµων» (metrics)

ΟΤΑ Επιχειρησιακή Νοηµοσύνη. Ενότητα: Bc1.1.6 Παρακολούθηση (monitoring) εκτέλεσης Επιχειρησιακών Διαδικασιών και εξαγωγή «µετρήσιµων» (metrics) ΟΤΑ Επιχειρησιακή Νοηµοσύνη Ενότητα: Bc1.1.6 Παρακολούθηση (monitoring) εκτέλεσης Επιχειρησιακών Διαδικασιών και εξαγωγή «µετρήσιµων» (metrics) Πρακτική Άσκηση (επίπεδο 2): Η άσκηση ζητά να εκτελεσθεί

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

Χαρτογράφηση με Ανοιχτό Λογισμικό GIS

Χαρτογράφηση με Ανοιχτό Λογισμικό GIS Χαρτογράφηση με Ανοιχτό Λογισμικό GIS Δημιουργία Θεματικού Χάρτη με το QGIS Δρ. Σταμάτης Καλογήρου Σεμινάριο στα πλαίσια του 1oυ Συνεδρίου Χωρικής Ανάλυσης Χαροκόπειο Πανεπιστήμιο, 17-18 Μαΐου 2013 Αυτό

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Triggers, Stored procedures Γιώργος Μαρκοµανώλης Περιεχόµενα Triggers-Ενηµέρωση δεδοµένων άλλων πινάκων... 1 Ασφάλεια...

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

7.11 Πρωτόκολλα Εφαρµογής. 7.11.2 Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.11 Πρωτόκολλα Εφαρµογής. 7.11.2 Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.11 Πρωτόκολλα Εφαρµογής 104. Αναφέρετε ονοµαστικά τις πιο χαρακτηριστικές εφαρµογές που υποστηρίζει η τεχνολογία TCP/IP οι οποίες είναι διαθέσιµες στο ιαδίκτυο 1. Ηλεκτρονικό

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

Εισαγωγή στα Συστήµατα Βάσεων Δεδοµένων

Εισαγωγή στα Συστήµατα Βάσεων Δεδοµένων Εισαγωγή στα Συστήµατα Βάσεων Δεδοµένων Βάσεις εδοµένων 2011-2012 Ευαγγελία Πιτουρά 1 Βασικές Έννοιες Τι είναι µια βάση δεδοµένων; Βάση Δεδοµένων: συλλογή από σχετιζόµενα δεδοµένα Ειδικού σκοπού λογισµικό

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

ERGO-FINANCES ΟΙΚΟΝΟΜΙΚΗ ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΡΓΩΝ

ERGO-FINANCES ΟΙΚΟΝΟΜΙΚΗ ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΡΓΩΝ ERGO-FINANCES ΟΙΚΟΝΟΜΙΚΗ ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΕΡΓΩΝ Το πρόγραµµα έχει σχεδιαστεί για την οικονοµική παρακολούθηση των Εργων. Ο χρήστης µπορεί, καταχωρώντας µε απλό τρόπο τις πραγµατοποιούµενες κινήσεις (π.χ.

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Δέντρα Αναζήτησης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Αναζήτηση Θέλουμε να διατηρήσουμε αντικείμενα με κλειδιά και να μπορούμε εκτός από

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

Kalman Filter Γιατί ο όρος φίλτρο;

Kalman Filter Γιατί ο όρος φίλτρο; Kalman Filter Γιατί ο όρος φίλτρο; Συνήθως ο όρος φίλτρο υποδηλώνει µια διαδικασία αποµάκρυνσης µη επιθυµητών στοιχείων Απότολατινικόόροfelt : το υλικό για το φιλτράρισµα υγρών Στη εποχή των ραδιολυχνίων:

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

Concept Mapping: H Βασισµένη στον Η/Υ ηµιουργία Εννοιολογικών Χαρτών και η ιδακτική Αξιοποίησή τους.

Concept Mapping: H Βασισµένη στον Η/Υ ηµιουργία Εννοιολογικών Χαρτών και η ιδακτική Αξιοποίησή τους. 4ο ΣΥΝΕ ΡΙΟ ΣΤΗ ΣΥΡΟ - ΤΠΕ ΣΤΗΝ ΕΚΠΑΙ ΕΥΣΗ 1 Concept Mapping: H Βασισµένη στον Η/Υ ηµιουργία Εννοιολογικών Χαρτών και η ιδακτική Αξιοποίησή τους. Κωνσταντίνα Στούµπου Ανωτάτη Σχολή Παιδαγωγικής και Τεχνολογικής

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

Ενότητα 8 (κεφάλαιο 21) Θεματοκεντρική Τεχνολογία Λογισμικού

Ενότητα 8 (κεφάλαιο 21) Θεματοκεντρική Τεχνολογία Λογισμικού ΕΠΛ362: Τεχνολογία Λογισμικού ΙΙ (μετάφραση στα ελληνικά των διαφανειών του βιβλίου Software Engineering, 9/E, Ian Sommerville, 2011) Ενότητα 8 (κεφάλαιο 21) Θεματοκεντρική Τεχνολογία Λογισμικού Οι διαφάνειες

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

Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων

Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων Μέθοδοι και Τεχνικές για τον Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων (SISP) Στρατηγική και Διοίκηση Πληροφοριακών Συστηµάτων Μάθηµα 2 No 1 Δοµή της Παρουσίασης l 1. Εισαγωγή l 2. Μεθοδολογία SISP

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

Εργαστήριο #10 (Ε10) 1

Εργαστήριο #10 (Ε10) 1 Εργαστήριο #10 Από τα προηγούμενα εργαστήρια......θα χρειαστείτε ορισμένες από τις οδηγίες μορφοποίησης CSS (ανατρέξτε στις εκφωνήσεις του 8 ου και 9 ου εργαστηρίου).! Οδηγίες Στη δυναμική δημιουργία ιστοσελίδων

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

Ε ΛΛΗΝΙΚΟ Α ΝΟΙΚΤΟ Π ΑΝΕΠΙΣΤΗΜΙΟ

Ε ΛΛΗΝΙΚΟ Α ΝΟΙΚΤΟ Π ΑΝΕΠΙΣΤΗΜΙΟ Ε ΛΛΗΝΙΚΟ Α ΝΟΙΚΤΟ Π ΑΝΕΠΙΣΤΗΜΙΟ ΣΧΕ ΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ ΠΛΗ24 ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΙΙ ΜΕΛΕΤΗ ΠΕΡΙΠΤΩΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟ ΚΑΤΑΣΤΗΜΑ Πάνος Φιτσιλής 2004 Πίνακας Περιεχοµένων 1 Γνωσιολογικοί στόχοι... 5 1.1 Σκοπός...

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

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAVIS-V1-2012 TRAVIS Λογισμικό Διαχείρισης Παραβάσεων Φωτοεπισήμανσης Το σύστημα διαχείρισης παραβάσεων φωτοεπισήμανσης

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

Δομή και Στόχοι του Μαθήματος - Εισαγωγή

Δομή και Στόχοι του Μαθήματος - Εισαγωγή ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Δομή και Στόχοι του Μαθήματος - Εισαγωγή Δομή και Στόχοι Μαθήματος Εισαγωγή Στόχοι του μαθήματος Δομή του μαθήματος Εργασία Εισαγωγή

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

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

Requirements Απαιτήσεις

Requirements Απαιτήσεις Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών Φθινόπωρο 2006 HΥ351 Ανάλυση και Σχεδίαση Πληροφοριακών Συστηµάτων Information Systems Analysis and Design Requirements Engineering Data Flow Diagrams Process

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

Συγχρηµατοδοτούµενο από το ΥΠΕΠΘ και την Ευρωπαϊκή Ένωση

Συγχρηµατοδοτούµενο από το ΥΠΕΠΘ και την Ευρωπαϊκή Ένωση Συγχρηµατοδοτούµενο από το ΥΠΕΠΘ και την Ευρωπαϊκή Ένωση ΣΥΝ ΕΣΗ ΜΕ ΤΟ ΙΚΤΥΟ Ε ΟΜΕΝΩΝ ΜΕΣΩ MODEM Το Κέντρο Λειτουργίας και ιαχείρισης ικτύου του Πανεπιστηµίου Αθηνών παρέχει τη δυνατότητα Dial-up σύνδεσης

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

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

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

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 CubisLITE Client Οδηγίες Χρήσεως Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 1 ΠΕΡΙΕΧΟΜΕΝΑ Γενικά 1. Τι είναι ο CubisLITE Server 2. Τι είναι ο

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

Οδοραµα mobile ΑΠΟΘΗΚΗ

Οδοραµα mobile ΑΠΟΘΗΚΗ Οδοραµα mobile ΑΠΟΘΗΚΗ Όπως βλέπετε, η αρχική οθόνη της εφαρµογής διαθέτει 9 κουµπιά τα οποία σας επιτρέπουν να πλοηγηθείτε σε αυτό. Αρχίζοντας από πάνω αριστερά βλέπετε τα εξής: 1. Τιµολόγηση: Προβολή

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