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

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

Σχεδιασμός Λογισμικού Τεχνολογία Λογισμικού ΙΙ - JAVA

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


Παρουσίαση με θέμα: "Σχεδιασμός Λογισμικού Τεχνολογία Λογισμικού ΙΙ - JAVA"— Μεταγράφημα παρουσίασης:

1 Σχεδιασμός Λογισμικού Τεχνολογία Λογισμικού ΙΙ - JAVA
Ακαδ. Έτος Ανάλυση 1ης Γραπτής Εργασίας

2 Άσκηση 1 – Εκφώνηση (1) Σύστημα λογισμικού για τη διαχείριση «Video Club». Χρήστες: Ταμίας, Πελάτης, Διαχειριστής. Σύστημα εξουσιοδότησης πληρωμής με χρήση πιστωτικής κάρτας. Υποστηριζόμενες λειτουργίες: Εισαγωγή στο σύστημα (log in). Ενοικίαση (ταινίες, παιχνίδια). Διαχείριση συνδρομών πελατών. Διαχείριση υλικού (ταινίες, παιχνίδια). Διαχείριση χρηστών. Πληρωμή. Πληρωμή με πιστωτική κάρτα. Πληρωμή με μετρητά. Πληρωμή επιβάρυνσης λόγω καθυστέρησης επιστροφής.

3 Άσκηση 1 – Εκφώνηση (2) Όλοι οι χρήστες πρέπει να κάνουν log in πριν χρησιμοποιήσουν οποιαδήποτε άλλη λειτουργία. Οι πελάτες μπορούν να πληρώνουν ή να διαχειριστούν τη συνδρομή τους μόνοι τους ή με τη βοήθεια του ταμία. Οι πελάτες δεν μπορούν να ενοικιάσουν ταινίες χωρίς τη βοήθεια του ταμία. Για την πληρωμή μπορεί να χρησιμοποιηθεί και ειδικό υπο- σύστημα διαχείρισης πιστωτικών καρτών. Ο διαχειριστής είναι απλά υπεύθυνος για το υλικό και τους χρήστες.

4 Άσκηση 1 – Εκφώνηση Ερώτησης α)
Συμπληρώστε κατάλληλα τον ακόλουθο πίνακα που αναγράφει ποιος (χρήστης) κάνει τι (ποια λειτουργία):

5 Άσκηση 1 – Απάντηση Ερώτησης α)

6 Άσκηση 1 – Εκφώνηση Ερώτησης β)
Σχεδιάστε το διάγραμμα περιπτώσεων χρήσης που αντιστοιχεί στην πιο πάνω περιγραφή. Τεκμηριώστε σε μια παράγραφο την κάθε σχέση ανάμεσα σε περιπτώσεις χρήσης που χρησιμοποιήσατε. Υπόδειξη: H τεκμηρίωση μπορεί να είναι της μορφής “Χρησιμοποίησα σχέση include επειδή …”.

7 Σχολιάστε την απάντηση
Πρόκειται για εξωτερική υπηρεσία που ζητάει το σύστημα. Δεν χρειάζεται log in. Λάθος σύνδεσμος μεταξύ των χειριστών και των ΠΧ. Χρειάζεται σχέση σύνδεσης (association) αντί της γενίκευσης. Επειδή η πληρωμή είναι υποχρεωτική για την πραγματοποίηση της ενοικίασης (είτε η πληρωμή συμβαίνει κατά την ενοικίαση, είτε κατά την επιστροφή) «include» Είναι exception της διαδικασίας επιστροφής και καλεί τη διαδικασία πληρωμής για την διεκπεραίωση της «extends»

8 Σχολιάστε την απάντηση
Στο διάγραμμα ΠΧ δεν είναι σκόπιμο να δείχνουμε preconditions των ΠΧ ιδιαίτερα όταν αυτή η πληροφορία επιβαρύνει την πολυπλοκότητα του διαγράμματος

9 Σχολιάστε την απάντηση
Ο Διαχειριστής κληρονομεί λειτουργικότητα από τον Ταμία που δεν την χρειάζεται. Το διάγραμμα είναι υπερβολικά φορτωμένο (πάνω από 20 ΠΧ!) σε σχέση με τις πραγματικές ανάγκες της μοντελοποίησης. Οι ΠΧ είναι κάθε μια από τις λειτουργίες που αναφέρθηκαν στην εκφώνηση. Η ανάλυση σε χαμηλότερο επίπεδο δεν είναι αντικείμενο αυτού του διαγράμματος. Σ’ ένα διάγραμμα ΠΧ, για κάθε χειριστή πρέπει να αναγνωρισθούν οι στόχοι/ανάγκες τους. Εστιάζουμε σε στόχους επιπέδου βασικής επιχειρησιακής λειτουργίας και όχι χαμηλού επιπέδου ενεργειών που θα μπορούσαν να αποτελούν συστατικό μιας περίπτωσης χρήσης. ?

10 Άσκηση 1 – Απάντηση Ερώτησης β)

11 Άσκηση 1 – Εκφώνηση Ερώτησης γ)
Δώστε μια αναλυτική περιγραφή της περίπτωσης χρήσης «Ενοικίαση (ταινίες, παιχνίδια)».

12 Εξαιρετική απάντηση (Εργασία Π. Αλαγαδιώτη)

13 Άσκηση 1 – Συχνά Λάθη (1) Τα ονόματα των ΠΧ είναι γενικά και αόριστα.
Tα ονόματα των ΠΧ πρέπει να δείχνουν ενέργεια. To «extend» είναι προς λάθος κατεύθυνση Δεν έχει εντοπιστεί η σχέση γενίκευσης που υπάρχει ανάμεσα στους χρήστες (ταμίας, πελάτης, διαχειριστής). O διαχειριστής δεν συνδέεται με την περίπτωση χρήσης “Διαχείριση Συνδρομών Πελατών”. Μια ΠΧ στην οποία καταλήγει μια σχέση «extend» πρέπει να συνδέεται (αλληλεπιδρά) με το χρήστη. Είναι λάθος η απευθείας σύνδεση δύο περιπτώσεων χρήσης. Δεν έχουν συνδεθεί με σχέση «include» οι ΠΧ Ενοικίαση και Πληρωμή.

14 Άσκηση 1 – Συχνά Λάθη (2) Στην αναλυτική περιγραφή:
Δεν ακολουθείται κάποιο πρότυπο. Δεν έχουν προσδιορισθεί εναλλακτικές ροές. Δεν είναι ξεκάθαρο σε ποιο σημείο της βασικής ροής εμφανίζεται η κάθε εναλλακτική ροή. Στη βασική/εναλλακτική ροή ενεργειών δεν γίνεται αναφορά στις περιπτώσεις χρήσης με τις οποίες σχετίζεται η υπό εξέταση περίπτωση χρήσης. Δεν προσδιορίζεται κατάσταση εισόδου και κατάσταση εξόδου.

15 Άσκηση 2 – Εκφώνηση (1) Δίνεται η προδιαγραφή της περίπτωσης χρήσης «Κράτηση δωματίου». Να σχεδιάσετε το αρχικό διάγραμμα κλάσεων (εννοιολογικό μοντέλο ή μοντέλο περιοχής προβλήματος). Να αιτιολογήσετε τις επιλογές σας: Για τη χρήση συγκεκριμένων κλάσεων. Για τις σχέσεις ανάμεσά τους.

16 Διαφορετικές Όψεις των Διαγραμμάτων Κλάσεων (ΔΚ)
Εννοιολογική Όψη (Domain Model): τα ΔΚ περιγράφουν έννοιες και αντικείμενα του πραγματικού κόσμου ή του πεδίου εφαρμογής και αναφέρονται σε domain conceptual κλάσεις (περιέχονται στο domain model) Όψη Προδιαγραφής (Design Model): τα ΔΚ περιγράφουν τα αντικείμενα ως software class abstractions/interfaces, χωρίς να μας ενδιαφέρει η υλοποίηση σε μια συγκεκριμένη γλώσσα (Java, C++) (περιέχονται στο design model) Όψη Υλοποίησης (Implementation Perspective): τα ΔΚ λαμβάνουν υπόψη την υλοποίηση των κλάσεων με μια συγκεκριμένη τεχνολογία (π.χ. EJB) και γλώσσα (π.χ. Java) Ο ίδιος συμβολισμός μπορεί να έχει διαφορετικές ερμηνείες.

17 Domain Model – Βήματα Κατασκευής
Προσθήκη των απαραίτητων συσχετισμών που αιτιολογούνται από την ανάγκη διατήρησης κάποιας γνώσης Προσθήκη των απαραίτητων πεδίων (προαιρετικά)

18 Αναγνώριση Εννοιολογικών Κλάσεων με Λεκτική Επεξεργασία
Διατρέχουμε το κείμενο της ΠΧ τόσο στο βασικό σενάριο όσο και στα εναλλακτικά σενάρια σημειώνοντας τα ουσιαστικά που υποδηλώνουν είτε έννοιες, είτε χαρακτηριστικά και τα ρήματα που υποδηλώνουν είτε συσχετίσεις κλάσεων, είτε λειτουργίες, όπως περιγράφει και το ακόλουθο σχήμα. Ειδικότερα θεωρούμε ένα ουσιαστικό ως έννοια-κλάση όταν ικανοποιεί τα τρία κριτήρια – εάν έχει: Ταυτότητα. Κατάσταση (περιέχει περισσότερα από ένα χαρακτηριστικά με τιμή). Συμπεριφορά.

19 Κλάση ή Πεδίο Εμπειρικός κανόνας: Εάν στον πραγματικό κόσμο μια έννοια Χ δεν την σκεφτόμαστε ως αριθμό ή κείμενο, τότε το X είναι κλάση και όχι πεδίο. Για παράδειγμα σ’ ένα σύστημα κράτησης θέσεων αεροπορικής εταιρείας ο προορισμός (destination) είναι πεδίο μιας Πτήσης (Flight) ή μια ξεχωριστή κλάση Αεροδρόμιο (Airport);

20 Άσκηση 2 – Εκφώνηση (2)

21 Άσκηση 2 – Εκφώνηση (3)

22 Άσκηση 2 – Εκφώνηση (4)

23 Σχολιάστε την απάντηση
Καλή απάντηση, αλλά με ελλείψεις: Δεν έχουν αναγνωρισθεί έννοιες που σχετίζονται με το πεδίο του προβλήματος όπως: Βεβαίωση, Πληρωμή, Πληρωμή Μετρητοίς, Πληρωμή με Πιστωτική. Δεν έχουν αναγνωρισθεί όλοι οι συσχετισμοί εννοιών, όπως γενίκευσης μεταξύ της κλάσης Πληρωμής και των κλάσεων Πληρωμή Μετρητοίς, Πληρωμή με Πιστωτική, Κράτηση – Πληρωμή, Πληρωμή – Βεβαίωση. Οι σχέσεις σ’ ένα διάγραμμα κλάσεων θα πρέπει να ονοματίζονται και να έχουν πολλαπλότητες.

24 Σχολιάστε την απάντηση
Ο προσδιορισμός των συνοριακών κλάσεων (π.χ. GUIs) αφορά το μεταγενέστερο στάδιο του σχεδιασμού και όχι της εννοιολογικής ανάλυσης. Εδώ περιοριζόμαστε μόνο στις κλάσεις οντοτήτων. Η κλάση DatabaseConnection αφορά την υλοποίηση και όχι το εννοιολογικό μοντέλο. Οι μέθοδοι των κλάσεων σε αυτό το στάδιο δεν μπορούν να προσδιοριστούν μεθοδολογικά και ως εκ τούτου δεν προστίθενται στο διάγραμμα.

25 Εξαιρετική απάντηση (Εργασία Ε. Πατμανίδου)

26 Άσκηση 2 – Απάντηση (1)

27 Άσκηση 2 – Συχνά Λάθη Δεν βρέθηκαν όλες οι κλάσεις του πεδίου προβλήματος Π.χ. Βεβαίωση Οι σχέσεις συσχέτισης δεν έχουν πολλαπλότητα και όνομα. Η σχέση κληρονομικότητας χρησιμοποιήθηκε με λάθος τρόπο. Χρησιμοποιήθηκαν κλάσεις που δεν αφορούν το πεδίο προβλήματος. Δεν έχουν αιτιολογηθεί επαρκώς οι σχεδιαστικές επιλογές.

28 Άσκηση 3 – Εκφώνηση Να σχεδιάσετε το διάγραμμα ακολουθίας για τη βασική ροή της ανωτέρω περίπτωσης χρήσης «Κράτηση Δωματίου». Δώστε ιδιαίτερη προσοχή ώστε το διάγραμμα ακολουθίας να είναι συνεπές ως προς την περιγραφή της περίπτωσης χρήσης. Εάν αυτό δεν είναι εφικτό, τότε να διορθώσετε ως απαιτείται την περίπτωση χρήσης.

29 Σχολιάστε την απάντηση
Το βασικό σενάριο της ΠΧ «Κράτηση Δωματίου» υλοποιείται από την αλληλεπίδραση (ανταλλαγή μηνυμάτων) μεταξύ των οντοτήτων-αντικειμένων που έχουν αναγνωρισθεί στο κείμενο του σεναρίου. Οι οντότητες αυτές είναι τουλάχιστον: Πελάτης, Υπάλληλος, Κράτηση, Δωμάτιο, Πληρωμή, Βεβαίωση. Εκτός από τις κλάσεις οντοτήτων στην εκτέλεση του σεναρίου συμμετέχουν και συνοριακές κλάσεις (GUIs) όπως είναι: Κεντρικό Μενού, UI03-Διαθεσιμότητα και UI07-Κρατήσεις. Το διάγραμμα ακολουθίας δεν ανταποκρίνεται στο ζητούμενο επειδή: Αποκρύπτει την αναζητούμενη αλληλεπίδραση μεταξύ των προαναφερθέντων αντικειμένων που συνθέτουν το σύστημα πίσω από μια οντότητα «Σύστημα» που στην πράξη είναι αυτό που θέλουμε να αναλύσουμε και να σχεδιάσουμε. Δεν βλέπει το σύστημα ως αλληλεπίδραση αντικειμένων αλλά ως ένα «μαύρο κουτί» που απλά παρέχει λειτουργίες (η βασική διαφορά μεταξύ ΟΟ και δομημένης ανάλυσης είναι η διαίρεση του προβλήματος σε εννοιολογικές κλάσεις, αντί για τη διάσπαση σε επίπεδο λειτουργιών) Παρουσιάζει απευθείας διάλογο μεταξύ Υπάλληλου και Πελάτη σε επίπεδο χειριστών που δεν ενδιαφέρει το σχεδιασμό του συστήματος, αφού το σύστημα δεν παρεμβάλλεται καθόλου.

30 Σχολιάστε την απάντηση
Η αλληλεπίδραση του χειριστή Υπάλληλος με το σύστημα θα έχει ως κεντρικό άξονα τις δύο φόρμες UI03-Διαθεσιμότητα και UI07-Κρατήσεις. Η δημιουργία του αντικειμένου της Κράτησης δεν μπορεί να γίνει απ’ ευθείας από τον χειριστή Υπάλληλο (ο χειριστής δεν κατασκευάζει αντικείμενα!), αλλά μπορεί να γίνει από κάποιο άλλο αντικείμενο, αφού προηγουμένως ο Υπάλληλος έχει επιλέξει «Κράτηση» στη φόρμα του GUI. Για παράδειγμα ο Υπάλληλος δεν μπορεί να αλληλεπιδράσει απ’ ευθείας με το αντικείμενο Πελάτης. Αυτό θα γίνει μέσω του συνοριακού αντικειμένου (φόρμα UI) UI07-Κρατήσεις.

31 Άσκηση 3 – Απάντηση (1)

32 Άσκηση 3 – Συχνά Λάθη Το διάγραμμα ακολουθίας δεν αντιστοιχεί στην ΠΧ.
Το διάγραμμα ακολουθίας δεν είναι συνεπές με το αρχικό διάγραμμα κλάσεων της Άσκησης 2, ενώ και τα δύο βασίζονται στην ίδια περίπτωση χρήσης: Δεν χρησιμοποιεί αντικείμενα από όλες τις κλάσεις του αρχικού διαγράμματος κλάσεων. Δεν εμφανίζονται οι κλάσεις και τα αντικείμενα στον οριζόντιο άξονα. Δεν απεικονίζεται η δημιουργία των κατάλληλων αντικειμένων. Τα μηνύματα είναι ασαφή και αόριστα.

33 Άσκηση 4 – Εκφώνηση (1) Απαιτήσεις:
Μια εταιρεία λεωφορείων πραγματοποιεί έναν αριθμό από διαδρομές σε μια ευρεία γεωγραφική περιοχή, χρησιμοποιώντας: Λεωφορεία κανονικού μεγέθους (full-sized buses) και Λεωφορεία μικρού μεγέθους (mini-buses). Η οργάνωση του χρονοδιαγράμματος αναχωρήσεων και αφίξεων γίνεται σε εβδομαδιαία βάση. Πολλά ταξίδια πραγματοποιούνται σε κάθε διαδρομή κατά τη διάρκεια μιας εβδομάδας και για καθένα από τα ταξίδια αυτά απαιτείται ένα λεωφορείο. Ορισμένα από τα ταξίδια επιδοτούνται από μία ή περισσότερες τοπικές αρχές των περιοχών από τις οποίες διέρχονται, καθώς διαφορετικά δεν θα ήταν οικονομικά βιώσιμη η πραγματοποίησή τους. Στα επιδοτούμενα ταξίδια χρησιμοποιούνται πάντοτε λεωφορεία κανονικού μεγέθους.

34 Άσκηση 4 – Εκφώνηση (2) Ζητούμενα:
Να σχεδιάσετε ένα διάγραμμα κλάσεων που θα απεικονίζει την κατανομή λεωφορείων σε ταξίδια. Το διάγραμμα κλάσεων θα περιλαμβάνει (τουλάχιστον) κλάσεις, σχέσεις ανάμεσα σε κλάσεις και προσδιοριστές πολλαπλότητας. Επεξηγήστε τις επιλογές σας.

35 Σχολιάστε την απάντηση
Μπορεί να παραβιαστεί ο περιορισμός της χρήσης λεωφορείου κανονικού μεγέθους στα επιδοτούμενα ταξίδια, αφού μπορούμε να συσχετίσουμε ένα οποιοδήποτε λεωφορείο (είτε κανονικού είτε μικρού μεγέθους) με μια οποιαδήποτε διαδρομή (είτε επιδοτούμενη, είτε όχι) Παράλειψη είναι η μη μοντελοποίηση του «Μη Επιδοτούμενου Ταξιδιού» ως ξεχωριστή υποκλάση της γενικής κλάσης «Ταξίδι». Στην αντικειμενοστρεφή προσέγγιση σε τέτοιες περιπτώσεις ορίζεται μια γενική αφηρημένη κλάση και τα είδη αυτής της γενικής κλάσης ορίζονται ως υποκλάσεις.

36 Άσκηση 4 – Απάντηση

37 Άσκηση 4 – Συχνά Λάθη Δεν βρέθηκαν όλες οι κλάσεις του πεδίου προβλήματος. Δεν έχει προσδιοριστεί η πολλαπλότητα σε όλα τα σημεία του διαγράμματος. Υπάρχουν λάθη στις σχέσεις ανάμεσα στις κλάσεις Δεν έχουν επεξηγηθεί επαρκώς οι σχεδιαστικές επιλογές.

38 Άσκηση 5 – Εκφώνηση (1) Διάγραμμα συνεργασίας σχετικά με τον τρόπο λειτουργίας ενός κινητού τηλεφώνου κυψελοειδούς τεχνολογίας:

39 Άσκηση 5 – Εκφώνηση Ερώτησης α)
Να σχεδιάσετε το αντίστοιχο διάγραμμα ακολουθίας επεξηγώντας συνοπτικά τα βασικά συστατικά του μέρη.

40 Εξαιρετική απάντηση (Εργασία Ν. Ασάνη)

41 Άσκηση 5 – Απάντηση Ερώτησης α) - Παρατηρήσεις / Επεξηγήσεις -
Δύο διαγράμματα ακολουθίας για τις ενέργειες που πραγματοποιούνται όταν ο χρήστης “πατήσει”: Ένα “κουμπί” που αντιστοιχεί σε αριθμό / ψηφίο. Το “κουμπί” πραγματοποίησης κλήσης. Χρήση αντικειμένων (με όνομα ή χωρίς). Γραμμή ζωής αντικειμένουΤο χρονικό διάστημα ύπαρξής του. Ανταλλαγή μηνυμάτων. Ενεργοποιήσεις  Χρόνος εκτέλεσης μεθόδου ως απόκριση της λήψης ενός μηνύματος. Απεικόνιση βρόχων και συνθηκών επανάληψης.

42 Άσκηση 5 – Εκφώνηση Ερώτησης β)
Τι συμπεράσματα εξάγετε αν συγκρίνετε τα δύο διαγράμματα;

43 Άσκηση 5 – Απάντηση Ερώτησης β)
Και τα δύο διαγράμματα απεικονίζουν ακριβώς την ίδια πληροφορία, χρησιμοποιώντας διαφορετικούς τρόπους παράστασης. Το διάγραμμα ακολουθίας: Χρειάζεται περισσότερο χώρο από το διάγραμμα συνεργασίας. Παρουσιάζει με πιο εύκολα κατανοητό τρόπο τον αλγόριθμο (τη λογική) που μοντελοποιεί. Το διάγραμμα συνεργασίας: Είναι περισσότερο πυκνό στην απεικόνιση της συνεργασίας των αντικειμένων. Απαιτεί μεγαλύτερη προσπάθεια η κατανόηση του αλγόριθμου (της λογικής) που μοντελοποιεί.

44 Άσκηση 5 – Συχνά Λάθη Δεν έγινε κατανοητό το 1* (η επαναληπτική εκτέλεση ορισμένων ενεργειών). Δεν έγινε κατανοητή η αρίθμηση του διαγράμματος συνεργασίας.

45 Άσκηση 6 – Εκφώνηση (1) Δίνεται το διάγραμμα κλάσεων:
Δίνεται το διάγραμμα κλάσεων: Θα έπρεπε να είναι composition και όχι aggregation

46 Άσκηση 6 – Εκφώνηση Ερώτησης α)
Υλοποιήστε σε Java το περίγραμμα των κλάσεων του διαγράμματος. Σε κάθε περίγραμμα θα πρέπει να εμφανίζονται όλα τα χαρακτηριστικά και οι αντίστοιχες μέθοδοι.

47 Κλάση Car

48 Κλάσεις Engine, Wheel

49 Άσκηση 6 – Εκφώνηση Ερώτησης β)
Γράψτε τον κώδικα του κατασκευαστή της κλάσης Car: Παίρνει δύο παραμέτρους και αρχικοποιεί τα πεδία του χρώματος και του μοντέλου. Δημιουργεί έναν κινητήρα ιπποδύναμης 120 ίππων και 4 ρόδες αλουμινίου 16 ιντσών.

50 Σχολιάστε την απάντηση

51 Δημιουργός Car Η δημιουργία πίνακα δεν σημαίνει και δημιουργία
των αντίστοιχων αντικειμένων.

52 Χρησιμοποιήθηκαν τέσσερεις μεταβλητές αντί για πίνακα.
Άσκηση 6 – Συχνά Λάθη Δημιουργήθηκε η κλάση Car χωρίς τα απαραίτητα πεδία που υλοποιούν τις σχέσεις: private Engine eng; private Wheel[] wheels; Δεν έχει ληφθεί υπόψη ο ρόλος που έχουν ορισμένες κλάσεις στις συσχετίσεις που συμμετέχουν (eng, wheels). Δεν δημιουργήθηκαν σωστά οι τροχοί στον κατασκευαστή wheels = new Wheel[4]; for (int i=0;i<wheels.length;i++) wheels[i] = new Wheel(16, true); Χρησιμοποιήθηκαν τέσσερεις μεταβλητές αντί για πίνακα. Δεν ήταν αναγκαία η υλοποίηση των μεθόδων.

53 Άσκηση 7 – Εκφώνηση (1) Έστω η πιο κάτω κλάση που μοντελοποιεί ένα παιχνίδι – σκύλο:

54 Άσκηση 7 – Εκφώνηση (2) Ο σκύλος μπορεί να λέει το όνομά του, όταν το παιδί πατά στο χειριστήριο το αντίστοιχο πλήκτρο. Ο σκύλος μπορεί να κινείται προς τέσσερεις κατευθύνσεις: Μπροστά (Μ), Πίσω (Π), Αριστερά (Α), Δεξιά (Δ). Η κίνηση προς την κατεύθυνση αντιστοιχεί στις μεθόδους moveForward, moveBackward, κ.λπ. Η διάρκεια πατήματος του πλήκτρου κατεύθυνσης αντιστοιχεί στην απόσταση που θα πρέπει να διανυθεί σε μέτρα. Το πάτημα του πλήκτρου στο χειριστήριο αντιστοιχεί στην κλήση της αντίστοιχης μεθόδου.

55 Άσκηση 7 – Εκφώνηση (3) Ζητούμενα: Υποδείξεις:
Συμπληρώστε / τροποποιήστε την κλάση Dog. Φτιάξτε την κλάση main και κινήστε το σκύλο: Α-10, Π-20, Α-15, Μ-20, Δ-10, Δ-11. Υπολογίστε τη συνολική απόσταση που έχει διανύσει ο σκύλος. Κάντε το σκύλο να πει το όνομά του (τυπώστε το όνομά του στην οθόνη). Υποδείξεις: Α-10 σημαίνει αριστερά 10 μέτρα. Ο υπολογισμός της απόστασης που έχει διανύσει ο σκύλος θα γίνει με την υλοποίηση σχετικής μεθόδου.

56 Σχολιάστε την απάντηση
Στον αντικειμενοστρεφή σχεδιασμό και προγραμματισμό ένας βασικός στόχος είναι να μειώσουμε τη σύζευξη μεταξύ των κλάσεων (δηλαδή τις εξαρτήσεις) και να αυξήσουμε την συνοχή της κάθε κλάσης. Η κίνηση αφορά το παιχνίδι-σκύλος και συνεπώς η διαχείριση του υπολογισμού της συνολικής απόστασης θα πρέπει να παραμείνει στον σκύλο (συνεκτικότητα).

57 Σχολιάστε την απάντηση
Δόθηκε ως String και όχι void. Δεν μπορεί να αλλάξει Δόθηκε ως String και όχι void. Δεν μπορεί να αλλάξει Γενικότερα, ο διαχωρισμός των υπηρεσιών που παρέχει μια κλάση από το Ι/Ο (την επικοινωνία με τον χρήστη) είναι καλή πρακτική διότι βοηθάει στην καλύτερη συντηρησιμότητα της εφαρμογής. Για παράδειγμα, μπορούμε ευκολότερα να μεταφέρουμε το Ι/Ο από την κονσόλα σε γραφικό περιβάλλον όταν όλο το Ι/Ο είναι εντοπισμένο σε μια ξεχωριστή κλάση.

58 Άσκηση 7 – Απάντηση (1)

59 Άσκηση 7 – Απάντηση (2)

60 Άσκηση 7 – Απάντηση (3)

61 Άσκηση 7 – Απάντηση (4)

62 Άσκηση 7 – Συχνά Λάθη Οι κλάσεις δημιουργήθηκαν μέσα σε ένα αρχείο.
Οι κλάσεις δεν δηλώθηκαν public. Το όνομα του σκύλου δηλώθηκε σαν σταθερά και όχι ως παράμετρος του κατασκευαστή. Η απόσταση που διάνυσε ο σκύλος υπολογίζεται στη main.

63 Άσκηση 8 – Εκφώνηση Έστω ένα fast food που μπορείτε να παραγγείλετε hamburger και pizza. Φτιάξτε μια εφαρμογή που θα αποτελείται από: Τις κλάσεις hamburger και pizza μαζί με τις αναγκαίες μεθόδους: Το hamburger κοστίζει 1.5 ΕΥΡΟ. Όταν έχει και τυρί, τότε η τιμή του είναι 20% μεγαλύτερη. Υπάρχει και σε μεγάλο μέγεθος που κοστίζει 20% περισσότερο. Αντίστοιχα, η πίτσα διατίθεται σε τρία μεγέθη, ατομική, οικογενειακή και γίγας, με τιμές 5, 7.5 και 10 ΕΥΡΟ αντίστοιχα. 2) Την κλάση Μain, η οποία θα: Ζητά από τον πελάτη την παραγγελία του (πόσα hamburger και/ή πόσες πίτσες), καθώς και τα επιμέρους στοιχεία (μέγεθος, κ.λπ.). Υπολογίζει την τιμή της παραγγελίας. Τυπώνει (στην οθόνη του υπολογιστή) την απόδειξη. Ο υπολογισμός της παραγγελίας και η εκτύπωση της απόδειξης αποτελούν ξεχωριστές μεθόδους της κλάσης Μain.

64 Σχολιάστε την απάντηση
Η υλοποίηση δεν είναι σύμφωνη με την αντικειμενοστρεφή φιλοσοφία. Προσπαθούμε να συνδυάσουμε σε μια κλάση δύο έννοιες. Στην κλάση Pizza αναμειγνύονται τόσο η έννοια του προϊόντος pizza όσο και η έννοια της παραγγελίας. Έτσι εκτός από τα χαρακτηριστικά της Pizza όπως τιμή ανά είδος, αποθηκεύονται ή επεξεργάζονται και χαρακτηριστικά της παραγγελίας όπως αριθμός κομματιών ανά είδος και συνολικό κόστος παραγγελίας. Για να ξεχωρίσουμε τις έννοιες, η παραγγελία μπορεί να οριστεί είτε ως ανεξάρτητη κλάση Pizza_Order που θα υλοποιεί μια σχέση συνάθροισης με την κλάση Pizza πολλαπλότητας 1..* ή για απλούστερη υλοποίηση μπορούμε να θεωρήσουμε στην κλάση Main έναν πίνακα orderedPizza που θα αποθηκεύει τα αντικείμενα τύπου Pizza που θα έχει κάποιος παραγγείλει.

65 Άσκηση 8 – Απάντηση Κλάση Main: Κλάση Hamburger: Κλάση Pizza: main()
calculateOrder() printOrder() createHamburger() createPizza() Κλάση Hamburger: addCheese() setBigSize() calculatefinalPrice() getHamburgerPrice() toString() Κλάση Pizza: setPizzaSize() calculatePrice() getPizzaPrice()

66 Άσκηση 8 – Απάντηση Κλάση Hamburger (1)

67 Άσκηση 8 – Απάντηση Κλάση Hamburger (2)

68 Άσκηση 8 – Απάντηση Κλάση Hamburger (3)

69 Άσκηση 8 – Απάντηση Κλάση Pizza (1)

70 Άσκηση 8 – Απάντηση Κλάση Pizza (2)

71 Άσκηση 8 – Απάντηση Κλάση Pizza (3)

72 Άσκηση 8 – Απάντηση Κλάση Main (1)

73 Άσκηση 8 – Απάντηση Κλάση Main (2)

74 Άσκηση 8 – Απάντηση Κλάση Main (3)

75 Άσκηση 8 – Απάντηση Κλάση Main (4)

76 Άσκηση 8 – Απάντηση Κλάση Main (5)

77 Άσκηση 8 – Απάντηση Κλάση Main (6)
77

78 Άσκηση 8 – Απάντηση Κλάση Main (7)
78

79 Άσκηση 8 – Συχνά Λάθη Δεν γίνεται σωστά η παραγγελία
Όλα τα hamburger ιδίου τύπου Όλες οι πίτσες ιδίου τύπου Ο υπολογισμός της τιμής γίνεται στη main και όχι με μέθοδο των επιμέρους κλάσεων Οι κλάσεις hamburger και pizza έχουν μόνο κατασκευαστή Οι κλάσεις hamburger και pizza δηλώνονται στο ίδιο αρχείο και μέσα στην κλάση Main.

80 Άσκηση 9 – Εκφώνηση (1) H πιο κάτω κλάση περιγράφει αντικείμενα ενός Video Club:

81 Άσκηση 9 – Εκφώνηση (2) Να επεκτείνετε την κλάση VideoClubObj έτσι ώστε να περιέχει: Μια μέθοδο shortPrint(), η οποία να εμφανίζει συνοπτικά τον κωδικό, τον αγγλικό τίτλο και τη διάρκεια ενός αντικειμένου. Δύο κατασκευαστές - έναν χωρίς παραμέτρους που αναθέτει σταθερές τιμές στα πεδία της κλάσης και έναν με παραμέτρους για όλα τα πεδία της κλάσης. Μια μέθοδο cost(int days) που να υπολογίζει το κόστος ενοικίασης. Μια μέθοδο toString(), η οποία να επιστρέφει σε μορφή κειμένου τα στοιχεία ενός αντικειμένου. Μια στατική μέθοδο setBaseCharge(float b), η οποία να αλλάζει τη βασική χρέωση που ισχύει για όλες τις ταινίες. Να δημιουργήσετε μία κλάση TestVideoClub, της οποίας η μέθοδος main να: Δημιουργεί δύο αντικείμενα τύπου VideoClubObj. Παρουσιάζει τα στοιχεία τους στον χρήστη. Να τυπώνει το συνολικό κόστος ενοικίασης 2 ταινιών για 5 ημέρες.

82 Σχολιάστε την απάντηση
Η μέθοδος toString() κληρονομείται από την κλάση Object και αν κληθεί χωρίς να γίνει override επιστρέφει το όνομα της κλάσης σε μορφή συμβολοσειράς. Όταν όμως η μέθοδος γίνεται override, όπως στην άσκηση, την ορίζουμε ώστε να μας επιστρέφει σε μορφή συμβολοσειράς τα στοιχεία του αντικειμένου που είναι οι τιμές των πεδίων του. Θέλουμε κάτι σαν το παρακάτω:

83 Άσκηση 9 – Απάντηση (1)

84 Άσκηση 9 – Απάντηση (2)

85 Καλείται η μέθοδος toString()
Άσκηση 9 – Απάντηση (3) Καλείται η μέθοδος toString()

86 Άσκηση 9 – Συχνά Λάθη Δεν δημιουργείται άλλο αρχείο για το TestVideoClub. Δημιουργείται άλλο αρχείο για το TestVideoClub αλλά και Main.

87 ΣΤΑΤΙΣΤΙΚΑ ΣΤΟΙΧΕΙΑ ΠΕΙ1
Παραδόθηκαν 21 εργασίες 2 φοιτητές δεν παρέδωσαν εργασία Μέσος όρος εργασίας 5,8


Κατέβασμα ppt "Σχεδιασμός Λογισμικού Τεχνολογία Λογισμικού ΙΙ - JAVA"

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


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