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

Μέγεθος: 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, ιαθέσιµο στο James O. Coplien, Software Patterns, ιαθέσιµο στο 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 Γιατί µοντελοποιούµε; Ησηµασία της µοντελοποίησης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014 .. Μεθοδολογία Προγραμματισμού Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία

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

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

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

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

14 Πρότυπα Σχεδίασης συνέχεια

14 Πρότυπα Σχεδίασης συνέχεια 14 Πρότυπα Σχεδίασης συνέχεια Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Καλές πρακτικές δόμησης του κώδικα 2 Πρότυπο σχεδίασης

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 15: Σχεδίαση Εφαρμογών Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

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

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

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

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

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

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού Γενικά Η αρχιτεκτονική ανάπτυξης τους πληροφοριακού συστήµατος Γραµµατεία 2000 υποσύστηµα διαχείρισης προσωπικού

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

Στόχοι της Πτυχιακής

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ ΕΠΛ 035 - ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΓΙΑ ΗΛΕΚΤΡΟΛΟΓΟΥΣ ΜΗΧΑΝΙΚΟΥΣ ΚΑΙ ΜΗΧΑΝΙΚΟΥΣ ΥΠΟΛΟΓΙΣΤΩΝ Ακαδηµαϊκό έτος 2017-2018 Υπεύθυνος εργαστηρίου: Γεώργιος

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

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

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

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

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

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

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

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου (νέο βιβλίο Πληροφορικής Γυµνασίου Αράπογλου, Μαβόγλου, Οικονοµάκου, Φύτρου) Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις 1. Τι είναι ο Αλγόριθµος;

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

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

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

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

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

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

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

Ειδικά θέματα τεχνολογίας λογισμικού

Ειδικά θέματα τεχνολογίας λογισμικού Ειδικά θέματα τεχνολογίας λογισμικού Σχεδιασμός λογισμικού Διομήδης Σπινέλλης Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας Οικονομικό Πανεπιστήμιο Αθηνών dds@aueb.gr http://www.dmst.aueb.gr/dds @CoolSWEng

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Βάσεις Δεδομένων Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Βάσεις Δεδομένων», 2015-2016 Κεφάλαιο 2: Περιβάλλον Βάσεων Δεδομένων Μοντέλα Δεδομένων 2.1

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

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές Ελληνικό Ανοικτό Πανεπιστήμιο ΓΤΠ61 Πληροφορική Πολυμέσα Αγγελική Μαζαράκη Τι είναι η UML Είναι μια γραφική γλώσσα μοντελοποίησης συστημάτων.

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

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

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

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

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

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

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

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

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

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

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

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

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

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

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

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης 14η ιάλεξη Προχωρημένα θέματα σχεδίασης 1 ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι κ. ΠΕΤΑΛΙΔΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

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

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

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

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

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο 08 Η γλώσσα UML I Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Unified Modeling Language

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

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

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

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

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός 06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αφαίρεση Abstraction "Η εννοιολογική

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

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

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

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

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

Τεχνολογίες Υλοποίησης Αλγορίθµων Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &

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

ΛΟΓΙΣΜΙΚΟ (software)

ΛΟΓΙΣΜΙΚΟ (software) ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων

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

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

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

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

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

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

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

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής Εισαγωγή στις Βάσεις Δεδομένων Εισαγωγή στις Βάσεις Δεδομένων Ορισμός Βάσης Δεδομένων Σύστημα Διαχείρισης Βάσης Δεδομένων ΣΔΒΔ (DBMS) Χαρακτηριστικά προσέγγισης συστημάτων αρχειοθέτησης Χαρακτηριστικά

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

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Κύκλος Ανάπτυξης Προγράµµατος 1. Συγγραφή και Μεταγλώττιση ενός προγράµµατος 2. Εκτέλεση του προγράµµατος

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

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Week. 6: Java Collections

Week. 6: Java Collections Week 6: Java Collections Συλλογές δεδοµένων [collections] Εβδοµάδα 6: Συλλογές δεδοµένων στην Java Οι συλλογές [collections] (αναφέρονται και ως «υποδοχείς δεδοµένων» [containers]) είναι κλάσεις που χρησιµοποιούνται

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

Atlantis - Νέο user interface

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

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

Παιδαγωγική προσέγγιση: Πρόταση για την διδασκαλία της έννοιας αλγόριθµός στο περιβάλλον MicroWorlds Pro

Παιδαγωγική προσέγγιση: Πρόταση για την διδασκαλία της έννοιας αλγόριθµός στο περιβάλλον MicroWorlds Pro Παιδαγωγική προσέγγιση: Πρόταση για την διδασκαλία της έννοιας αλγόριθµός στο περιβάλλον MicroWorlds Pro Το «Φύλλο Εργασίας» για τους µαθητές Το παρακάτω φύλλο εργασίας µπορεί να χρησιµοποιηθεί ως εισαγωγικό

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

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

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

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

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

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

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

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια. Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων 21/11/2016 Τεχνολογία Λογισμικού & Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Ανάλυση Συστημάτων Object Diagrams Διαγράμματα Αντικειμένων

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

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Διαδικασίες παραγωγής λογισμικού Περιεχόμενα Παρουσίαση μοντέλων διεργασίας ανάπτυξης λογισμικού Περιγραφή τριών γενικών μοντέλων διεργασίας ανάπτυξης λογισμικού Γενική περιγραφή των διαδικασιών που περιλαμβάνονται

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

Αρχικοποίηση Αντικειµένων & Κλάσεων στη Java Object Instantiation & Class Initialisation Κώστας Σαΐδης saiko@di.uoa.gr http://daemon.di.uoa.gr/daemon/issue4 Μάρτιος 2004 Η Αρχή είναι το ήµισυ του Παντός

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal Δοµή προγράµµατος 1. Δοµή προγράµµατος program όνοµα_προγράµµατος(αρχείο_1, αρχείο_2,...αρχείο_ν); ΕΠΙΚΕΦΑΛΙΔΑ ΒΙΒΛΙΟΘΗΚΕΣ uses όνοµα_βιβλιοθήκης,όνοµα_βιβλιοθήκης;

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

Rational Unified Process:

Rational Unified Process: ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ - Μεταπτυχιακό µάθηµα: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΕΙΣ ΜΕΘΟ ΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΛΟΓΙΣΜΙΚΟΥ Καθ. Ε. Σκορδαλάκης, ρ. Β. Βεσκούκης Rational Unified

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

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που 1 Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που μπορούμε να χρησιμοποιήσουμε σε μία JDBC εφαρμογή. Υπάρχει

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

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

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

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

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

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

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

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

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

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

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

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Τεχνολογία Λογισμικού 8ο Εξάμηνο 2018 19 Unified Modeling Language II Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Μοντελοποίηση δομής Διαγράμματα κλάσεων Class diagrams

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

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

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

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

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

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

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

Διαχείριση Πληροφοριακών Συστημάτων

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

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

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

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

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

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

ΚΕΦΑΛΑΙΟ 3 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΔΙΑΤΑΞΕΙΣ ΛΟΓΙΣΜΙΚΟΥ. Έννοιες-κλειδιά. Σύνοψη

ΚΕΦΑΛΑΙΟ 3 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΔΙΑΤΑΞΕΙΣ ΛΟΓΙΣΜΙΚΟΥ. Έννοιες-κλειδιά. Σύνοψη ΚΕΦΑΛΑΙΟ 3 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΔΙΑΤΑΞΕΙΣ ΛΟΓΙΣΜΙΚΟΥ Σκοπός του κεφαλαίου είναι η εισαγωγή της έννοιας της διάταξης λογισμικού, ως αρχιτεκτονικής δόμησης των υπολογιστικών πόρων και της ανάθεσης σε αυτούς συστατικών

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

Επιχειρηµατικές ιαδικασίες: Εισαγωγικές Έννοιες & Αρχικά στάδια µοντελοποίησης

Επιχειρηµατικές ιαδικασίες: Εισαγωγικές Έννοιες & Αρχικά στάδια µοντελοποίησης ΟΙΚΟΝΟΜΙΚΌ ΠΑΝΕΠΙΣΤΉΜΙΟ ΑΘΗΝΏΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ Επιχειρηµατικές ιαδικασίες: Εισαγωγικές Έννοιες & Αρχικά στάδια µοντελοποίησης 1o φροντιστήριο στο µάθηµα Ανάλυση και µοντελοποίηση

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

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

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

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

Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ. Υ7ΐοβάλλεται στην

Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ. Υ7ΐοβάλλεται στην Κατηγοριοποίηση Σχεδιαστικών Προτύπων Αντικειμενοστρεφούς Σχεδίασης Βασισμένη σε Μετρικές Ποιότητας Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ Υ7ΐοβάλλεται στην ορισθείσα από την Γενική Συνέλευση Ειδικής Σύνθεσης

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

Ατοµική ιπλωµατική Εργασία

Ατοµική ιπλωµατική Εργασία Ατοµική ιπλωµατική Εργασία ΣΧΕ ΙΑΣΤΙΚΑ ΠΡΟΤΥΠΑ ΓΙΑ ΤΙΣ ΕΡΕΥΝΗΤΙΚΕΣ ΠΕΡΙΟΧΕΣ ΤΗΣ ΑΛΛΗΛΕΠΙ ΡΑΣΗΣ ΑΝΘΡΩΠΟΥ-ΥΠΟΛΟΓΙΣΤΗ, ΤΑ ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΚΑΙ ΤΟΥ ΣΧΕ ΙΑΣΜΟΥ ΙΣΤΟΣΕΛΙ ΩΝ Λοΐζος Τσιάτταλος ΠΑΝΕΠΙΣΤΗΜΙΟ

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

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

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

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

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

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

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

Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ. Ασκήσεις 1-2 Εισαγωγή

Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ. Ασκήσεις 1-2 Εισαγωγή Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΒΙΟΜΗΧΑΝΙΚΟΙ ΑΥΤΟΜΑΤΙΣΜΟΙ Εφαρµογές Προγραµµατιζόµενων Λογικών Ελεγκτών-Εργαστήριο Εργαστηριακός Συνεργάτης: Βέλλος Κων/νος Ασκήσεις 1-2 Εισαγωγή

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

ΚΕΦΑΛΑΙΟ 4 ΤΟ ΕΡΓΑΛΕΙΟ SOLVER

ΚΕΦΑΛΑΙΟ 4 ΤΟ ΕΡΓΑΛΕΙΟ SOLVER ΚΕΦΑΛΑΙΟ 4 ΤΟ ΕΡΓΑΛΕΙΟ SOLVER 4.1. ΕΙΣΑΓΩΓΗ Με την "Επίλυση", µπορείτε να βρείτε τη βέλτιστη τιµή για τον τύπο ενός κελιού το οποίο ονοµάζεται κελί προορισµού σε ένα φύλλο εργασίας. Η "Επίλυση" λειτουργεί

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

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Τεχνολογία Λογισμικού Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

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

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα Αντικειµενοστραφής Προγραµµατισµός Αντικείµενα Ιεραρχία κλάσεων. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του this και του super Αντικειµενοστραφής

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