200 likes | 291 Views
Μεθοδολογίες Προγραμματισμού ΙΙ GRASP – Πρότυπα ΕΦΑΡΜΟΓΕΣ. Παναγιώτης Σφέτσος , PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr. Η μεγάλη εικόνα. Στόχοι. Στόχοι. Μείωση του Χάσματος Απεικόνισης Low Representational Gap – LRG). Low Level Design (L.L.D.).
E N D
Μεθοδολογίες Προγραμματισμού ΙΙ GRASP – Πρότυπα ΕΦΑΡΜΟΓΕΣ Παναγιώτης Σφέτσος, PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr
Η μεγάλη εικόνα Στόχοι Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Μείωση του Χάσματος Απεικόνισης Low Representational Gap – LRG) Low Level Design (L.L.D.) Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Ανάθεση Αρμοδιοτήτων ή Εκχώρηση Ευθυνών Στόχοι • Τα αντικείμενα έχουν αρμοδιότητες: • να ‘δρουν-πράττουν’ • να ‘γνωρίζουν’ • Οι αρμοδιότητες των αντικειμένων εκχωρούνται στην φάση L.L.D. (όπως των υποσυστημάτων/στοιχείων στην H.L.D.) • Συνεργασία(Collaboration): • Εκπλήρωση αρμοδιότητας από την ίδια κλάση • Εκπλήρωση αρμοδιότητας σε συνεργασία με • άλλες κλάσεις Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Πρότυπο Δημιουργός (Creator Pattern) Στόχοι • Εφαρμογή:Παιχνίδι Monopoly • Παράδειγμα: Χρειαζόμαστε την δημιουργία ενόςαντικειμένου • τύπου τετράγωνο (square) • Ερώτηση: Ποιος θα δημιουργεί το αντικείμενο τετράγωνο; • Απάντηση: • Βήμα 1ο:Ξεκινάμε από τις υπάρχουσες κλάσεις. Αν δεν έχουν οριστεί ακόμη κοιτάμε το Domain Model (σύμφωνα με την LRG) • Βήμα 2ο:Εφαρμόζουμε το πρότυπο Δημιουργός (από τις υπάρχουσες κλάσεις), σύμφωνα με το διάγραμμα κλάσεων (LLD) • Βήμα 3ο: Αποφασίζουμε την αρμοδιότητα (κλάση) και σχεδιάζουμε τα διάγραμμα ακολουθίας και κλάσεων Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Βήμα 1ο - Από το Domain Model Μπορεί να είναι κάποια εξωτερική κλάση (σκύλος, καπέλο..); Όχι αλλά γιατί; Βλέπουμε ότι το Boardπεριέχει τα τετράγωνα: Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Βήμα 2ο και 3ο -Εφαρμογή του Creator Στο δυναμικό διάγραμμα (χωρίς το loop των 40 squares): Στο στατικό διάγραμμα: Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Φορέας πληροφορίας (Information Expert) Στόχοι Εφαρμογή:Παιχνίδι Monopoly Παράδειγμα: Κάποιο αντικείμενο πρέπει να αναφέρεται σε κάποιο τετράγωνο (square) με το όνομά του. Ερώτηση: Ποιος θα είναι φορέας πληροφορίας για αυτό το τετράγωνο; Απάντηση:Το αντικείμενο που γνωρίζει (έχει την πληροφορία) για όλα τα τετράγωνα. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Εφαρμογή του Φορέα πληροφορίας Η Boardπεριέχει όλα τα τετράγωνα άρα κατέχει και την πληροφορία για την υλοποίηση της αρμοδιότητας: Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Μειωμένη Σύζευξη (Low Coupling) Μείωση του κόστους Αλλαγών Στόχοι Γιατί όχι ένα αντικείμενο π.χ. τύπου dog; Δύο αντικ. έχουν σύζευξη με το square. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Ελεγκτής (Controller) – 1/3 Ποιο αντικείμενο θα χειριστεί συμβάντα (events) – διεπιφάνειας (UI); Από το SSD για το Monopoly: Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Ελεγκτής (Controller) – 2/3 Ποιο αντικείμενο στο επίπεδο προβλήματος(domain) θα χειριστεί τα συμβάντα / κλήσεις μεθόδων; Σχηματική απεικόνιση: Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Ελεγκτής (Controller) – 3/3 Ένα αντικείμενο που απεικονίζει το σύστημα / root object (π.χ. MonopolyGame) ή μιασυσκευή (π.χ. phone, cashier, κλπ.). Διαλέγουμε την 1η επιλογή γιατί έχουμε λίγες λειτουργίες. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Υψηλή Συνοχή (High Cohesion) - 1/2 Σχεδιαστικά είμαστε εδώ: Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Υψηλή Συνοχή (High Cohesion) – 2/2 Αν επιλέξουμε το αριστερό διάγραμμα θα έχουμε χαμηλή συνοχή, Καλύτερη με το δεξιό διάγραμμα. Γιατί; Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Ποιος έχει την ευθύνη για τηνεπανάληψη του παιχνιδιού; Στόχοι Ο αλγόριθμος: for N rounds for each Player p p takes a turn Από τον φορέαπληροφορίας το αντικείμενο MonopolyGame. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Ποιος ‘παίζει’; Από τον φορέαπληροφορίας το αντικείμενο Player: Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Τα τελικά δυναμικά διαγράμματα Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Το τελικό στατικό διάγραμμα Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ
Στόχοι Η αρχικοποίηση (Περίπτωση Χρήσης) Το MonopolyGameείναι το root-object, δημιουργεί το Boardκαι Players: Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ