Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης"— Μεταγράφημα παρουσίασης:

1 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Λεπτομερής Σχεδίαση (1/2) Μανόλης Γιακουμάκης αναπληρωτής καθηγητής ΟΠΑ 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

2 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Σημερινή παρουσίαση Σχεδίαση προσανατολισμένη στις λειτουργίες Το λεπτομερές Τεχνικές-Εργαλεία Λεπτομερούς Σχεδίασης Σχεδίαση προσανατολισμένη στα αντικείμενα Διαγράμματα κλάσεων και σχεδίαση Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

3 Σχεδίαση προσανατολισμένη στις λειτουργίες
Η δομή του λογισμικού που προκύπτει από τη διαδικασία της δομημένης σχεδίασης είναι μία ιεραρχία μονάδων. Το αρχιτεκτονικό σχέδιο μας δίνει την πληροφορία της εξάρτησης των μονάδων, των κλήσεων κάθε μονάδας καθώς και των δεδομένων που κυκλοφορούν κατά τις κλήσεις αυτές. Η λεπτομερής σχεδίαση ασχολείται πλέον με την εσωτερική δομή των μονάδων, τις δομές δεδομένων και τους αλγορίθμους που αυτές χρησιμοποιούν. Η λεπτομερής παρουσίαση των δεδομένων, η περιγραφή της επεξεργασίας των αλγορίθμων, η σχέση δεδομένων και επεξεργασιών καθώς και η εσωτερική οργάνωση της κάθε μονάδας παρέχουν την αναγκαία λεπτομέρεια για να καταστεί δυνατή η υλοποίηση των μονάδων. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

4 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Το λεπτομερές σχέδιο Το λεπτομερές σχέδιο παρέχει λεπτομέρεια για τα δεδομένα και τους αλγορίθμους που θα χρησιμοποιηθούν. Αυτό το επαυξημένο επίπεδο λεπτομέρειας στο λεπτομερές σχέδιο κάθε μονάδας δίδει αρκετή πληροφορία στον προγραμματιστή, ώστε να μπορέσει να κωδικοποιήσει τη μονάδα με τρόπο αποτελεσματικό και αξιόπιστο. Επομένως το λεπτομερές σχέδιο περιέχει περιγραφές της επεξεργασίας για την υλοποίηση των μονάδων του αρχιτεκτονικού σχεδίου, όπως: λεπτομερείς αλγορίθμους, παράσταση και δομές δεδομένων και σχέσεις μεταξύ λειτουργιών και δεδομένων που χρησιμοποιούνται. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

5 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Το λεπτομερές σχέδιο Κάθε μονάδα στο αρχιτεκτονικό σχέδιο έχει σχεδιαστεί, έτσι ώστε να έχει ένα σημείο εισόδου και μια έξοδο. Αυτή η ιδιότητα, της μιας εισόδου - μιας εξόδου θα πρέπει να διατηρηθεί κατά το δυνατόν και στο λεπτομερές σχέδιο. Εάν βρούμε μια συγκεκριμένη μονάδα τόσο πολύπλοκη, ώστε να χρειάζονται πολλές είσοδοι και πολλές έξοδοι, θα πρέπει να επανεξετάσουμε το συνολικό σχέδιο και πιθανά να δημιουργήσουμε επιπλέον μονάδες που να εκτελούν μικρότερα τμήματα των αρχικών εργασιών. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

6 Τεχνικές-Εργαλεία Λεπτομερούς Σχεδίασης
Διαγράμματα ροής Ψευδοκώδικας Δομημένη καθομιλουμένη γλώσσα PDL Διαγράμματα Nassi-Schneiderman 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

7 Διαγράμματα ροής Δομικές Μονάδες
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

8 Διαγράμματα ροής Δομές Επιλογής
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

9 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Ψευδοκώδικας BEGIN Process P1 END Process P2 REPEAT IF συνθήκη C2 είναι TRUE THEN WHILE συνθήκη C4 είναι TRUE DO BEGIN process P7 ENDDO ELSE έλεγχος συνθήκης C3 FOR CASE 1 of C3 BEGIN Process P3 END Process P4 FOR CASE 2 of C3 Process P5 FOR CASE 3 of C3 Process P6 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

10 Διαγράμματα Nassi-Schneiderman
Δομή ακολουθίας Δομές επανάληψης 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

11 Διαγράμματα Nassi-Schneiderman Δομές Επιλογής
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

12 Διαγράμματα Nassi-Schneiderman Παράδειγμα
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

13 Σχεδίαση προσανατολισμένη στα αντικείμενα
Η αντικειμενοστρεφής σχεδίαση ξεκινά με τη μελέτη του ΕΠΑΛ και των λοιπών εγγράφων των απαιτήσεων, προκειμένου να καταλήξει στις κλάσεις από τις οποίες θα αποτελείται το λογισμικό. Προδιαγράφει επίσης τη συμπεριφορά των αντικειμένων των κλάσεων και τον τρόπο επικοινωνίας με άλλα αντικείμενα. Στην αντικειμενοστρεφή σχεδίαση λαμβάνονται υπόψη τα ποιοτικά στοιχεία σχεδίασης. Για την αντικειμενοστρεφή σχεδίαση το κεντρικό ζήτημα των αποφάσεων σχεδίασης είναι η ανάθεση των αρμοδιοτήτων στις κλάσεις του λογισμικού. Η ανάθεση των αρμοδιοτήτων θα εξεταστεί κάτω από το πρίσμα των ποιοτικών στοιχείων σχεδίασης και ευριστικών κανόνων. Ένα περίγραμμα της αντικειμενοστρεφούς σχεδίασης παρουσιάζεται στο σχήμα 8-12. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

14 Σχεδίαση προσανατολισμένη στα αντικείμενα
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

15 Τα βήματα της διαδικασίας του σχήματος 8-12 είναι τα παρακάτω:
Ανάθεση αρμοδιοτήτων σε κλάσεις λογισμικού. (Θυμίζουμε ότι ορίζουμε ως αρμοδιότητες μίας κλάσης την υποχρέωση που έχουν τα αντικείμενα της κλάσης να εκτελούν κάποια λειτουργία ή να γνωρίζουν κάποια πληροφορία) Αποτύπωση της συνεργασίας αντικειμένων. Μέσω των διαγραμμάτων ακολουθίας παρουσιάζονται και οι αρμοδιότητες κάθε κλάσης που συμμετέχει στη συνεργασία. Αποτύπωση των αρμοδιοτήτων σε διαγράμματα κλάσεων. Οι αρμοδιότητες των κλάσεων μεταφράζονται σε ιδιότητες και λειτουργίες των κλάσεων στα διαγράμματα κλάσεων. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

16 Τα βήματα της διαδικασίας του σχήματος 8-12 είναι τα παρακάτω:
Στο επόμενο βήμα αξιολογούμε το κατά πόσο έχουμε καλύψει την επιδιωκόμενη συμπεριφορά η οποία βέβαια διατυπώνεται στα έγγραφα των απαιτήσεων. Τέλος, αξιολογούμε τη σχεδίαση ως προς τα ποιοτικά στοιχεία σχεδίασης. Το αποτέλεσμα της ανάθεσης αρμοδιοτήτων, όπως αποτυπώνεται στα διαγράμματα ακολουθίας και κλάσεων, αξιολογείται ως προς τα ποιοτικά στοιχεία: την αφαίρεση, την τμηματικότητα, την απόκρυψη πληροφοριών, τη σύζευξη και τη συνεκτικότητα. Η αξιολόγηση της σχεδίασης πολλές φορές καταλήγει στην τροποποίησή της, επειδή διαπιστώνεται ότι δεν ικανοποιεί επαρκώς τα ποιοτικά στοιχεία σχεδίασης. Η τροποποίηση της σχεδίασης μπορεί να γίνει με διάφορους τρόπους κάποιους από τους οποίους θα εξετάσουμε σε αυτό το κεφάλαιο. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

17 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν αντικείμενα και βασίζονται στις υποκλάσεις μέσω της γενίκευσης για τη δημιουργία αντικειμένων. Η συνήθης χρήση των αφηρημένων κλάσεων είναι η παροχή της διεπαφής τους στις υποκλάσεις τους. Οι λειτουργίες μπορεί να είναι και αυτές αφηρημένες (abstract) , δηλαδή λειτουργίες χωρίς υλοποίηση, ενώ κάποιες άλλες συγκεκριμένες (concrete). Η υλοποίηση των αφηρημένων λειτουργιών παρέχεται από τις υποκλάσεις της αφηρημένης κλάσης. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

18 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Αφηρημένες κλάσεις 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

19 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Ιδιότητες οι ιδιότητες μίας κλάσης αφορούν τα δεδομένα που διατηρούν τα αντικείμενά της. Τα δύο νέα στοιχεία των ιδιοτήτων, που είναι χρήσιμα στη σχεδίαση, είναι η ορατότητα (visibility) και η πολλαπλότητα (multiplicity). Έτσι, η πλήρης περιγραφή μίας ιδιότητας με τη UML είναι: ορατότητα / όνομα: τύπος [πολλαπλότητα] = αρχική τιμή {συμβολοσειρά ιδιοτήτων} 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

20 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Ιδιότητες Η ορατότητα (visibility) συμβολίζεται ως εξής: Με το σύμβολο + που συμβολίζει τη δημόσια (public) ορατότητα. Οι ιδιότητες με δημόσια ορατότητα είναι προσβάσιμες σε όσες κλάσεις έχουν πρόσβαση στην κλάση που τις περιέχει. Με το σύμβολο ∼ που συμβολίζει ορατότητα πακέτου. Οι ιδιότητες με ορατότητα πακέτου είναι προσβάσιμες στις κλάσεις που είναι στο ίδιο πακέτο με τη συγκεκριμένη κλάση. Με το σύμβολο # που συμβολίζει την προστατευμένη (protected) ορατότητα. Οι ιδιότητες με προστατευμένη ορατότητα είναι προσβάσιμες από τις υποκλάσεις και από την κλάση που τις περιέχει. Με το σύμβολο – που συμβολίζει την ιδιωτική (private) ορατότητα. Οι ιδιότητες με ιδιωτική ορατότητα είναι προσβάσιμες μόνο από την κλάση που τις περιέχει. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

21 Ο συμβολισμός της απαρίθμησης με τη UML
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

22 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Ιδιότητες Η συμβολοσειρά ιδιοτήτων ρυθμίζει πρόσθετες ιδιότητες της ιδιότητας. Για παράδειγμα, η ένδειξη readOnly δείχνει ότι η ιδιότητα είναι μόνο για ανάγνωση και όχι για τροποποίηση. Η πολλαπλότητα αναφέρεται στον αριθμό των αντικειμένων της ιδιότητας. Συνήθως οι περισσότερες ιδιότητες παίρνουν μία τιμή. Χρησιμοποιούμε την πολλαπλότητα, εάν θέλουμε να δείξουμε ότι η ιδιότητα λαμβάνει περισσότερες από μία τιμές. Εκτός από τις απλές ιδιότητες που αφορούν τα δεδομένα των αντικειμένων μίας κλάσης, με τη UML μπορούμε να ορίσουμε και στατικές ιδιότητες (static attributes), οι οποίες ανήκουν στην κλάση και όχι στα αντικείμενά της. Οι στατικές ιδιότητες παραπέμπουν στα στατικά πεδία της Java. Ο συμβολισμός των στατικών ιδιοτήτων είναι όμοιος με τις απλές ιδιότητες με τη διαφορά ότι η σύνταξή τους υπογραμμίζεται. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

23 Οι ιδιότητες της κλάσης Employee
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

24 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Λειτουργίες Η σύνταξη μίας λειτουργίας με τη UML είναι: ορατότητα όνομα ( κατάλογος-παραμέτρων ): τύπος-επιστροφής {συμβολοσειρά ιδιοτήτων} Η ορατότητα των λειτουργιών συμβολίζεται όμοια με την ορατότητα των ιδιοτήτων. Μία συχνή σύμβαση που ακολουθούν οι μηχανικοί λογισμικού είναι ότι, όταν δεν ορίζεται η ορατότητα της λειτουργίας, τότε θεωρείται δημόσια. Ο κατάλογος παραμέτρων είναι οι παράμετροι της λειτουργίας οι οποίες χωρίζονται με κόμμα. Κάθε παράμετρος έχει την ακόλουθη σύνταξη: κατεύθυνση όνομα: τύπος [πολλαπλότητα] = προκαθορισμένη-τιμή {συμβολοσειρά ιδιοτήτων} 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

25 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Λειτουργίες Η κατεύθυνση δηλώνει αν μία παράμετρος είναι παράμετρος εισόδου, παράμετρος εξόδου ή και τα δύο, και παίρνει τις τιμές in, out και inout, αντίστοιχα. Όταν η κατεύθυνση δε δηλώνεται, τότε η παράμετρος θεωρείται παράμετρος εισόδου. Ο τύπος της παραμέτρου μπορεί να είναι κάποιος από τους πρωταρχικούς τύπους δεδομένων ή κάποια κλάση. Η πολλαπλότητα αφορά στον αριθμό των στιγμιοτύπων για κάθε παράμετρο και συμβολίζεται όμοια με την πολλαπλότητα των ιδιοτήτων. Η προκαθορισμένη τιμή της παραμέτρου είναι η τιμή που παίρνει η παράμετρος, όταν η τιμή δεν παρέχεται κατά την κλήση της λειτουργίας. Η συμβολοσειρά ιδιοτήτων προσδίδει στη λειτουργία πρόσθετες ιδιότητες. Μία πιθανή ιδιότητα είναι η ιδιότητα abstract που δηλώνει ότι η λειτουργία είναι αφηρημένη. Μία άλλη είναι η query που δηλώνει ότι η λειτουργία δε μεταβάλλει την κατάσταση των αντικειμένων της κλάσης. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

26 Οι λειτουργίες της κλάσης Employee
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

27 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Απλοί τύποι προτιμούμε τη χρήση των κλάσεων για δεδομένα με κάποια σημασία, έναντι των πρωταρχικών τύπων όπως οι συμβολοσειρές. Το πλεονέκτημα των κλάσεων είναι ότι παρέχουν ένα επίπεδο αφαίρεσης έναντι των πρωταρχικών τύπων. Είναι καλό να διαχωρίζονται τα αντικείμενα τιμών στα διαγράμματα κλάσεων από τα υπόλοιπα αντικείμενα της UML. Η UML δεν παρέχει κάποιο τρόπο να διαχωριστούν τα αντικείμενα τιμές. Η χρήση της λέξης κλειδί «value» στα διαγράμματα κλάσεων είναι ένας τρόπος να διαχωριστούν τα αντικείμενα τιμές, επειδή έχει επίπτωση στην υλοποίησή τους. Με τη χρήση της λέξης κλειδί «value» ο σχεδιαστής επικοινωνεί στους προγραμματιστές την πρόθεσή του για χρήση απλών τύπων. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

28 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Απλοί τύποι Με την εμφάνιση αντικειμένων τιμών σε ένα διάγραμμα κλάσεων επικοινωνούμε στον προγραμματιστή ότι πρέπει να λάβει υπόψη του τρία θέματα που είναι: Η ισότητα των αντικειμένων βασίζεται στις τιμές των ιδιοτήτων τους και όχι στην ταυτότητά τους. Οι κλάσεις των αντικειμένων τιμών είναι αμετάβλητες (immutable). Η κατάσταση των αντικειμένων των αμετάβλητων κλάσεων αρχικοποιείται μέσω των κατασκευαστών (constructors) και δεν αλλάζει σε όλο τον κύκλο ζωής των αντικειμένων. (Σε περίπτωση που δεν επιθυμούμε τα αντικείμενα τιμές να προέρχονται από αμετάβλητες κλάσεις, θα πρέπει να είμαστε περισσότερο προσεκτικοί, ιδιαίτερα στον τρόπο που υλοποιούμε τις συσχετίσεις) Εάν υπάρχουν πράξεις που θα πρέπει να μεταβάλλουν την κατάσταση των αντικειμένων, τότε και πάλι δεν αλλάζει η κατάσταση του αντικειμένου αλλά επιστρέφονται νέα αντικείμενα. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

29 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Συσχετίσεις Γνωρίζουμε ήδη τα βασικά στοιχεία των άκρων μίας συσχέτισης που είναι το όνομα του άκρου και η πολλαπλότητα. Ένα τρίτο σημαντικό στοιχείο που μας απασχολεί περισσότερο στη σχεδίαση του λογισμικού είναι η πλοηγησιμότητα (navigability). Η πλοηγησιμότητα αναπαριστά το κατά πόσο τα αντικείμενα που συμμετέχουν στα άκρα της συσχέτισης γνωρίζουν την ύπαρξη των αντικειμένων στο άλλο άκρο. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

30 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Συσχετίσεις 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

31 Ισοδυναμία συσχετίσεων και ιδιοτήτων
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

32 Τυπική και συνήθης χρήση των συμβολισμών της πλοηγησιμότητας
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

33 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Συσχετίσεις Στη μοντελοποίηση πεδίου η πλοηγησιμότητα δε μας απασχολεί ιδιαίτερα και μπορεί να θεωρηθεί ότι είναι αμφίδρομη. Στη σχεδίαση όμως οι αμφίδρομες συσχετίσεις ορίζονται μόνο όταν αυτές είναι αναγκαίες. Η ανάγκη για την πλοηγησιμότητα διαπιστώνεται από την εξέταση της φοράς των μηνυμάτων στα διαγράμματα επικοινωνίας και ακολουθίας, όταν μελετούμε τη συμπεριφορά των αντικειμένων. Αν ένα αντικείμενο της κλάσης A πρέπει να στείλει μήνυμα σε αντικείμενο της κλάσης B και υπάρχει συσχέτιση μεταξύ των κλάσεων, τότε θα πρέπει η συσχέτιση να είναι πλοηγήσιμη από την Α προς τη Β. Ο ορισμός της πλοηγησιμότητας υποδηλώνει και την εξάρτηση ή τη σύζευξη μεταξύ των κλάσεων. Όταν τα αντικείμενα μίας κλάσης δε χρειάζεται να γνωρίζουν τα αντικείμενα στο άκρο της συσχέτισης, δεν υπάρχει λόγος να εισάγουμε κάποιου είδους εξάρτηση. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

34 Πλοηγησιμότητα στις κλάσεις πεδίου του συστήματος δανεισμού
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

35 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Εξάρτηση Η εξάρτηση (dependency) μεταξύ δύο στοιχείων της UML είναι μία γενική σχέση ενός στοιχείου πελάτη, το οποίο εξαρτάται με κάποιο τρόπο με άλλο στοιχείο προμηθευτή. Η εξάρτηση σημαίνει ότι κάποια αλλαγή στον προμηθευτή επηρεάζει με κάποιο τρόπο τον πελάτη. Έχουμε ήδη συναντήσει ισχυρές μορφές εξάρτησης μεταξύ κλάσεων που είναι η συσχέτιση και η γενίκευση. Δεν είναι όμως οι μόνες περιπτώσεις από τις οποίες προκύπτει μία σχέση εξάρτησης μεταξύ δύο κλάσεων. Άλλες περιπτώσεις εξάρτησης είναι όταν ένα αντικείμενο της κλάσης πελάτη αποστέλλει μήνυμα σε αντικείμενο της κλάσης προμηθευτή ή όταν κάποια λειτουργία της κλάσης πελάτη έχει μία παράμετρο με τύπο την κλάση προμηθευτή. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

36 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Διεπαφές Οι διεπαφές (interfaces) είναι μηχανισμοί των σύγχρονων γλωσσών προγραμματισμού όπως η Java για την επίτευξη πολυμορφισμού. Μία διεπαφή μπορεί να θεωρηθεί ως μία κλάση χωρίς πεδία όπου όλες οι πράξεις είναι αφηρημένες. Οι διεπαφές της Java μοιάζουν με τις αφηρημένες κλάσεις, αλλά παρουσιάζουν ορισμένες σημαντικές διαφορές που είναι: Οι αφηρημένες κλάσεις μπορεί να έχουν πεδία, ενώ οι διεπαφές όχι. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

37 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Διεπαφές Οι αφηρημένες κλάσεις μπορεί να έχουν αφηρημένες λειτουργίες, δηλαδή χωρίς υλοποίηση, αλλά μπορεί να έχουν και συγκεκριμένες λειτουργίες που κληρονομούνται από τις υποκλάσεις. Οι διεπαφές δηλώνουν τις υπογραφές των λειτουργιών, χωρίς να παρέχουν καμία υλοποίηση. Οι αφηρημένες κλάσεις δηλώνουν κατασκευαστές, ενώ οι διεπαφές όχι. Η ορατότητα μίας διεπαφής για τη Java μπορεί να είναι μόνο δημόσια ή προκαθορισμένη. Οι λειτουργίες μίας αφηρημένης κλάσης μπορεί να έχουν ορατότητα προστατευμένη ή ιδιωτική, ενώ οι λειτουργίες που δηλώνει μία διεπαφή έχουν δημόσια ορατότητα. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

38 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Διεπαφές Η υποκλάση μίας αφηρημένης κλάσης κληρονομεί τη δημόσια διεπαφή και την υλοποίηση που ίσως η αφηρημένη κλάση παρέχει, έχοντας ταυτόχρονα τη δυνατότητα επαναορισμού (overriding) των μεθόδων της. Μία κλάση μπορεί να υλοποιεί (και δεν κληρονομεί) μία ή περισσότερες διεπαφές. Η κλάση θα πρέπει να παρέχει την υλοποίηση για τις μεθόδους που δηλώνει μία διεπαφή, να παρέχει δηλαδή την υλοποίηση της διεπαφής. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

39 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Διεπαφές Επομένως, μία διεπαφή έχει περισσότερο το χαρακτήρα μίας δήλωσης. Δηλώνει υπογραφές (signatures) μεθόδων στις οποίες μία κλάση θα πρέπει να συμμορφώνεται σε περίπτωση που υλοποιεί τη διεπαφή. Οι διεπαφές είναι και το βασικό αντίδοτο για τις γλώσσες προγραμματισμού που δεν υποστηρίζουν την πολλαπλή κληρονομικότητα. Μία κλάση μπορεί να είναι υποκλάση μίας και μόνο κλάσης, ενώ μπορεί να υλοποιεί πολλές διεπαφές. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

40 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Διεπαφές 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

41 Οι δύο συμβολισμοί της UML για την παροχή και χρήση διεπαφής
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

42 Γενίκευση και υλοποίηση διεπαφών
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

43 Συνύπαρξη διεπαφών και αφηρημένων κλάσεων
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

44 οι ρόλοι (roles) των αντικειμένων
Πολλές φορές ακούμε ότι ένα αντικείμενο μπορεί να παίξει περισσότερους του ενός ρόλους. Αν υποθέσουμε ότι μία κλάση είναι υποκλάση μίας κλάσης και ταυτόχρονα υλοποιεί και μία διεπαφή, τότε η κλάση παίζει δύο ρόλους. Ο πρώτος ρόλος της προσδίδεται από τις αρμοδιότητες της υπερκλάσης και ο δεύτερος ρόλος από τις αρμοδιότητες της διεπαφής. 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

45 Τα αντικείμενα της κλάσης Sparrow έχουν δύο ρόλους
2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης


Κατέβασμα ppt "ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google