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



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

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

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

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

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

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

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

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

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

Ενότητα 3 (κεφάλαιο 16) Επαναχρησιμοποίηση Λογισμικού

Rational Unified Process:

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

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

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

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

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

UML: Unified modelling language

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 8 ο & 9 ο Εργαστήριο -

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

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

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

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

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Ανάλυση Συστηµάτων και Τεχνολογία Λογισµικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

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

ΜΕΤΑΒΑΤΙΚΕΣ ΠΡΟΫΠΟΘΕΣΕΙΣ ΑΠΟΚΤΗΣΗΣ ΠΤΥΧΙΟΥ

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

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

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

Εισαγωγή. Τμήμα Μηχανικών Σχεδίασης Προϊόντων και Συστημάτων, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ. Παναγιώτης Κουτσαμπάσης

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

Περιγραφή Μαθήματος ΠΕΡΙΓΡΑΦΗ ΜΑΘΗΜΑΤΟΣ. Γεώργιος Παπαϊωάννου ( )

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

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

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΗΣ ΠΟΙΟΤΗΤΑΣ ΤΟΥ ΕΠΙΛΕΓΜΕΝΟΥ ΚΩΔΙΚΑ» Πτυχιακή εργασία του φοιτητή Γκορτζή Αντωνίου

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

Διαγράμματα UML για την τεκμηρίωση της Αρχιτεκτονικής

e-κπαίδευση Πλατφόρµα Ασύγχρονης Τηλε-κπαίδευσης Οδηγίες χρήσης για τους σπουδαστές του ΤΕΙ Αθήνας και τους επισκέπτες της δικτυακής πύλης e-κπαίδευση

28 Πολυπρακτορικά Συστήµατα

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

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

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

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

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

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

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

XP μέθοδος για τη Διαχείριση Έργων Λογισμικού

U.M.L. Patterns (business, analysis, design)

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

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

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

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

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

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

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

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

Συστήµατα Τηλεκπαίδευσης: Κύκλος ζωής εκπαιδευτικού υλικού

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

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

Περιπτώσεις Χρήσης για το Π.Σ. ΜΟ.ΔΙ.Π. Κρήτης

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

Μεθοδολογίες Παραγωγής Λογισµικού

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

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

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

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

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

Αλεξάνδρειο Τεχνολογικό Εκπαιδευτικό Ίδρυµα Θεσσαλονίκης Σχολή Τεχνολογικών Εφαρµογών Τµήµα Πληροφορικής

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

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο

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


Πληροφορική 2. Τεχνολογία Λογισμικού

Αρχές Προγραμματισμού Υπολογιστών

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

Εργαλεία CASE. Computer Assisted Systems Engineering. Δρ Βαγγελιώ Καβακλή. Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου

Πληροφοριακού Συστήματος Ενημέρωσης Καιρικών Συνθηκών

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

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

Προγραµµατισµός Συστηµάτων Πραγµατικού Χρόνου

ΔΕ10: Πληροφοριακά Συστήματα Διοίκησης IΙ Εργαστήριο # 2

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

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

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

1. ΕΙΣΑΓΩΓΗ 2. ΠΕΡΙΓΡΑΦΗ

Μάθημα «Υπηρεσίες Ηλεκτρονικής Υγείας»

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

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

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

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

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων ιαχείριση ικτύων ρ.αρίστη Γαλάνη Ακαδημαϊκό Έτος

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

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

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

Transcript:

Ενότητα 6 Μοτίβα Σχεδίασης (Design Patterns) Ορισµοί βασικές έννοιες. Σηµαντικά µοτίβα σχεδίασης: Παρατηρητής (Observer). Πρόσοψη (Façade). Προσαρµογέας (Adapter). Πληρεξούσιος (Proxy). Μοναχοπαίδι (Singleton). ιακοσµητής (Decorator). Παρατηρήσεις. Άσκηση. Περισσότερες πληροφορίες. Βιβλιογραφία. Ορισµοί Βασικές Έννοιες (1) Τί είναι τα µοτίβα σχεδίασης; Είναι λύσεις σε συνηθισµένα προβλήµατα που παρουσιάζονται κατά τη σχεδίαση υπολογιστικών συστηµάτων, οι οποίες έχει αξιολογηθεί ότι αξίζει να τεκµηριωθούν, έτσι ώστε όσοι ασχολούνται µε την ανάπτυξη νέων συστηµάτων να µπορούν να τις εφαρµόζουν για την επίλυση των ίδιων προβληµάτων όταν καλούνται να τα αντιµετωπίσουν. Είναι σύνολα από κλάσεις (ή από αντικείµενα) που αλληλεπιδρούν µεταξύ τους, έτσι ώστε να χαρακτηρίζονται από µια συγκεκριµένη συµπεριφορά. Αποτελούν τρόπους για την περιγραφή άριστων πρακτικών και καλών προσεγγίσεων σχεδίασης, και ενσωµατώνουν (σχεδιαστική) πείρα µε τέτοιο τρόπο, ώστε αυτή να είναι δυνατό να επαναχρησιµοποιηθεί από άλλους.

Ορισµοί Βασικές Έννοιες (2) Πρώτος πραγµατικός κατάλογος από 23 µοτίβα σχεδίασης: Design Patterns Elements of Reusable Object-Oriented Software, Gamma, Helm, Johnson, Vlissides (Gang of Four, GoF). Κατηγορίες µοτίβων σχεδίασης: Σχετικές µε δηµιουργία (creational): ιαφορετικοί τρόποι για τη δηµιουργία αντικειµένων µε συγκεκριµένες ιδιότητες. Σχετικές µε δοµή (structural): Επιτρέπουν την αποσύνδεση (decoupling) της διεπαφής από την υλοποίηση. Σχετικές µε συµπεριφορά (behavioural): Επιτρέπουν την παροχή συγκεκριµένων τύπων συµπεριφοράς µε προτυποποιηµένο τρόπο. Τα µοτίβα σχεδίασης αποσπούνται από καλές προσεγγίσεις σχεδίασης από έµπειρους µηχανικούς λογισµικού. Σηµαντικά Μοτίβα Σχεδίασης Παρατηρητής (Observer). Πρόσοψη (Façade). Προσαρµογέας (Adapter). Πληρεξούσιος (Proxy). Μοναχοπαίδι (Singleton). ιακοσµητής (Decorator).

Μοτίβο Σχεδίασης Παρατηρητής (1) Να ορίσετε µια εξάρτηση ένα-προς-πολλά (one-to-many) ανάµεσα σε αντικείµενα, έτσι ώστε όταν αλλάζει η κατάσταση ενός αντικειµένου, όλα τα αντικείµενα που εξαρτώνται από αυτό να το µαθαίνουν και να ενηµερώνονται αυτόµατα. Για το λόγο αυτό: Γίνεται χρήση ενός συνόλου από συνεργαζόµενες κλάσεις. Είναι ανάγκη να διατηρείται η συνέπεια ανάµεσα σε σχετιζόµενα αντικείµενα. Αυτό δεν µπορεί να επιτευχθεί όταν τα αντικείµενα είναι στενά συνδεδεµένα µεταξύ τους (tightly coupled) πρόβληµα επαναχρησιµοποίησης (reusability). Παράδειγµα Οι διεπαφές χρήστη (GUIs) που διαχωρίζουν τις σχετικές κλάσεις (visual) από τα δεδοµένα. Μοτίβο Σχεδίασης Παρατηρητής (2) Παρατηρητές a b c x 10 20 30 b y 50 30 20 z 80 30 50 a b c a c Υποκείµενο a = 50 b = 30 c = 20 Γνωστοποίηση αλλαγής Αιτήσεις, Τροποποιήσεις Παρατήρηση: Οι πιο πάνω κλάσεις µπορούν να επαναχρησιµοποιηθούν ανεξάρτητα η µία από την άλλη δε γνωρίζει η µία για την άλλη.

Μοτίβο Σχεδίασης Παρατηρητής (3) Οι κλάσεις εµφάνισης και διαχείρισης των δεδοµένων εξαρτώνται από τα δεδοµένα του αντικειµένου στο κάτω µέρος και πρέπει να ενηµερώνονται όταν αλλάζει η κατάστασή του. εν υπάρχουν περιορισµοί στον αριθµό των εξαρτώµενων αντικειµένων. Το µοτίβο σχεδίασης Παρατηρητής περιγράφει πώς να δηµιουργηθούν και να διατηρηθούν τέτοιες σχέσεις. Όλοι οι παρατηρητές ενηµερώνονται όποτε το υποκείµενο αλλάξει κατάσταση. Μοτίβο Σχεδίασης Παρατηρητής (4) Πότε χρησιµοποιείται αυτό το µοτίβο σχεδίασης; Όταν ένα αφηρηµένο σενάριο έχει δύο τµήµατα, το ένα εξαρτώµενο από το άλλο, και είναι επιθυµητό να επαναχρησιµοποιηθούν τα τµήµατα αυτά ανεξάρτητα. Όταν µια αλλαγή σε ένα αντικείµενο απαιτεί την αλλαγή και άλλων αντικειµένων και δεν είναι γνωστό πόσα ακριβώς αντικείµενα χρειάζεται να αλλάξουν. Όταν ένα αντικείµενο είναι επιθυµητό να µπορεί να ενηµερώνει άλλα αντικείµενα, χωρίς να χρειάζεται να κάνει υποθέσεις για το ποιά ακριβώς είναι αυτά τα αντικείµενα.

Μοτίβο Σχεδίασης Πρόσοψη (1) Είναι επιθυµητή η παροχή µιας ενιαίας διεπαφής σε ένα σύνολο από διεπαφές ενός υποσυστήµατος. Το συγκεκριµένο µοτίβο σχεδίασης ορίζει µια υψηλού επιπέδου διεπαφή που κάνει το υποσύστηµα ευκολότερο στη χρήση. Για το λόγο αυτό: Γίνεται χρήση πολλών κλάσεων που επικοινωνούν µεταξύ τους. Είναι επιθυµητή η ελάττωση της πολυπλοκότητας. εν είναι αναγκαία η γνώση όλων των διαφορετικών τρόπων αλληλεπίδρασης και των αναγκαίων µορφών επικοινωνίας. Μοτίβο Σχεδίασης Πρόσοψη (2) Κλάσεις Πελάτες Facade Κλάσεις Υποσυστήµατος Object-Oriented Modeling

Μοτίβο Σχεδίασης Πρόσοψη (3) Πότε χρησιµοποιείται αυτό το µοτίβο σχεδίασης; Όταν είναι επιθυµητή η παροχή µιας απλής διεπαφής σε ένα πολύπλοκο υποσύστηµα. Όταν υπάρχουν πολλές εξαρτήσεις ανάµεσα στους πελάτες και στις κλάσεις υλοποίησης και είναι επιθυµητή η αποσύνδεση (decoupling) του υποσυστήµατος από τους πελάτες και άλλα υποσυστήµατα ενίσχυση της ανεξαρτησίας των κλάσεων και της φορητότητας. Όταν είναι επιθυµητή η διαστρωµάτωση των υποσυστηµάτων το συγκεκριµένο µοτίβο σχεδίασης προσδιορίζει σηµεία εισόδου σε κάθε στρώµα / υποσύστηµα. Μοτίβο Σχεδίασης Προσαρµογέας (1) Είναι επιθυµητή η µετατροπή της διεπαφής µιας κλάσης σε κάποια άλλη διεπαφή που περιµένει ένας πελάτης. Το συγκεκριµένο µοτίβο σχεδίασης επιτρέπει τη συνεργασία ανάµεσα σε κλάσεις που σε αντίθετη περίπτωση θα ήταν αδύνατο να συνεργαστούν λόγω ασυµβατότητας των διεπαφών τους. Χρήση του συγκεκριµένου µοτίβου σχεδίασης: Έστω ένα εργαλείο του οποίου η λειτουργικότητα περικλείεται σε µια καλά ορισµένη κλάση. Είναι επιθυµητή η επέκταση της λειτουργικότητας του εργαλείου προσθέτοντας σε αυτό ένα έτοιµο προϊόν (off-the-shelf). Οι διεπαφές είναι ασύµβατες. Παράδειγµα Χρήση έτοιµων συνιστωσών λογισµικού (components) για τον εµπλουτισµό ενός προγράµµατος.

Μοτίβο Σχεδίασης Προσαρµογέας (2) Drawing Tool Shape LineShape TextView TextShape Μοτίβο Σχεδίασης Προσαρµογέας (3) Drawing Tool Shape TextShape LineShape PolygonShape TextView

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

Μοτίβο Σχεδίασης Πληρεξούσιος (2) Το πληρεξούσιο αντικείµενο (proxy object) έχει την ίδια διεπαφή µε το υποκείµενο και διαθέτει µια αναφορά στο υποκείµενο. Το πληρεξούσιο αντικείµενο προωθεί τις αναφορές στο υποκείµενο ή απλώς υποκαθίσταται από το υποκείµενο (ανάλογα µε το σκοπό του). Μοτίβο Σχεδίασης Μοναχοπαίδι Επιτρέπει τη δηµιουργία µόνο ενός στιγµιοτύπου από µια κλάση. Λόγοι ασφαλείας. Σε κατανεµηµένα συστήµατα.

Μοτίβο Σχεδίασης ιακοσµητής Χρήση όταν είναι επιθυµητή η προσθήκη ευθυνών σε ένα µόνο αντικείµενο και όχι σε ολόκληρη την κλάση στην οποία ανήκει γίνεται µε τρόπο δυναµικό. Χρήση στην προσθήκη οπτικών χαρακτηριστικών σε αντικείµενα στα πλαίσια διεπαφών χρήστη (π.χ. scroll bars, frames, κ.λπ.). Παρατηρήσεις (1) Τα µοτίβα σχεδίασης οµαδοποιούνται σε καταλόγους µοτίβων σχεδίασης (pattern catalogues) και σε γλώσσες µοτίβων σχεδίασης (pattern languages). Κατάλογος ένα σύνολο από µοτίβα σχεδίασης που είναι δυνατό να χρησιµοποιηθούν όλα µαζί ή και ξεχωριστά. Γλώσσα Τεκµηριώνει µοτίβα σχεδίασης που εργάζονται µαζί και µπορούν να εφαρµοστούν στην επίλυση προβληµάτων σε ένα συγκεκριµένο πεδίο. Για την τεκµηρίωση των µοτίβων σχεδίασης χρησιµοποιούνται ειδικά περιγράµµατα (templates).

Παρατηρήσεις (2) Παράδειγµα περιγράµµατος (template): Όνοµα (Name) Το όνοµα του µοτίβου σχεδίασης / προτιµούνται περιγραφικά ονόµατα. Πρόβληµα (Problem) Αυτό που επιλύει το µοτίβο σχεδίασης. Πλαίσιο (Context) Το πλαίσιο της εφαρµογής του µοτίβου σχεδίασης (αρχιτεκτονικό ή επιχειρηµατικό). υνάµεις (Forces) Θέµατα που πρέπει να επιλυθούν. Λύση (Solution) Η λύση που εξισορροπεί τις δυνάµεις και ταιριάζει στο πλαίσιο. Σχεδιάγραµµα (Sketch) Συµβολικό σχεδιάγραµµα των δυνάµεων. Τελικό πλαίσιο (Resulting context) το πλαίσιο µετά την αλλαγή του από τη λύση. Ορθολογική βάση (Rationale) Ο λόγος και το κίνητρο δηµιουργίας του µοτίβου σχεδίασης. Άσκηση (1) Ένα πανεπιστήµιο υλοποιεί ένα ηλεκτρονικό σύστηµα ανακοινώσεων (blackboard system), ώστε οι φοιτητές να έχουν πρόσβαση σε πληροφορίες σχετικές µε τα µαθήµατά τους. Το τελικό σύστηµα δεν είναι ακόµη έτοιµο, αλλά η σχετική ιστοσελίδα (HTML + java applet) πρέπει να ελεγχθεί άµεσα. Ποιό µοτίβο σχεδίασης µπορεί να εφαρµοστεί στην περίπτωση αυτή; Υπάρχει πιο απλή λύση; Καθώς κάθε φοιτητής εγγράφεται ή αποχωρεί από ένα µάθηµα, κάθε σελίδα του συστήµατος που καταγράφει τα αποτελέσµατα του µαθήµατος αυτού πρέπει να ενηµερώνεται. Ποιό µοτίβο σχεδίασης µπορεί να υποστηρίξει µια κατάλληλη αρχιτεκτονική για την επίτευξη του σκοπού αυτού;

Άσκηση (2) Λόγω της µεγάλης ποικιλίας µορφών εξέτασης ενός µαθήµατος (γραπτές εξετάσεις, εργασίες, οµαδικές ασκήσεις, παρουσιάσεις, κ.λπ.) είναι επιθυµητή η παροχή µιας ενιαίας διεπαφής για την πρόσβαση στα αποτελέσµατα εξέτασης ενός µαθήµατος. Θα διατηρηθεί η απευθείας πρόσβαση στα δεδοµένα µε χρήση ιδιαίτερων κάθε φορά πρωτοκόλλων. Ποιό µοτίβο σχεδίασης είναι κατάλληλο για την περίπτωση αυτή; Περισσότερες Πληροφορίες http://hillside.net/ - Patterns tab http://web.media.mit.edu/~tpminka/patterns/ http://c2.com/cgi/wiki Βασικό βιβλίο - Design Patterns: Elements of Reusable Object- Oriented Software, Gamma, Helm, Johnson, Vlissides.

Βιβλιογραφία Bennett, Skelton, Lunn, UML, Schaum s Outline Series, 2001. Rumbaugh, Jacobson, Booch, The Unified Modeling Language Reference Manual, Addison Wesley, 1999. Pooley, Stevens, Using UML: Software Engineering with Objects and Components Addison-Wesley, 1999. T. Quatrani, Visual Modeling with Rational Rose 2000 and UML, Addison-Wesley, 2000.