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

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

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

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

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

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

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

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

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

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

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

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

Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών & Δικτύων,

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

Μαθηµατική. Μοντελοποίηση

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

Σχεδιασµός Λογισµικού

ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ Αθήνα 18/ 10/ 2001

7.2 Τεχνολογία TCP/IP

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

Εκπαιδευτικοί Στόχοι Παιδαγωγικές Στρατηγικές

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

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

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

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

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

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

Διδακτικά προβλήματα σχετικά με την έννοια της επανάληψης

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

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

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

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

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας

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

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

Διοικητική των επιχειρήσεων

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

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

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

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

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

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

Σκοπιµότητα των firewalls

16 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΗ

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

6. Διαχείριση Έργου. Έκδοση των φοιτητών

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Σχεδιασμός Οικολογικού Διαμεσολαβητή για την εποπτεία και διαχείριση δικτύου διανομής ηλεκτρικής ενέργειας

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

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

Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας

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

Η πολυπλοκότητα των θεµάτων, ο µεγάλος αριθµός των εµπλεκοµένων. κοινωνικών και οικονοµικών οµάδων και τα πολλαπλά ιεραρχικά επίπεδα όπως

Μαθησιακές δραστηριότητες με υπολογιστή

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

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό

Προοίµιο Ο Οργανισµός Θεµελιωδών ικαιωµάτων της Ευρωπαϊκής Ένωσης (FRA) και το Ευρωπαϊκό Ινστιτούτο για την Ισότητα των Φύλων (EIGE), καλούµενα εφεξής

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

Προσομοίωση Συστημάτων

Σχεδιασµός Οικολογικού ιαµεσολαβητή για την εποπτεία και διαχείριση δικτύου διανοµής ηλεκτρικής ενέργειας

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

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

05 Χρήση δεδομένων και ανατροφοδότησης για τη βελτίωση της επαγγελματικής εκπαίδευσης και κατάρτισης

ΑΝΑΛΥΣΗ Ε ΟΜΕΝΩΝ 1. ΕΙ Η Ε ΟΜΕΝΩΝ, ΣΥΛΛΟΓΗ, ΚΩ ΙΚΟΠΟΙΗΣΗ ΚΑΙ ΕΙΣΑΓΩΓΗ

8.2 Εννοιολογική χαρτογράφηση

Καταστάσεων. Καταστάσεων

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

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

Ορολογία για µελέτη...71 Πρακτική εφαρµογή Απαντήσεις... 37

5 -Τρόποιενσωµάτωσηςτης ΠεριβαλλοντικήςΕκπαίδευσης σταεκπαιδευτικάσυστήµατα

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

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

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

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

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

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

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

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

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

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

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

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

Συλλογικοί Κατάλογοι & Διαδίκτυο

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

ιαγράµµατα Αλληλεπίδρασης ιαγράµµατα Ακολουθίας ιαγράµµατα Επικοινωνίας

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

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

Επανάληψη για τις Τελικές εξετάσεις

Ειδικά Θέµατα Μάρκετινγκ Υπηρεσιών

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

ΣΧΕ ΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΩΝ ΙΑΧΕΙΡΙΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΠΟΡΩΝ

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

1 Παραστατικών Πωλήσεων

Περιπτώσεις αλλαγής Λογιστικού Σχεδίου.

ΣΧΕΔΙΑΣΗ ΔΙΑΔΡΑΣΤΙΚΟΥ ΓΡΑΦΕΙΟΥ ΜΕ ΧΡΗΣΗ ΤΗΣ LUCID

Οργάνωση Γνώσης και Νοητικά Μοντέλα

Από τη UML στον Κώδικα. Μέρος Α

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

Transcript:

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

Γενικά Εξαιρετικά σηµαντικά: η απόφαση για το που ανήκουν οι µέθοδοι, και πως αλληλεπιδρούν τα αντικείµενα Κρίσιµο βήµα στην καρδιά της ανάπτυξης ΑΣ συστήµατος Τα πρότυπα GRASP είναι: ένα βοήθηµα εκµάθησης και κατανόησης της ουσιαστικής σχεδίασης αντικειµένων, καθώς η αιτιολόγηση της προσέγγισής της γίνεται µε ένα µεθοδικό, λογικό, και επεξηγηµατικό τρόπο. Η προσέγγιση της κατανόησης και της χρησιµοποίησης των σχεδιαστικών αρχών βασίζεται στα πρότυπα και στην ανάθεση αρµοδιοτήτων. 2

ΑρµοδιότητεςκαιΜέθοδοι Η UML ορίζει µια αρµοδιότητα ως: «ένα συµβόλαιο ή υποχρέωση µιας οντότητας» Υλοποίηση µε µεθόδους (δεν είναι µέθοδος) Οι υποχρεώσεις είναι δύο τύπων: Πράξη Κάτι που κάνει µόνο του (πχ. δηµιουργία αντικειµένου, ενός υπολογισµού) Έναρξη λειτουργίας σε άλλη κλάση Έλεγχος και συντονισµός ενεργειών σε άλλες κλάσεις Γνώση σχετικά µε ιδιωτικά δεδοµένα σχετικά σε σχετιζόµενα αντικείµενα σχετικά µε πράγµατα που µπορεί να παράγει ή να υπολογίσει 3

ΣχεδιαστικάΠρότυπα (1/2) Αποτελούν ονοµατισµένα, κωδικοποιηµένα ζεύγη «προβληµάτων / λύσεων», τα οποία έχουν προταθεί από έµπειρους δηµιουργούς µε βάση συγκεκριµένες σχεδιαστικές αρχές. Παράδειγµα Παρουσίασης Προτύπου: Όνοµα προτύπου: Information Expert Λύση: Ανάθεση αρµοδιότητας σε κλάση η οποία έχει την πληροφορία για να την εκπληρώσει Πρόβληµα που επιλύει: ποια είναι η βασική αρχή ανάθεσης αρµοδιότητας σε αντικείµενα; 4

ΣχεδιαστικάΠρότυπα (2/2) Η ιδέα ενός προτύπου αναφέρεται σε επαναληπτικές εφαρµογές. εν εκφράζουν νέες ιδέες σχεδίασης, αλλά κωδικοποιούν υπάρχουσες εµπειρίες σχεδιαστικών αρχών. Όσο συχνότερα και ευρύτερα χρησιµοποιούνται τόσο καλύτερα. Τα πρότυπα έχουν δηλωτικά ονόµατα, για να: κατανοούµε και να αποµνηµονεύουµε µια έννοια, βοηθούν στην επικοινωνία µεταξύ δηµιουργών Εφαρµόζονται κατά την δηµιουργία ιαγραµµάτων Αλληλεπίδρασης και Κωδικοποίησης. 5

GRASP ΠρότυπαΣχεδίασης 1. Φορέας πληροφορίας (Information Expert) 2. ηµιουργός (Creator) 3. Υψηλή Συνοχή (High Cohesion) 4. Μειωµένη Σύζευση (Low Coupling) 5. Ελεγκτής (Controller) 6. Πολυµορφισµού 7. Indirection 8. Pure Fabrication 9. Protected Variations 6

«ΦορέαςΠληροφορίας» (1/4) Πρόβληµα: Ποια είναι η βασική αρχή ανάθεσης αρµοδιότητας σε αντικείµενα; Λύση: Ανάθεση αρµοδιότητας στον φορέα της πληροφορίας µια κλάση η οποία έχει την πληροφορία για να εκπληρώσει την αρµοδιότητα Συµβάλει στην ευκολία κατανόησης, συντήρησης, επέκτασης, επαναχρησιµοποίησης Παράδειγµα: Που θα δηµιουργηθεί το Γενικό σύνολο; 7

«ΦορέαςΠληροφορίας» (2/4) 8

«ΦορέαςΠληροφορίας» (3/4) 9

«ΦορέαςΠληροφορίας» (4/4) Οι αρµοδιότητες αποφασίζονται στα ιαγράµµατα Αλληλεπίδρασης Το πρότυπο εκφράζει το αυτονόητο, ότι τα αντικείµενα λειτουργούν σύµφωνα µε τις πληροφορίες που φέρουν ή κατέχουν Πλεονεκτήµατα: Τηρείται η αρχή της ενθυλάκωσης πληροφοριών Η συµπεριφορά κατανέµεται σε διάφορες κλάσεις υποστηρίζοντας τη συνοχή και σύζευξη 10

«ηµιουργός» (Creator) (1/3) Λύση: Ανάθεση στην κλάση Β την αρµοδιότητα να δηµιουργήσει ένα στιγµιότυπο της κλάσης Α, εάν συντρέχει ένας από τους κάτωθι λόγους: 1. η Β συνθέτει αντικείµενα της Α 2. η Β περιλαµβάνει (συσσωµατώνει) αντικείµενα της Α 3. η Β καταγράφει στιγµιότυπα αντικειµένων της Α 4. η Β χρησιµοποιεί αντικείµενα της Α 5. η Β έχει τα δεδοµένα αρχικοποίησης αντικειµένων της Α Για περισσότερο από ένα λόγους να χρησιµοποιηθεί το 1, και 2 Πρόβληµα: ποιος είναι αρµόδιος για την δηµιουργία νέου στιγµιότυπου (αντικειµένου) κλάσης; Παράδειγµα: Ποιος... για τη δηµιουργία της SalesLineItem; Πλεονέκτηµα: Ελάχιστη δυνατή Σύνδεση 11

«ηµιουργός» (Creator) (2/3) 12

«ηµιουργός» (Creator) (3/3) 13

«ΜείωσηΣύζευξης» (Low Coupling) (1/5) Σύζευξη: µέτρο του βαθµού διασύνδεσης, γνώσης ή εξάρτησης µε άλλα αντικείµενα Λύση: Ανάθεση µιας αρµοδιότητας ούτως ώστε η σύζευξη να παραµένει η ελάχιστη δυνατή Πρόβληµα: πως να διασφαλιστεί περιορισµένη εξάρτηση, περιορισµένες επιπτώσεις από αλλαγές, και αυξηµένη επαναχρησιµοποίηση; Προβλήµατα αυξηµένου βαθµού σύζευξης: Οι τοπικές αλλαγές επιφέρουν επιπτώσεις (αλλαγές) σε σχετιζόµενες κλάσεις υσκολία κατανόησης µεµονωµένα υσκολότερη επαναχρησιµοποίηση 14

«ΜείωσηΣύζευξης» (Low Coupling) (3/5) Παράδειγµα: Μεταξύ 3 εννοιολογικών κλάσεων (Payment, Sale, Register), ποια κλάση θα διασύνδεαι το στιγµιότυπο της Payment µε τη Sale; 15

«ΜείωσηΣύζευξης» (Low Coupling) (4/5) 16

«ΜείωσηΣύζευξης» (Low Coupling) (5/5) Η Ελάχιστη Σύζευση είναι αξιολογητική αρχή Συνήθης µορφές Σύζευσης σε C++, Java, C# 1. TypeX έχει χαρακτηριστικό-αναφορά του TypeY 2. Αντικ. TypeX καλεί υπηρεσίες του αντικ. TypeY 3. TypeX έχει µέθοδο που αναφέρεται στο αντικ. TypeY 4. TypeX είναι άµεση ή έµµεση υποκλάση του TypeY 5. TypeX είναι µια διασύνδεση, και η TypeY την υλοποιεί Πλεονεκτήµατα: εν επηρεάζεται από αλλαγές σε άλλα µέλη Εύκολη η κατανόηση µεµονωµένα Ευκολία επαναχρησιµοποίησης 17

ΥψηλήΣυνοχή (High Cohesion) (1/4) Συνοχή: µέτρο του βαθµού σχέσης και «συγγένειας», των αρµοδιοτήτων σε µια κλάση Λύση: Ανάθεση µιας αρµοδιότητας ούτως ώστε η συνοχή να παραµένει µεγάλη Πρόβληµα: πως να διατηρηθεί η πολυπλοκότητα υπό έλεγχο; Προβλήµατα µειωµένου βαθµού συνοχής: υσκολία κατανόησης, επαναχρησιµοποίησης, συντήρησης «συστέγαση» πολλών άσχετων µεταξύ τους αρµοδιοτήτων 18

ΥψηλήΣυνοχή (High Cohesion) (2/4) 19

ΥψηλήΣυνοχή (High Cohesion) (3/4) Παράδειγµα: Το πρόβληµα της Σύζευσης (προηγ.) 20

ΥψηλήΣυνοχή (High Cohesion) (4/4) 21

«Ελεγκτής» (Controller) (1/6) Ελεγκτής: ένα αντικείµενο, υπεύθυνο για να δεχτεί ή να διαχειριστεί ένα γεγονότος συστήµατος Λύση: Ανάθεση της αρµοδιότητας αποδοχής ή διαχείρισης, µηνύµατος γεγονότος συστήµατος, σε κλάση που αντιπροσωπεύει µια από τις εξής επιλογές (πρόσοψη): Ολόκληρο σύστηµα, συσκευή, υποσύστηµα Ένα σενάριο ΠΧ, µέσα στο οποίο συµβαίνει το γεγονός συστήµατος Πρόβληµα: ποιος είναι αρµόδιος για την διαχείριση ενός γεγονότος εισαγωγής στο σύστηµα (από εξωτ. χρήστη); Παράδειγµα: εικ. 16.13, 16.14 22

«Ελεγκτής» (Controller) (2/6) Συνιστάται να χρησιµοποιείται έναςελεγκτής για κάθε Περίπτωση Χρήσης. Ουσιαστικά ο Ελεγκτής δέχεται την αίτηση από το επίπεδο UI, συντονίζει και ελέγχει την δραστηριότητα, παραπέµποντας τη υλοποίηση σε άλλα αντικείµενα. Είναι από την πλευρά του client. 23

«Ελεγκτής» (Controller) (3/6) 24

«Ελεγκτής» (Controller) (4/6) 25

«Ελεγκτής» (Controller) (5/6) 26

«Ελεγκτής» (Controller) (6/6) Πλεονεκτήµατα: Αυξάνει την δυνατότητα επαναχρησιµοποίησης Προσαρµόσιµη διεπιφάνεια Ελέγχει τη σειρά εκτέλεσης λειτουργιών µιας Περίπτωσης Χρήσης endsale() εκτελείται µετά την Payment() 27

ΠρότυποΠολυµορφισµού (1/4) Λύση όταν σχετικές εναλλακτικές λύσεις ή συµπεριφορές ποικίλουν σε τύπο (κλάση) Πρόβληµα Πως να χειριστείς εναλλακτικές λύσεις βάσει τύπου; Πως να δηµιουργήσεις προσαρµόσιµες µονάδες λογισµικού; Παράδειγµα Στο NextGen POS διαφορετικοί εξωτ. υπολογιστές φόρου, µε διαφορετική διασύνδεση και πρωτόκολλο (TCP socket, SOAP, Java RMI) Οι «προσαρµοστές» είναι εσωτ. αντικείµενα που αντιπροσωπεύουν εξωτ. υπολογιστές φόρου 28

ΠρότυποΠολυµορφισµού (2/4) 29

ΠρότυποΠολυµορφισµού (3/4) 30

ΠρότυποΠολυµορφισµού (4/4) Πολυµορφισµός είναι µια θεµελιώδης αρχή σχεδίασης και οργάνωσης ενός συστήµατος για τον χειρισµό παρόµοιων (συναφών) παραλλαγών Οφέλη Εύκολη προσθήκη νέων επεκτάσεων για νέες παραλλαγές Εισαγωγή νέων υλοποιήσεων δίχως να επηρεάζονται οι εξυπηρετητές 31

ΤεχνητήΕπινόηση (Pure Fabrication) (1/3) Λύση: Όρισε ένα σύνολο αρµοδιοτήτων υψηλής συνοχής σε µια τεχνητή κλάση η οποία δεν αντιπροσωπεύει κάποια έννοια της ΠΠ Πρόβληµα: Σε ποιο αντικείµενο αναθέτουµε µία αρµοδιότητα χωρίς να παραβιαστούν οι κανόνες Συνοχής Σύζευξης, αλλά η λύση του Φορέα Πληροφορίας δεν είναι η καταλληλότερη; Παράδειγµα καταχώρηση στιγµιότυπων Sale σε Β. 32

ΤεχνητήΕπινόηση (Pure Fabrication) (2/3) Προβλήµατα που επιλύει: Η Sale παραµένει καλοσχεδιασµένη Η PersistentStorage κλάση είναι συνεκτική Η PersistentStorage κλάση είναι πολύ γενική και επαχρησιµοποιήσιµη 33

ΤεχνητήΕπινόηση (Pure Fabrication) (3/3) Η σχεδίαση αντικειµένων περιλαµβάνει 2 οµάδες: Αντιπροσωπευτική ταξινόµηση (representational decomposition από την ΠΠ, πχ. Sale ) Μειώνει το αντιπροσωπευτικό χάσµα Ταξινόµηση συµπεριφοράς (behavioral decomposition, πχ. TableOfContentsGenerator ) Οµαδοποίηση γενικών αρµοδιοτήτων Οφέλη Υψηλή συνοχή, λόγω οµαδοποίησης σχετικών µεταξύ τους γενικών αρµοδιοτήτων υνατότητα αύξησης επαναχρησιµοποίησης 34

Indirection (1/3) Λύση: Ανάθεσε την αρµοδιότητα σε ενδιάµεσο αντικείµενο το οποίο µεσολαβεί µεταξύ άλλων µονάδων ή υπηρεσιών, ώστε αυτά να µην συνδέονται άµεσα. Πρόβληµα: Αποσύνδεση µεταξύ αντικειµένων µε στόχο την µειωµένη σύζευξη και αύξηση της δυνατότητας επαναχρησιµοποίησης. Παραδείγµατα TaxCalculatorAdapter Indirection + Πολυµορφισµός => προστασία της εσωτ. Σχεδίασης από διαφορετικές εξωτ. διασυνδέσεις (σχήµα 22.3) 35

Indirection (2/3) PersistentStorage υποστηρίζει την indirection ανάµεσα στην Sale και την Β Οφέλη Χαµηλή Σύζευξη (σύνδεση) µεταξύ αντικειµένων 36

Indirection (3/3) 37

Protected Variations (1/4) Λύση εντοπισµός προβλεπόµενων ασταθών σηµείων. ηµιουργία σταθερής διασύνδεσης γύρω από αυτά. Πρόβληµα Σχεδίαση αντικειµένων, υποσυστηµάτων ή συστηµάτων, ώστε οι αλλαγές σ αυτά να µην επιφέρουν επιπτώσεις σε άλλα µέρη. Παράδειγµα Τα σηµεία αστάθειας και αλλαγών στις διασυνδέσεις των υπολογ. Φόρων (σχ. 22.1). Τα εσωτ. αντικείµενα συνεργάζονται πλέον µε µια σταθερή διασύνδεση. 38

Protected Variations (2/4) Μηχανισµοί υποστήριξης PVs Core Protected Variations Mechanisms Η ενθυλάκωση (encapsulation), οι διασυνδέσεις, ο πολυµορφισµός και η Indirection. The Liskov Substitution Principle Αν για κάθε αντικείµενο α1 του τύπου S υπάρχει αντικείµενο α2 του τύπου Τ ώστε όλα τα προγράµµατα P που αναφέρονται στο Τ, η συµπεριφορά του Ρ δεν αλλάζει όταν το α1 αντικαθίσταται από το α2, τότε το S είναι υποτύπος του Τ. 39

Protected Variations (3/4) Σχεδίαση Απόκρυψης οµής (Law of Demeter) Θεωρεί ότι µέσα σε µια µέθοδο τα µηνύµατα θα αποστέλλονται µόνο στα ακόλουθα αντικείµενα: 1. Στο this 2. Σε παράµετρο της µεθόδου 3. Σε χαρακτηριστικό του this 4. Σε µέλος συλλογής (πχ. πίνακα) ο οποίος είναι χαρακτηριστικό του this 5. Σε αντικείµενο που δηµιουργείται στην µέθοδο 40

Protected Variations (4/4) 41