Μεθοδολογίες Προγραμματισμού ΙΙ GRASP – Πρότυπα...

20
Μεθοδολογίες Προγραμματισμού ΙΙ Μεθοδολογίες Προγραμματισμού ΙΙ GRASP – GRASP – Πρότυπα Πρότυπα ΕΦΑΡΜΟΓΕΣ ΕΦΑΡΜΟΓΕΣ Παναγιώτης Σφέτσος, PhD http://aetos.it.teithe.gr/~sfetsos/ [email protected]

description

Μεθοδολογίες Προγραμματισμού ΙΙ GRASP – Πρότυπα ΕΦΑΡΜΟΓΕΣ. Παναγιώτης Σφέτσος , PhD http://aetos.it.teithe.gr/~sfetsos/ [email protected]. Η μεγάλη εικόνα. Στόχοι. Στόχοι. Μείωση του Χάσματος Απεικόνισης Low Representational Gap – LRG). Low Level Design (L.L.D.). - PowerPoint PPT Presentation

Transcript of Μεθοδολογίες Προγραμματισμού ΙΙ GRASP – Πρότυπα...

Page 1: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Μεθοδολογίες Προγραμματισμού ΙΙΜεθοδολογίες Προγραμματισμού ΙΙ

GRASP – GRASP – ΠρότυπαΠρότυπα

ΕΦΑΡΜΟΓΕΣΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, PhD

http://aetos.it.teithe.gr/~sfetsos/

[email protected]

Page 2: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 2

ΣτόχοιΗ μεγάλη Η μεγάλη

εικόναεικόνα

Page 3: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 3

ΣτόχοιΜείωση του Χάσματος Μείωση του Χάσματος ΑπεικόνισηςΑπεικόνισηςLow Representational Gap – Low Representational Gap – LRG)LRG)

Low Level Low Level Design (L.L.D.)Design (L.L.D.)

Page 4: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 4

ΣτόχοιΑνάθεση Ανάθεση Αρμοδιοτήτων Αρμοδιοτήτων ή Εκχώρηση ή Εκχώρηση Ευθυνών Ευθυνών • Τα αντικείμενα έχουν αρμοδιότητεςΤα αντικείμενα έχουν αρμοδιότητες::

να να ‘δρουν-πράττουν‘δρουν-πράττουν’’ να να ‘γνωρίζουν’‘γνωρίζουν’

• Οι αρμοδιότητες των αντικειμένων εκχωρούνται Οι αρμοδιότητες των αντικειμένων εκχωρούνται στην φάση στην φάση L.L.D.L.L.D. (όπως των υποσυστημάτων (όπως των υποσυστημάτων // στοιχείων στην στοιχείων στην H.L.D.)H.L.D.)

• Συνεργασία(Συνεργασία(Collaboration):Collaboration): Εκπλήρωση αρμοδιότητας από την ίδια κλάσηΕκπλήρωση αρμοδιότητας από την ίδια κλάση Εκπλήρωση αρμοδιότητας σε συνεργασία με Εκπλήρωση αρμοδιότητας σε συνεργασία με

άλλες κλάσειςάλλες κλάσεις

• Τα αντικείμενα έχουν αρμοδιότητεςΤα αντικείμενα έχουν αρμοδιότητες:: να να ‘δρουν-πράττουν‘δρουν-πράττουν’’ να να ‘γνωρίζουν’‘γνωρίζουν’

• Οι αρμοδιότητες των αντικειμένων εκχωρούνται Οι αρμοδιότητες των αντικειμένων εκχωρούνται στην φάση στην φάση L.L.D.L.L.D. (όπως των υποσυστημάτων (όπως των υποσυστημάτων // στοιχείων στην στοιχείων στην H.L.D.)H.L.D.)

• Συνεργασία(Συνεργασία(Collaboration):Collaboration): Εκπλήρωση αρμοδιότητας από την ίδια κλάσηΕκπλήρωση αρμοδιότητας από την ίδια κλάση Εκπλήρωση αρμοδιότητας σε συνεργασία με Εκπλήρωση αρμοδιότητας σε συνεργασία με

άλλες κλάσειςάλλες κλάσεις

Page 5: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 5

ΣτόχοιΠρότυπο Πρότυπο Δημιουργός (Δημιουργός (Creator Creator Pattern)Pattern)

ΕφαρμογήΕφαρμογή:: Παιχνίδι Παιχνίδι MonopolyMonopoly

ΠαράδειγμαΠαράδειγμα: : Χρειαζόμαστε την δημιουργία ενόςΧρειαζόμαστε την δημιουργία ενός αντικειμένου αντικειμένου

τύπου τετράγωνο (τύπου τετράγωνο (square)square)

ΕρώτησηΕρώτηση: : Ποιος θα δημιουργεί το αντικείμενο τετράγωνοΠοιος θα δημιουργεί το αντικείμενο τετράγωνο;;

ΑπάντησηΑπάντηση::

- Βήμα 1οΒήμα 1ο:: Ξεκινάμε από τις υπάρχουσες κλάσεις. Αν δεν έχουν Ξεκινάμε από τις υπάρχουσες κλάσεις. Αν δεν έχουν οριστεί ακόμη κοιτάμε το οριστεί ακόμη κοιτάμε το Domain Model Domain Model (σύμφωνα με την (σύμφωνα με την LRG)LRG)

- Βήμα Βήμα 22οο:: Εφαρμόζουμε το πρότυπο Δημιουργός (από τις Εφαρμόζουμε το πρότυπο Δημιουργός (από τις υπάρχουσες κλάσεις), σύμφωνα με το διάγραμμα κλάσεων (υπάρχουσες κλάσεις), σύμφωνα με το διάγραμμα κλάσεων (LLD)LLD)

- Βήμα Βήμα 33οο:: Αποφασίζουμε την αρμοδιότητα (κλάση) και Αποφασίζουμε την αρμοδιότητα (κλάση) και σχεδιάζουμε τα διάγραμμα ακολουθίας και κλάσεων σχεδιάζουμε τα διάγραμμα ακολουθίας και κλάσεων

ΕφαρμογήΕφαρμογή:: Παιχνίδι Παιχνίδι MonopolyMonopoly

ΠαράδειγμαΠαράδειγμα: : Χρειαζόμαστε την δημιουργία ενόςΧρειαζόμαστε την δημιουργία ενός αντικειμένου αντικειμένου

τύπου τετράγωνο (τύπου τετράγωνο (square)square)

ΕρώτησηΕρώτηση: : Ποιος θα δημιουργεί το αντικείμενο τετράγωνοΠοιος θα δημιουργεί το αντικείμενο τετράγωνο;;

ΑπάντησηΑπάντηση::

- Βήμα 1οΒήμα 1ο:: Ξεκινάμε από τις υπάρχουσες κλάσεις. Αν δεν έχουν Ξεκινάμε από τις υπάρχουσες κλάσεις. Αν δεν έχουν οριστεί ακόμη κοιτάμε το οριστεί ακόμη κοιτάμε το Domain Model Domain Model (σύμφωνα με την (σύμφωνα με την LRG)LRG)

- Βήμα Βήμα 22οο:: Εφαρμόζουμε το πρότυπο Δημιουργός (από τις Εφαρμόζουμε το πρότυπο Δημιουργός (από τις υπάρχουσες κλάσεις), σύμφωνα με το διάγραμμα κλάσεων (υπάρχουσες κλάσεις), σύμφωνα με το διάγραμμα κλάσεων (LLD)LLD)

- Βήμα Βήμα 33οο:: Αποφασίζουμε την αρμοδιότητα (κλάση) και Αποφασίζουμε την αρμοδιότητα (κλάση) και σχεδιάζουμε τα διάγραμμα ακολουθίας και κλάσεων σχεδιάζουμε τα διάγραμμα ακολουθίας και κλάσεων

Page 6: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 6

ΣτόχοιΒήμα 1Βήμα 1οο - Από το - Από το Domain ModelDomain Model

Μπορεί να είναι κάποια εξωτερική κλάσηΜπορεί να είναι κάποια εξωτερική κλάση ( (σκύλος, καπέλο..)σκύλος, καπέλο..); ; Όχι Όχι

αλλά γιατίαλλά γιατί; ; Βλέπουμε ότι το Βλέπουμε ότι το BoardBoard περιέχει τα περιέχει τα τετράγωνατετράγωνα::

Μπορεί να είναι κάποια εξωτερική κλάσηΜπορεί να είναι κάποια εξωτερική κλάση ( (σκύλος, καπέλο..)σκύλος, καπέλο..); ; Όχι Όχι

αλλά γιατίαλλά γιατί; ; Βλέπουμε ότι το Βλέπουμε ότι το BoardBoard περιέχει τα περιέχει τα τετράγωνατετράγωνα::

Page 7: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 7

ΣτόχοιΒήμα Βήμα 22οο και 3 και 3οο - - Εφαρμογή του Εφαρμογή του Creator Creator

Στο Στο δυναμικό διάγραμμα δυναμικό διάγραμμα (χωρίς το (χωρίς το loop loop των 40 των 40 squares):squares):Στο Στο δυναμικό διάγραμμα δυναμικό διάγραμμα (χωρίς το (χωρίς το loop loop των 40 των 40 squares):squares):

Στο Στο στατικό διάγραμμαστατικό διάγραμμα::

Page 8: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 8

ΣτόχοιΦορέας Φορέας πληροφορίας πληροφορίας ((Information Expert)Information Expert)

ΕφαρμογήΕφαρμογή:: Παιχνίδι Παιχνίδι MonopolyMonopoly

ΠαράδειγμαΠαράδειγμα: : Κάποιο αντικείμενο πρέπει να αναφέρεται σε κάποιοΚάποιο αντικείμενο πρέπει να αναφέρεται σε κάποιο

τετράγωνο (τετράγωνο (square)square) με το όνομά του. με το όνομά του.

ΕρώτησηΕρώτηση: : Ποιος θα είναι φορέας πληροφορίας για αυτό το Ποιος θα είναι φορέας πληροφορίας για αυτό το τετράγωνοτετράγωνο;;

ΑπάντησηΑπάντηση:: Το αντικείμενο που γνωρίζει (έχει την πληροφορία) για Το αντικείμενο που γνωρίζει (έχει την πληροφορία) για

όλα τα τετράγωνα.όλα τα τετράγωνα.

ΕφαρμογήΕφαρμογή:: Παιχνίδι Παιχνίδι MonopolyMonopoly

ΠαράδειγμαΠαράδειγμα: : Κάποιο αντικείμενο πρέπει να αναφέρεται σε κάποιοΚάποιο αντικείμενο πρέπει να αναφέρεται σε κάποιο

τετράγωνο (τετράγωνο (square)square) με το όνομά του. με το όνομά του.

ΕρώτησηΕρώτηση: : Ποιος θα είναι φορέας πληροφορίας για αυτό το Ποιος θα είναι φορέας πληροφορίας για αυτό το τετράγωνοτετράγωνο;;

ΑπάντησηΑπάντηση:: Το αντικείμενο που γνωρίζει (έχει την πληροφορία) για Το αντικείμενο που γνωρίζει (έχει την πληροφορία) για

όλα τα τετράγωνα.όλα τα τετράγωνα.

Page 9: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 9

ΣτόχοιΗ Η BoardBoard περιέχει όλα τα περιέχει όλα τα τετράγωνα τετράγωνα άρα κατέχει και την πληροφορίαάρα κατέχει και την πληροφορία

για την υλοποίηση της αρμοδιότηταςγια την υλοποίηση της αρμοδιότητας::

Η Η BoardBoard περιέχει όλα τα περιέχει όλα τα τετράγωνα τετράγωνα άρα κατέχει και την πληροφορίαάρα κατέχει και την πληροφορία

για την υλοποίηση της αρμοδιότηταςγια την υλοποίηση της αρμοδιότητας::

Εφαρμογή του Φορέα Εφαρμογή του Φορέα πληροφορίαςπληροφορίας

Page 10: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 10

ΣτόχοιΜειωμένη Σύζευξη (Μειωμένη Σύζευξη (Low Low Coupling)Coupling)Μείωση του κόστους ΑλλαγώνΜείωση του κόστους Αλλαγών

Γιατί όχι ένα αντικείμενο π.χ. τύπου Γιατί όχι ένα αντικείμενο π.χ. τύπου dog;dog; Δύο αντικ. έχουν σύζευξη Δύο αντικ. έχουν σύζευξη

με το με το square.square.

Γιατί όχι ένα αντικείμενο π.χ. τύπου Γιατί όχι ένα αντικείμενο π.χ. τύπου dog;dog; Δύο αντικ. έχουν σύζευξη Δύο αντικ. έχουν σύζευξη

με το με το square.square.

Page 11: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 11

ΣτόχοιΕλεγκτής (Ελεγκτής (Controller)Controller) – 1/ – 1/33

Ποιο αντικείμενο θα χειριστεί συμβάντα (Ποιο αντικείμενο θα χειριστεί συμβάντα (events) – events) – διεπιφάνειας (διεπιφάνειας (UIUI));;

Από το Από το SSD SSD για το για το MonopolyMonopoly : :

Ποιο αντικείμενο θα χειριστεί συμβάντα (Ποιο αντικείμενο θα χειριστεί συμβάντα (events) – events) – διεπιφάνειας (διεπιφάνειας (UIUI));;

Από το Από το SSD SSD για το για το MonopolyMonopoly : :

Page 12: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 12

ΣτόχοιΕλεγκτής (Ελεγκτής (Controller) – 2/Controller) – 2/33

Ποιο αντικείμενο στο επίπεδο προβλήματος(Ποιο αντικείμενο στο επίπεδο προβλήματος(domain) domain) θα χειριστεί τα θα χειριστεί τα

συμβάντα / κλήσεις μεθόδωνσυμβάντα / κλήσεις μεθόδων; ; Σχηματική απεικόνισηΣχηματική απεικόνιση::

Ποιο αντικείμενο στο επίπεδο προβλήματος(Ποιο αντικείμενο στο επίπεδο προβλήματος(domain) domain) θα χειριστεί τα θα χειριστεί τα

συμβάντα / κλήσεις μεθόδωνσυμβάντα / κλήσεις μεθόδων; ; Σχηματική απεικόνισηΣχηματική απεικόνιση::

Page 13: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 13

ΣτόχοιΕλεγκτής (Ελεγκτής (Controller) – 3/Controller) – 3/33

Ένα Ένα αντικείμενοαντικείμενο που απεικονίζει το σύστημα / που απεικονίζει το σύστημα / root objectroot object (π.χ. (π.χ.

MonopolyGameMonopolyGame) ) ή μιαή μια συσκευήσυσκευή (π.χ. (π.χ. phone, cashier, phone, cashier, κλπ.). κλπ.).

Διαλέγουμε την 1Διαλέγουμε την 1ηη επιλογή γιατί έχουμε λίγες λειτουργίες. επιλογή γιατί έχουμε λίγες λειτουργίες.

Ένα Ένα αντικείμενοαντικείμενο που απεικονίζει το σύστημα / που απεικονίζει το σύστημα / root objectroot object (π.χ. (π.χ.

MonopolyGameMonopolyGame) ) ή μιαή μια συσκευήσυσκευή (π.χ. (π.χ. phone, cashier, phone, cashier, κλπ.). κλπ.).

Διαλέγουμε την 1Διαλέγουμε την 1ηη επιλογή γιατί έχουμε λίγες λειτουργίες. επιλογή γιατί έχουμε λίγες λειτουργίες.

Page 14: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 14

ΣτόχοιΥψηλή Συνοχή (Υψηλή Συνοχή (High Cohesion) High Cohesion) - - 1/21/2

Σχεδιαστικά είμαστε εδώΣχεδιαστικά είμαστε εδώ::Σχεδιαστικά είμαστε εδώΣχεδιαστικά είμαστε εδώ::

Page 15: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 15

ΣτόχοιΑν επιλέξουμε το αριστερό διάγραμμα θα έχουμε Αν επιλέξουμε το αριστερό διάγραμμα θα έχουμε χαμηλή συνοχή, χαμηλή συνοχή,

Καλύτερη με το δεξιό διάγραμμα. Καλύτερη με το δεξιό διάγραμμα. ΓιατίΓιατί;;

Αν επιλέξουμε το αριστερό διάγραμμα θα έχουμε Αν επιλέξουμε το αριστερό διάγραμμα θα έχουμε χαμηλή συνοχή, χαμηλή συνοχή,

Καλύτερη με το δεξιό διάγραμμα. Καλύτερη με το δεξιό διάγραμμα. ΓιατίΓιατί;;

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

Page 16: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 16

ΣτόχοιΟ Ο αλγόριθμοςαλγόριθμος::

for N roundsfor N rounds

for each Player pfor each Player p

p takes a turnp takes a turn

Από τον φορέαΑπό τον φορέα πληροφορίας το αντικείμενο πληροφορίας το αντικείμενο MonopolyGame.MonopolyGame.

Ο Ο αλγόριθμοςαλγόριθμος::

for N roundsfor N rounds

for each Player pfor each Player p

p takes a turnp takes a turn

Από τον φορέαΑπό τον φορέα πληροφορίας το αντικείμενο πληροφορίας το αντικείμενο MonopolyGame.MonopolyGame.

Ποιος έχει την ευθύνηΠοιος έχει την ευθύνηγια τηνγια την επανάληψη του επανάληψη του παιχνιδιούπαιχνιδιού;;

Page 17: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 17

ΣτόχοιΑπό τον φορέαΑπό τον φορέα πληροφορίας το αντικείμενο πληροφορίας το αντικείμενο Player:Player: Από τον φορέαΑπό τον φορέα πληροφορίας το αντικείμενο πληροφορίας το αντικείμενο Player:Player:

Ποιος Ποιος ‘‘παίζειπαίζει’;’;

Page 18: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 18

ΣτόχοιΤα τελικά δυναμικά Τα τελικά δυναμικά διαγράμματαδιαγράμματα

Page 19: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 19

ΣτόχοιΤο τελικό στατικό Το τελικό στατικό διάγραμμαδιάγραμμα

Page 20: Μεθοδολογίες Προγραμματισμού ΙΙ GRASP –  Πρότυπα ΕΦΑΡΜΟΓΕΣ

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 20

ΣτόχοιΤο Το MonopolyGameMonopolyGame είναι το είναι το root-object, root-object, δημιουργεί το δημιουργεί το BoardBoard και και

Players:Players:

Το Το MonopolyGameMonopolyGame είναι το είναι το root-object, root-object, δημιουργεί το δημιουργεί το BoardBoard και και

Players:Players:

Η αρχικοποίησηΗ αρχικοποίηση (Περίπτωση (Περίπτωση Χρήσης)Χρήσης)