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

Μέγεθος: 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 Ελληνικό Ανοικτό Πανεπιστήµιο Εισαγωγή στην αντικειµενοστρεφή τεχνολογία ρ. Πάνος Φιτσιλής Περιεχόµενα Γιατί µοντελοποιούµε Εισαγωγή στη UML Ένα απλό παράδειγµα 2 Γιατί µοντελοποιούµε; Ησηµασία της µοντελοποίησης

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

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

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

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

Σχεδιασµός βασισµένος σε συνιστώσες

Σχεδιασµός βασισµένος σε συνιστώσες Σχεδιασµός βασισµένος σε συνιστώσες 1 Ενδεικτικά περιεχόµενα του κεφαλαίου Ποια είναι τα "άτοµα", από τα οποία κατασκευάζονται οι υπηρεσίες; Πώς οργανώνουµε τις συνιστώσες σε ένα αρµονικό σύνολο; Τι είναι

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

Τα διαγράµµατα πακέτων

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

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

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

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

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

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

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

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

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός ΗΥ : Αντικειµενοστρεφής Προγραµµατισµός http://www.csd.uoc.gr/~hy Β. Χριστοφίδης christop@ics.forth.gr Τµήµα Επιστήµης Υπολογιστών, Πανεπιστήµιο Κρήτης Ηράκλειο Κρήτης Γενικές Πληροφορίες Ώρες ιδασκαλίας

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

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

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

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

Τι είναι η λογική αρχιτεκτονική

Τι είναι η λογική αρχιτεκτονική Τι είναι η λογική αρχιτεκτονική Η ινγηθή αξρηηεθηνληθή είλαη ε πςεινύ επηπέδνπ αθαίξεζεο νξγάλσζε ηνπ ινγηζκηθνύ ζε θιάζεηο ή παθέηα (ή ρώξνπο νλνκάησλ), ππνζπζηήκαηα, θαη επίπεδα. Ολνκάδεηαη ινγηθή αξρηηεθηνληθή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος Εισαγωγή στους Αλγόριθµους Αλγόριθµοι Τι είναι αλγόριθµος; Τι µπορεί να υπολογίσει ένας αλγόριθµος; Πως αξιολογείται ένας αλγόριθµος; Παύλος Εφραιµίδης pefraimi@ee.duth.gr Αλγόριθµοι Εισαγωγικές Έννοιες

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

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε Άπληστους Αλγόριθµους Στοιχεία άπληστων αλγορίθµων Το πρόβληµα επιλογής εργασιών ΕΠΛ 232

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

Εισαγωγή στη γλώσσα UML

Εισαγωγή στη γλώσσα UML Κεφάλαιο 1 o Εισαγωγή στη γλώσσα UML 1.1 Προσθέτοντας μια νέα μέθοδο Στις πρώτες εποχές των υπολογιστών, οι προγραμματιστές συνήθιζαν να περιορίζονται στην ανάλυση σε βάθος των προβλημάτων που αντιμετώπιζαν.

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

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

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

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

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

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

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

Atlantis - Νέο user interface

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

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

Η Γλώσσα Προγραµµατισµού 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 Θα

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

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα ΕΙΣΑΓΩΓΗ ΣΤΗ UML UML Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις ιαγράµµατα Παραδείγματα Ορισμός του μοντέλου Αποτελεί µια αφηρηµένη περιγραφή ενός Φυσικού συστήµατος. Αποτελεί ένα σχέδιο για την

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

4.3. Γραµµικοί ταξινοµητές

4.3. Γραµµικοί ταξινοµητές Γραµµικοί ταξινοµητές Γραµµικός ταξινοµητής είναι ένα σύστηµα ταξινόµησης που χρησιµοποιεί γραµµικές διακριτικές συναρτήσεις Οι ταξινοµητές αυτοί αναπαρίστανται συχνά µε οµάδες κόµβων εντός των οποίων

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

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

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

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

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

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα Η Υλοποίηση της Επικοινωνίας στα Κατανεµηµένα Συστήµατα ιαφάνειες στα πλαίσια του µαθήµατος: Κατανεµηµένα Συστήµατα Ε Εξάµηνο, Τµήµα Πληροφορικής και Τεχνολογίας Υπολογιστών, ΤΕΙ Λαµίας Πέτρος Λάµψας 2002

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Ενότητα 1: Εισαγωγή στις Βάσεις Δεδομένων. Αθανάσιος Σπυριδάκος Διοίκηση Επιχειρήσεων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

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

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

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

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στην Πληροφορική 1 Γενικές πληροφορίες Εισαγωγή στην Πληροφορική ιδασκαλία: Παναγιώτης Χατζηδούκας Email:

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

Είναι το ηλεκτρικό ρεύµα διανυσµατικό µέγεθος;

Είναι το ηλεκτρικό ρεύµα διανυσµατικό µέγεθος; Είναι το ηλεκτρικό ρεύµα διανυσµατικό µέγεθος; Για να εξετάσουµε το κύκλωµα LC µε διδακτική συνέπεια νοµίζω ότι θα πρέπει να τηρήσουµε τους ορισµούς που δώσαµε στα παιδιά στη Β Λυκείου. Ας ξεκινήσουµε

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

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

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

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

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

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

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

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

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

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

ζωγραφίζοντας µε τον υπολογιστή

ζωγραφίζοντας µε τον υπολογιστή ζωγραφίζοντας µε τον υπολογιστή Μια από τις εργασίες που µπορούµε να κάνουµε µε τον υπολογιστή είναι και η ζωγραφική. Για να γίνει όµως αυτό πρέπει ο υπολογιστής να είναι εφοδιασµένος µε το κατάλληλο πρόγραµµα.

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

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

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

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

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

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

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

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

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στην UML. Βασίλειος Βεσκούκης

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στην UML. Βασίλειος Βεσκούκης Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων Εισαγωγή στην UML Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@unipi.gr v.vescoukis@cs.ntua.gr

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

Εισαγωγή στην Επιστήµη των Η/Υ

Εισαγωγή στην Επιστήµη των Η/Υ Εισαγωγή στην Επιστήµη των Η/Υ Εισαγωγή στην Επιστήµη των Η/Υ Εισαγωγή Καθ. Κ. Κουρκουµπέτης Σηµείωση: Οι διαφάνειες βασίζονται σε µεγάλο βαθµό σε αυτές που συνοδεύονται µε το προτεινόµενο σύγγραµµα. 1

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

Πίνακες, περιγράµµατα και σκίαση

Πίνακες, περιγράµµατα και σκίαση Πίνακες, περιγράµµατα και σκίαση Οι πίνακες Οι πίνακες είναι ορθογώνια πλαίσια που χωρίζονται σε γραµµές και στήλες. Η τοµή µιας γραµµής µε µια στήλη προσδιορίζει ένα κελί. Τα στοιχεία, που παρουσιάζουµε,

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

Εισαγωγή στην Επιστήµη των Η/Υ

Εισαγωγή στην Επιστήµη των Η/Υ Εισαγωγή στην Επιστήµη των Η/Υ Καθ. Κ. Κουρκουµπέτης Οι διαφάνειες βασίζονται σε µεγάλο βαθµό σε αυτές που συνοδεύονται µε το προτεινόµενο σύγγραµµα. 1 Εισαγωγή στην Επιστήµη των Η/Υ Εισαγωγή 2 ΚΕΦΑΛΑΙΟ

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

Ως ανάπτυξη προϊόντος ορίζεται όλο το σύνολο των δραστηριοτήτων από την έρευνα αγοράς, µέχρι την παράδοσή του στον πελάτη.

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

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

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

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

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

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

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

o AND o IF o SUMPRODUCT

o AND o IF o SUMPRODUCT Πληροφοριακά Εργαστήριο Management 1 Information Συστήματα Systems Διοίκησης ΤΕΙ Τμήμα Ελεγκτικής Ηπείρου Χρηματοοικονομικής (Παράρτημα Πρέβεζας) και Αντικείµενο: Μοντελοποίηση προβλήµατος Θέµατα που καλύπτονται:

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

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/ Τεχνητή Νοημοσύνη 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

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

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

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

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

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

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

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

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

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

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

Τυπικές χρήσεις της Matlab

Τυπικές χρήσεις της Matlab Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

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

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

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

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

Outlook Express-User Instructions.doc 1

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

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

MEGASOFT ΤΜΗΜΑ ΥΠΟΣΤΗΡΙΞΗΣ. Οδηγός Ρυθµίσεων Συγχρονισµού PrismaWin Pos Sync

MEGASOFT ΤΜΗΜΑ ΥΠΟΣΤΗΡΙΞΗΣ. Οδηγός Ρυθµίσεων Συγχρονισµού PrismaWin Pos Sync MEGASOFT ΤΜΗΜΑ ΥΠΟΣΤΗΡΙΞΗΣ Οδηγός Ρυθµίσεων Συγχρονισµού PrismaWin Pos Sync Ρυθµίσεις Συγχρονισµού Pos Sync Η διαδικασία του συγχρονισµού γίνεται από τον Η/Υ που έχει το BackOffice. Βασική προϋπόθεση για

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΞΑΜΗΝΟ Η ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΦΟΙΤΗΤΗ : ΜΟΣΧΟΥΛΑ ΟΛΓΑ ΑΡΙΘΜΟΣ ΜΗΤΡΩΟΥ : 30/02 ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ : ΥΛΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΟΣ ΙΑΧΕΙΡΙΣΗΣ ΣΥΝΕ ΡΙΩΝ ΜΕ ΧΡΗΣΗ

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΚΕΝΤΡΟ ΙΑΧΕΙΡΙΣΗΣ ΙΚΤΥΩΝ. Εγχειρίδιο χρήσης των υπηρεσιών τηλεκπαίδευσης του Πανεπιστηµίου Ιωαννίνων. Ασύγχρονη τηλεκπαίδευση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΚΕΝΤΡΟ ΙΑΧΕΙΡΙΣΗΣ ΙΚΤΥΩΝ. Εγχειρίδιο χρήσης των υπηρεσιών τηλεκπαίδευσης του Πανεπιστηµίου Ιωαννίνων. Ασύγχρονη τηλεκπαίδευση Εγχειρίδιο χρήσης των υπηρεσιών τηλεκπαίδευσης του Πανεπιστηµίου Ιωαννίνων Ασύγχρονη τηλεκπαίδευση Feb 2008 1 Πίνακας Περιεχοµένων 1. Εισαγωγή...3 ηµιουργία νέου λογαριασµού χρήστη...3 2. Η οθόνη του συστήµατος...4

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

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

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

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

Οδηγίες για το Βιβλίο Κοστολογίου στα Γ κατηγορίας βιβλία

Οδηγίες για το Βιβλίο Κοστολογίου στα Γ κατηγορίας βιβλία Οδηγίες για το Βιβλίο Κοστολογίου στα Γ κατηγορίας βιβλία Για τις οικοδοµικές εταιρίες στις οποίες τηρούµε βιβλίο Κοστολογίου θα πρέπει να ακολουθήσουµε τα παρακάτω βήµατα: 1. Από το menu Παράµετροι &

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

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112 Πλωτάρχης Γ. ΚΑΤΣΗΣ ΠΝ Γιατί χρησιµοποιούµε δίκτυα? Δίκτυο Σύνολο Η/Υ και συσκευών Συνδεδεµένα µε κάποιο µέσο Stand-alone

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

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

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

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

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

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

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

Αρχιτεκτονικές Συστημάτων

Αρχιτεκτονικές Συστημάτων ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Αρχιτεκτονικές Συστημάτων Κατερίνα Πραματάρη Αρχιτεκτονικές Συστημάτων Σχεδίαση και Αρχιτεκτονική Συστήματος Αρχιτεκτονική Πελάτη-Εξυπηρετητή

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

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο 2015. Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο 2015 Δοµές Δεδοµένων - Εργασία 2 Διδάσκων: E. Μαρκάκης Ταξινόµηση και Ουρές Προτεραιότητας Σκοπός της 2 ης εργασίας είναι η εξοικείωση

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

Ενότητα 12 (κεφάλαιο 28) Αρχιτεκτονικές Εφαρμογών

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

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

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Γραµµικός Προγραµµατισµός - Μέθοδος Simplex Η πλέον γνωστή και περισσότερο χρησιµοποιηµένη µέθοδος για την επίλυση ενός γενικού προβλήµατος γραµµικού προγραµµατισµού, είναι η µέθοδος Simplex η οποία αναπτύχθηκε

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK SIMULINK ρ. Γεώργιος Φ. Φραγκούλης Καθηγητής ver. 0.2 10/2012 Εισαγωγή στο Simulink Το SIMULINK είναι ένα λογισµικό πακέτο που επιτρέπει τη µοντελοποίηση, προσοµοίωση οίωση

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

(GNU-Linux, FreeBSD, MacOsX, QNX

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

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

Προγραµµατισµός Η/Υ. Μέρος2

Προγραµµατισµός Η/Υ. Μέρος2 Προγραµµατισµός Η/Υ Μέρος2 Περιεχόμενα Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής Αλγόριθμος Ψευδοκώδικας Παραδείγματα Αλγορίθμων Γλώσσες προγραμματισμού 2 Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής

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

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

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

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

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

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

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

Εισαγωγή ΕΙΣΑΓΩΓΗ ΣΤΑ ΓΣΠ

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

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

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

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

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

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

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

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

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

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

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοηµοσύνη Ι» 7ο Φροντιστήριο 15/1/2008

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοηµοσύνη Ι» 7ο Φροντιστήριο 15/1/2008 Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοηµοσύνη Ι» 7ο Φροντιστήριο 5//008 Πρόβληµα ο Στα παρακάτω ερωτήµατα επισηµαίνουµε ότι perceptron είναι ένας νευρώνας και υποθέτουµε, όπου χρειάζεται, τη χρήση δικτύων

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

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή.

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή. Η Αριθµητική Ανάλυση χρησιµοποιεί απλές αριθµητικές πράξεις για την επίλυση σύνθετων µαθηµατικών προβληµάτων. Τις περισσότερες φορές τα προβλήµατα αυτά είναι ή πολύ περίπλοκα ή δεν έχουν ακριβή αναλυτική

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

Οπτική αντίληψη. Μετά?..

Οπτική αντίληψη. Μετά?.. Οπτική αντίληψη Πρωτογενής ερεθισµός (φυσικό φαινόµενο) Μεταφορά µηνύµατος στον εγκέφαλο (ψυχολογική αντίδραση) Μετατροπή ερεθίσµατος σε έννοια Μετά?.. ΓΙΑ ΝΑ ΚΑΤΑΝΟΗΣΟΥΜΕ ΤΗΝ ΟΡΑΣΗ ΠΡΕΠΕΙ ΝΑ ΑΝΑΛΟΓΙΣΤΟΥΜΕ

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