Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»

ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

ΔΕΥΤΕΡΗ ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ


ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2022-2023

ΣΤΟΙΧΕΙΑ ΠΟΥ ΣΥΜΠΛΗΡΩΝΕΙ Ο ΦΟΙΤΗΤΗΣ / Η ΦΟΙΤΗΤΡΙΑ

Ονοματεπώνυμο Φοιτητή/Φοιτήτριας:

Αριθμός Μητρώου:

Κωδικός Θ.Ε.: ΠΛΗ24

Κωδικός Τμήματος:

Α/Α Γραπτής Εργασίας: 2η ΕΡΓΑΣΙΑ

Ονοματεπώνυμο Καθηγητή:

Σχόλια προς Καθηγητή:

Υπεύθυνη Δήλωση Φοιτητή/Φοιτήτριας: Βεβαιώνω ότι είμαι συγγραφέας αυτής της εργασίας και ότι κάθε
βοήθεια την οποία είχα για την προετοιμασία αυτής της εργασίας, είναι πλήρως αναγνωρισμένη και αναφέρεται,
είτε στο σημείο «Σχόλια προς καθηγητή», είτε μέσα στην εργασία. Επίσης, έχω αναφέρει τις όποιες πηγές από τις
οποίες έκανα χρήση δεδομένων, ιδεών ή λέξεων, είτε αυτές αναφέρονται ακριβώς, είτε παραφρασμένες. Επίσης,
βεβαιώνω ότι αυτή η εργασία προετοιμάστηκε από εμένα προσωπικά ειδικά για τη συγκεκριμένη Θεματική
Ενότητα.

Συμφωνώ και αποδέχομαι την ανωτέρω δήλωση

Δε συμφωνώ και δεν αποδέχομαι την ανωτέρω δήλωση (στην περίπτωση αυτή, ο Κ-Σ έχει δικαίωμα
να μην αξιολογήσει την εργασία του φοιτητή/της φοιτήτριας)

Ημερομηνία ανακοίνωσης εργασίας: Δευτέρα, 12/12/2022

Ημερομηνία υποβολής εργασίας: Τετάρτη, 18/01/2023, 11:59 μ.μ.

Ημερομηνία υποβολής εργασίας με ατομική παράταση: Τετάρτη 25/01/2023, 11:59 μ.μ.


Ο κάθε φοιτητής/φοιτήτρια δικαιούται μια ατομική παράταση σε όλη τη διάρκεια του ακαδημαϊκού έτους

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 1


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Σχόλια προς το Φοιτητή/Φοιτήτρια:

Αναλυτική Αξιολόγηση:
Άσκηση Περιγραφή Ποσοστό % Βαθμός

1.Α Σύστημα Υποβοήθησης Διακόσμησης Εικονικού Χριστουγεννιάτικου 15


Δέντρου. Δημιουργία Διαγράμματος Ακολουθίας

1.Β. Σύστημα Υποβοήθησης Διακόσμησης Εικονικού Χριστουγεννιάτικου 10


Δέντρου. Δημιουργία Διαγράμματος Κλάσεων

2.A Σύστημα BetProject: Κληρονομικότητα Κλάσεων, Υποσκέλιση


20
(override) Μεθόδων και Υλοποίηση Διεπαφών

2.B Σύστημα BetProject: Υλοποίηση Διαδικασιών 20

2.Γ Σύστημα BetProject: Υλοποίηση Κατασκευαστή και Μεθόδου 10


Εκτύπωσης σε Αρχείο

2.Δ Σύστημα BetProject: Υλοποίηση Προσομοίωσης 10

2.Ε Σύστημα BetProject: Δημιουργία Διαγράμματος Κλάσεων από Κώδικα 05


Java

3. Συμμόρφωση με τους Κανόνες Συγγραφής 10

Σύνολο: 100

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 2


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Εκφώνηση 1ης Άσκησης


Σύστημα Υποβοήθησης Διακόσμησης Εικονικού Χριστουγεννιάτικου Δέντρου
Έστω ένα (διαδικτυακό) σύστημα μέσω του οποίου ο χρήστης μπορεί να αγοράσει εικονικά στολίδια για το
εικονικό Χριστουγεννιάτικο Δέντρο του, να το διακοσμήσει και να το ενεργοποιήσει (δηλαδή να “ανάψει” τα
λαμπάκια / στολίδια που αυτό περιέχει). Το σύστημα αποτελείται από 4 Περιπτώσεις Χρήσης (Π.Χ.) («Είσοδος
στο Σύστημα (Login) με Λογαριασμό Social Media», «Αγορά Στολιδιών», «Διακόσμηση Χριστουγεννιάτικου
Δέντρου» και «Ενεργοποίηση Χριστουγεννιάτικου Δέντρου»). Παρακάτω δίνεται το διάγραμμα Π.Χ. του
συστήματος και η λεκτική περιγραφή με κείμενο της Π.Χ. «Διακόσμηση Χριστουγεννιάτικου Δέντρου».

Λεκτική Περιγραφή Περίπτωσης Χρήσης «Διακόσμηση Χριστουγεννιάτικου Δέντρου»

Όνομα Π.Χ.: Διακόσμηση Χριστουγεννιάτικου Δέντρου (Π.Χ.-3)


Χειριστής: Χρήστης
Σύντομη Περιγραφή:
Η Π.Χ. εκκινεί όταν ο χρήστης θελήσει να τοποθετήσει στολίδια στο εικονικό του Χριστουγεννιάτικο δέντρο.
Αρχικά ο χρήστης βλέπει μια λίστα με τα στολίδια που έχει αγοράσει (π.χ. κόκκινες γιρλάντες, χρυσές
γιρλάντες, κόκκινες μπάλες, μεγάλο αστέρι). Υπάρχουν τρία είδη στολιδιών (μπάλες, γιρλάντες, και
αστέρια), όπου τα τρία πρώτα χαρακτηρίζονται από το χρώμα τους και τα αστέρια από το μέγεθός τους. Σε
περίπτωση που ο χρήστης δεν είναι ικανοποιημένος από τα στολίδια που διαθέτει μπορεί να αγοράσει κι
άλλα. Εφόσον δεν επιθυμεί να αγοράσει επιπλέον στολίδια, προχωρά με την επιλογή ενός από τα
διαθέσιμα στολίδια και το τοποθετεί στο δέντρο εισάγοντας τις 3-Διαστάσεων συντεταγμένες του
στολιδιού (με drag n’ drop τεχνολογίες για την εναπόθεση του στολιδιού και την 3Δ περιστροφή του
δέντρου). Κατά την ολοκλήρωση του στολισμού ο χρήστης βλέπει μια προεπισκόπηση (preview) του

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 3


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Χριστουγεννιάτικου δέντρου.
Ροή Γεγονότων
Βασική Ροή:
1 Ο χρήστης επιλέγει στην Αρχική Οθόνη τη «Διακόσμηση Χριστουγεννιάτικου Δέντρου».
2 Το σύστημα δείχνει τη λίστα με τα διαθέσιμα (αγορασμένα) Χριστουγεννιάτικα στολίδια.
[Εναλλακτική Ροή Α]
3 Ο χρήστης επιλέγει ένα στολίδι από τη λίστα και το τοποθετεί πάνω στο εικονικό δέντρο.
4 Το σύστημα αποθηκεύει τη θέση του στολιδιού στον 3-Διαστάσεων χώρο του εικονικού δέντρου.
[Εναλλακτική Ροή Β]
5 Ο χρήστης επιλέγει να δει μια προεπισκόπηση του εικονικού Χριστουγεννιάτικου δέντρου.
6 Το σύστημα “σαρώνει” τη λίστα με τα στολίδια που έχουν τοποθετηθεί στο δέντρο και εκτελεί την
οπτική τους αναπαράσταση (rendering), ανάλογα με τον τύπο τους (διαφορετική για κάθε στολίδι).
(Τα βήματα 3 έως 6 επαναλαμβάνονται για όλα τα Χριστουγεννιάτικα στολίδια της λίστας)
Εναλλακτικές Ροές
Εναλλακτική Ροή Α:
2α1 Ο χρήστης θέλει να αγοράσει επιπλέον στολίδια.
2α2 Το σύστημα καλεί την Π.Χ.-2 «Αγορά Στολιδιών».
Εναλλακτική Ροή Β:
4α1 Η επιλεγμένη θέση βρίσκεται εκτός του 3Δ χώρου που καταλαμβάνει το δέντρο.
4α2 Το σύστημα δείχνει μήνυμα λάθους και επιστρέφει στο βήμα 3 της βασικής ροής.
Προϋποθέσεις: - Ο χρήστης έχει κάνει (επιτυχημένη) είσοδο στο σύστημα.
Μετασυνθήκες: - Κλήση της Π.Χ.-2 «Αγορά Στολιδιών».
- Το δέντρο είναι αποθηκευμένο και έτοιμο για ενεργοποίηση.

Ερώτημα 1.Α – Δημιουργία Διαγράμματος Ακολουθίας


Καλείστε να δημιουργήσετε το διάγραμμα ακολουθίας για την Π.Χ. «Διακόσμηση Χριστουγεννιάτικου Δέντρου»,
απεικονίζοντας τη βασική ροή και τις 2 εναλλακτικές ροές που διαθέτει.
Τεκμηριώστε σύντομα τις επιλογές σας με μορφή πίνακα, επεξηγώντας σε κάθε γραμμή του πίνακα τον τρόπο
που απεικονίσατε στο διάγραμμα ακολουθίας κάθε ένα από τα βήματα της υπό εξέταση περίπτωσης χρήσης.
Σημείωση:
Για την αναπαράσταση της χρήσης δυναμικού πολυμορφισμού, δηλαδή για την απεικόνιση της κλήσης σε
αφηρημένη (abstract) μέθοδο μιας υπερκλάσης, η οποία κατά το χρόνο εκτέλεσης (run-time) θα οδηγήσει στην
εκτέλεση της αντίστοιχης μη αφηρημένης (concrete) υλοποίησης της μεθόδου σε κάποια από τις υποκλάσεις,
εμφανίστε μόνο την κλήση στην υπερκλάση (όπως θα γινόταν και στον κώδικα). Η εύρεση της υπεύθυνης
υποκλάσης για την εκτέλεση της λειτουργίας γίνεται αυτόματα από το JRE και συνεπώς δεν είναι μέρος του
διαγράμματος ακολουθίας.
(Σύνολο: 15 μονάδες)

Μαθησιακά Αποτελέσματα
Στην Άσκηση 1.A. θα σας δοθεί η δυνατότητα να κατανοήσετε την κατασκευή του «Διαγράμματος
Ακολουθίας». Πιο συγκεκριμένα θα μπορέσετε:
 να περιγράψετε το Διάγραμμα Ακολουθίας,

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 4


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

 να περιγράψετε τα μέλη που αυτό περιλαμβάνει,


 να σχεδιάσετε τα σύμβολα που αυτό περιλαμβάνει,
 να αντιστοιχίσετε τα μέλη με τα σύμβολα που αυτό περιλαμβάνει,
 να συνδέσετε τη λειτουργικότητα του κάθε συμβάντος με την έννοια της ιχνηλασιμότητας.

Απάντηση 1ης Άσκησης / Ερώτημα Α

Εάν δεν έχετε δώσει απάντηση γράψτε με κεφαλαία γράμματα, ΔΕΝ ΑΠΑΝΤΗΘΗΚΕ.
Εάν εν γνώση σας δίνετε ελλιπή απάντηση γράψτε με κεφαλαία γράμματα, ΕΛΛΙΠΗΣ ΑΠΑΝΤΗΣΗ.
Εξηγήστε σε ποιο σημείο θεωρείτε την απάντηση ελλιπή και γιατί.

Διάγραμμα Ακολουθίας:

Τεκμηρίωση Επιλογών:

Βήμα Π.Χ. Απεικόνιση στο Διάγραμμα Ακολουθίας


Βασική Ροή
1
2
3
4
5
6
Εναλλακτικές Ροές
Εναλλακτική Ροή Α
2α1
2α2
Εναλλακτική Ροή Β
4α1
4α2

Ερώτημα 1.Β – Δημιουργία Διαγράμματος Κλάσεων


Με βάση το διάγραμμα ακολουθίας και την προδιαγραφή της Π.Χ. της Άσκησης 1, να σχεδιάσετε το λεπτομερές
Διάγραμμα Κλάσεων. Επισημαίνεται ότι το παραχθέν διάγραμμα κλάσεων θα πρέπει να είναι σε πλήρη
συμφωνία με το διάγραμμα ακολουθίας που σχεδιάσατε στο Ερώτημα 1.Α. Περιγράψτε τις κλάσεις του
συστήματος, τις αρμοδιότητές τους (μέθοδοι και ιδιότητες/πεδία), τις σχέσεις τους με άλλες κλάσεις και
επεξηγήστε γιατί επιλέξατε κάποια συγκεκριμένη σχέση. Όπου θεωρείτε ότι απαιτείται να κάνετε τις αναγκαίες
παραδοχές ώστε το διάγραμμα να είναι όσο το δυνατόν πλήρες.
Σημείωση:
Στο διάγραμμα κλάσεων που θα σχεδιάσετε να τοποθετήσετε και κλάσεις που δεν υπάρχουν στο διάγραμμα
ακολουθίας του Ερωτήματος 1.Α, αλλά προκύπτουν από τη λεκτική περιγραφή της υπό εξέταση Π.Χ.
(Σύνολο: 10 μονάδες)

Μαθησιακά Αποτελέσματα
Στην Άσκηση 1.B θα σας δοθεί η δυνατότητα να κατανοήσετε την κατασκευή του «Διαγράμματος Κλάσεων».

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 5


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Πιο συγκεκριμένα θα μπορέσετε:


 να παραθέσετε τα κύρια μέλη που αυτό περιλαμβάνει,
 να παραθέσετε τα είδη των σχέσεων μεταξύ των κλάσεων,
 να αντιστοιχίσετε το κάθε είδος σχέσης με το σύμβολο που την απεικονίζει,
 να περιγράψετε τον τρόπο σύνταξης των ονομάτων των κλάσεων,
 να περιγράψετε τον τρόπο σύνταξης των ιδιοτήτων των κλάσεων,
 να περιγράψετε τον τρόπο σύνταξης των μεθόδων των κλάσεων και
 να περιγράψετε με παράδειγμα το κάθε είδος σχέσης μεταξύ των κλάσεων.

Απάντηση 1ης Άσκησης / Ερώτημα Β

Εάν δεν έχετε δώσει απάντηση γράψτε με κεφαλαία γράμματα, ΔΕΝ ΑΠΑΝΤΗΘΗΚΕ.
Εάν εν γνώση σας δίνετε ελλιπή απάντηση γράψτε με κεφαλαία γράμματα, ΕΛΛΙΠΗΣ ΑΠΑΝΤΗΣΗ.
Εξηγήστε σε ποιο σημείο θεωρείτε την απάντηση ελλιπή και γιατί.

Διάγραμμα Κλάσεων:

Τεκμηρίωση Επιλογών:

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 6


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Εκφώνηση 2ης Άσκησης


Σύστημα BetProject
H εφαρμογή BetProject, την οποία θα βρείτε στο αρχείο “BetProject-initial", αποτελεί μια επέκταση της
εφαρμογής BetBuilder που σας δόθηκε στην πρώτη γραπτή εργασία.
Συγκεκριμένα, στην παρούσα εργασία έχουν προστεθεί λειτουργίες, ώστε να έχουμε μια περισσότερο
ολοκληρωμένη προσομοίωση μιας διαδικασίας πραγματοποίησης στοιχημάτων από παίχτες για αγώνες
ποδοσφαίρου και μπάσκετ, η οποία υποστηρίζει κατηγορίες στοιχημάτων, καθώς και κατηγορίες παιχτών.
Η εφαρμογή αποτελείται από 10 κλάσεις και 1 διεπαφή.
Αναλύονται ως εξής:
 Κλάση Bet
Είναι η "γενική" κλάση των στοιχημάτων. Η εν λόγω κλάση, καθώς και οι υποκλάσεις της (BasketballBet και
FootballBet), χρησιμοποιούνται από το σύστημα (την κλάση BetOrganization) ώστε να οριστούν τα στοιχήματα
που είναι διαθέσιμα από την εταιρεία στοιχημάτων. Η κλάση είναι δηλωμένη ως αφηρημένη (abstract) διότι δεν
μπορούμε να έχουμε αντικείμενα αυτής. Μπορούμε να έχουμε μόνο αντικείμενα των υποκλάσεών της, τα οποία
θα αφορούν είτε στοιχήματα ποδοσφαίρου, είτε στοιχήματα μπάσκετ.
 Κλάση BasketballBet
Υποκλάση της κλάσης Bet που αφορά σε αγώνες μπάσκετ. Η κλάση περιέχει τις διαθέσιμες εκβάσεις ενός αγώνα
μπάσκετ, οι οποίες είναι 1 ή 2 (δηλωμένα ως αλφαριθμητικά), όπου:
1: Νικήτρια η πρώτη ομάδα, 2: Νικήτρια η δεύτερη ομάδα
 Κλάση FootballBet
Υποκλάση της κλάσης Bet που αφορά σε αγώνες ποδοσφαίρου. Η κλάση περιέχει τις διαθέσιμες εκβάσεις ενός
αγώνα ποδοσφαίρου, οι οποίες είναι 1, Χ ή 2 (δηλωμένα ως αλφαριθμητικά), όπου:
1: Νικήτρια η πρώτη ομάδα, Χ: Ισοπαλία, 2: Νικήτρια η δεύτερη ομάδα
 Κλάση Customer
Είναι η κλάση του απλού / κανονικού παίχτη (πελάτη). Οι κανονικοί παίχτες μπορούν να ποντάρουν έως 100
ευρώ ανά στοίχημα. Η συγκεκριμένη κλάση θα πρέπει να υλοποιήσει τη διεπαφή IGiveBetList, η οποία
επιστρέφει τη λίστα των στοιχημάτων του κάθε παίχτη.
 Κλάση GoldCustomer
Οι “χρυσοί” παίχτες αντιστοιχούν στην κλάση GoldCustomer, η οποία είναι υποκλάση της Customer, με μέγιστο
επιτρεπτό όριο πονταρίσματος 1000 ευρώ.
 Κλάση PlatinumCustomer
Οι “πλατινένιοι” παίχτες αντιστοιχούν στην κλάση PlatinumCustomer, η οποία είναι υποκλάση της Customer, με
μέγιστο επιτρεπτό όριο πονταρίσματος 2000 ευρώ.
 Κλάση CustomerBet
Η συγκεκριμένη κλάση δεν έχει κάποια σχέση κληρονομικότητας με τις παραπάνω κλάσεις τύπου Bet.
Χρησιμοποιείται από τους παίχτες ώστε, παρέχοντας την απαραίτητη πληροφορία στον κατασκευαστή της, να
ορίσουν τα στοιχήματα που τους ενδιαφέρουν.
 Κλάση GameEmulator
Η συγκεκριμένη κλάση χρησιμοποιείται κατά την εκτέλεση του προγράμματος, για την τυχαία παραγωγή των
αποτελεσμάτων των αγώνων. Η συγκεκριμένη κλάση εφαρμόζει το πρότυπο σχεδίασης «Singleton Design

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 7


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Pattern», προς αποφυγή δημιουργίας πολλαπλών αντικειμένων αυτής. Επισημαίνεται ότι το εν λόγω πρότυπο
μπορεί να υλοποιηθεί με περισσότερους του ενός, σωστούς, τρόπους.
 Κλάση BetOrganization
Είναι η “κεντρική” κλάση της εταιρείας στοιχημάτων. Διαθέτει τη λίστα των διαθέσιμων στοιχημάτων, καθώς και
τη λίστα των διαθέσιμων παιχτών (πελατών). Βασικές λειτουργίες της είναι ο υπολογισμός κερδών των παιχτών
(μέθοδος calculateGainsPerCustomer) και η εκτύπωση των αποτελεσμάτων στην οθόνη (μέθοδος
showCustomersResults) και σε αρχείο (μέθοδος printCustomersResultsToTextFile). Η συγκεκριμένη κλάση
εφαρμόζει το πρότυπο σχεδίασης «Singleton Design Pattern», προς αποφυγή δημιουργίας πολλαπλών
αντικειμένων αυτής. Επισημαίνεται ότι το εν λόγω πρότυπο μπορεί να υλοποιηθεί με περισσότερους του ενός,
σωστούς, τρόπους.
 Κλάση BetMain
Η κλάση εκτέλεσης/προσομοίωσης του προγράμματος. Κατά την προσομοίωση:
1. Προστίθενται τα στοιχήματα ποδοσφαίρου και μπάσκετ στο σύστημα (BetOrganization).
2. Δημιουργούνται οι διαθέσιμοι παίχτες.
3. Τοποθετούνται τα στοιχήματα των παιχτών.
4. Προστίθενται οι παίχτες στο σύστημα (BetOrganization).
5. Εκκινείται η διαδικασία προσομοίωσης αγώνων (τυχαία παραγωγή των αποτελεσμάτων αγώνων από την
κλάση GameEmulator).
6. Ενεργοποιούνται οι λειτουργίες προβολής/εκτύπωσης των αποτελεσμάτων των στοιχημάτων από το
σύστημα (BetOrganization).
 Διεπαφή IGiveBetList.
Η συγκεκριμένη διεπαφή χρησιμοποιείται ώστε να “επιβάλει” σε κλάσεις τη χρήση της μεθόδου
getCustomerBetList, η οποία επιστρέφει τη λίστα με τα διαθέσιμα στοιχήματα των παιχτών.

Ενδεικτική εκτέλεση του προγράμματος (ενδεικτικά δοκιμαστικά δεδομένα):

------------------Results-------------------
####################################
Customer name: Tony di Naples
Customer money paid: 130
Customer gains: 55.00000000000001
####################################
Customer name: Babis Sougias
Customer money paid: 2050
Customer gains: 710.0
--------------End-of-Results----------------

Η παραπάνω εκτύπωση οθόνης, είναι και αυτή που καταγράφεται στο αρχείο καταγραφής αποτελεσμάτων
(λειτουργία της κλάσης BetOrganization).
Πριν ξεκινήσετε την ανάγνωση των ερωτημάτων της εργασίας, ανοίξτε στον editor της επιλογής σας το δοθέν
Java Project και μελετήστε τον κώδικα που περιέχει, λαμβάνοντας υπόψη και τα σχόλια που βρίσκονται μέσα
στον κώδικα.

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 8


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Ερώτημα 2.Α – Κληρονομικότητα Κλάσεων, Υποσκέλιση (override) Μεθόδων και


Υλοποίηση Διεπαφών
Υλοποιήστε τον κώδικα των υποκλάσεων FootballBet, BasketballBet, GoldCustomer και PlatinumCustomer.
Υλοποιήστε (implement) τη διεπαφή IGiveBetList στην κλάση Customer.
Φροντίστε ο κώδικας να είναι μορφοποιημένος κατάλληλα και να είναι ευανάγνωστος. Θα πρέπει να υπάρχει
τεκμηρίωση σε μορφή σχολίων.
(Σύνολο: 20 μονάδες)

Μαθησιακά Αποτελέσματα
Στην Άσκηση 2.Α. θα μπορέσετε:
● να ορίσετε με ακρίβεια την έννοια της κλάσης,
● να κατανοήσετε τα βασικά δομικά στοιχεία μιας κλάσης,
● να κατανοήσετε τους κατασκευαστές των κλάσεων,
● να υποσκελίσετε μεθόδους και
● να υλοποιήσετε κληρονομικότητα κλάσεων και υλοποίηση διεπαφών.

Απάντηση 2ης Άσκησης / Ερώτημα 2.Α

Εάν δεν έχετε δώσει απάντηση γράψτε με κεφαλαία γράμματα, ΔΕΝ ΑΠΑΝΤΗΘΗΚΕ.
Εάν εν γνώση σας δίνετε ελλιπή απάντηση γράψτε με κεφαλαία γράμματα, ΕΛΛΙΠΗΣ ΑΠΑΝΤΗΣΗ.
Εξηγήστε σε ποιο σημείο θεωρείτε την απάντηση ελλιπή και γιατί.

Κώδικας κλάσης FootballBet

Κώδικας κλάσης BasketballBet

Κώδικας κλάσης GoldCustomer

Κώδικας κλάσης PlatinumCustomer

Κώδικας κλάσης Customer

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 9


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Ερώτημα 2.Β – Υλοποίηση Διαδικασιών


Με βάση τις δοθείσες απαιτήσεις/προδιαγραφές, τον κώδικα που έχετε λάβει, καθώς και τα σχόλια εντός των
αρχείων κώδικα Java, να υλοποιήστε τις παρακάτω μεθόδους:
a. Στην κλάση GameEmulator τη μέθοδο doGameEmulation, η οποία χρησιμοποιείται για την τυχαία
παραγωγή των αποτελεσμάτων των αγώνων. Hint: Αν σας ενδιαφέρει να ελέγξετε το κατά πόσο ένα
αντικείμενο είναι ενός συγκεκριμένου τύπου/υποτύπου, αυτό μπορείτε να το πετύχετε στην Java και με
τη χρήση της λέξης κλειδιού “instanceof”.
b. Στην κλάση BetOrganization τη μέθοδο calculateGainsPerCustomer, η οποία χρησιμοποιείται για τον
υπολογισμό των κερδών του κάθε παίχτη.
Οι κλάσεις BetOrganization και GameEmulator θέλουμε να ακολουθούν το πρότυπο σχεδίασης Singleton με
στόχο την αποφυγή προβλημάτων που θα μπορούσαν να προκύψουν από τη δημιουργία πολλαπλών
αντικειμένων αυτών. Μόνο ένα αντικείμενο της κάθε κλάσης θα είναι διαθέσιμο κατά την εκτέλεση του
προγράμματος. Πληροφορίες για το εν λόγω πρότυπο μπορείτε να βρείτε και στο δικτυακό τόπο:
https://refactoring.guru/design-patterns/singleton
Φροντίστε ο κώδικας να είναι μορφοποιημένος κατάλληλα και να είναι ευανάγνωστος. Θα πρέπει να υπάρχει
τεκμηρίωση σε μορφή σχολίων.
(Σύνολο: 20 μονάδες)

Μαθησιακά Αποτελέσματα
Στην Άσκηση 2.Β. θα μπορέσετε:
● να υλοποιήσετε σύνθετες μεθόδους,
● να χειριστείτε λίστες,
● να δημιουργείτε και να χειρίζεστε τυχαίους αριθμούς και
● να υλοποιείτε απλούς αλγορίθμους.

Απάντηση 2ης Άσκησης / Ερώτημα 2.Β

Εάν δεν έχετε δώσει απάντηση γράψτε με κεφαλαία γράμματα, ΔΕΝ ΑΠΑΝΤΗΘΗΚΕ.
Εάν εν γνώση σας δίνετε ελλιπή απάντηση γράψτε με κεφαλαία γράμματα, ΕΛΛΙΠΗΣ ΑΠΑΝΤΗΣΗ.
Εξηγήστε σε ποιο σημείο θεωρείτε την απάντηση ελλιπή και γιατί.

Κώδικας μεθόδου doGameEmulation / Κλάση GameEmulator

Κώδικας μεθόδου calculateGainsPerCustomer / Κλάση BetOrganization

Ερώτημα 2.Γ – Υλοποίηση Kατασκευαστή και Mεθόδου Eκτύπωσης σε Aρχείο


Υλοποιήστε τον κώδικα του κατασκευαστή (constructor) της κλάσης CustomerBet, λαμβάνοντας υπόψη τα
σχόλια/περιορισμούς που υπάρχουν στον κώδικα της κλάσης.
Στην κλάση BetOrganization υλοποιήστε τη μέθοδο printCustomersResultsToTextFile, η οποία θα εκτυπώνει τα
αποτελέσματα στο αρχείο κειμένου “bet-results.txt”, σύμφωνα και με τα σχόλια εντός του κώδικα.
Φροντίστε ο κώδικας να είναι μορφοποιημένος κατάλληλα και να είναι ευανάγνωστος. Θα πρέπει να υπάρχει
τεκμηρίωση σε μορφή σχολίων.

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 10


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

(Σύνολο: 10 μονάδες)

Μαθησιακά Αποτελέσματα
Στην Άσκηση 2.Γ. θα μάθετε:
● να γράφετε δεδομένα σε αρχεία,
● να υλοποιείτε χειρισμό εξαιρέσεων και
● να υλοποιείτε τροποποιημένους κατασκευαστές.

Απάντηση 2ης Άσκησης / Ερώτημα 2.Γ

Εάν δεν έχετε δώσει απάντηση γράψτε με κεφαλαία γράμματα, ΔΕΝ ΑΠΑΝΤΗΘΗΚΕ.
Εάν εν γνώση σας δίνετε ελλιπή απάντηση γράψτε με κεφαλαία γράμματα, ΕΛΛΙΠΗΣ ΑΠΑΝΤΗΣΗ.
Εξηγήστε σε ποιο σημείο θεωρείτε την απάντηση ελλιπή και γιατί.

Κώδικας Κατασκευαστή Κλάσης CustomerBet

Κώδικας μεθόδου printCustomerResultsToTextFile / Κλάση BetOrganization

Ερώτημα 2.Δ – Υλοποίηση Προσομοίωσης


Υλοποιήστε τον κώδικα της κλάσης BetMain, σύμφωνα με τις δοθείσες απαιτήσεις και με τα σχόλια που
βρίσκονται εντός της κλάσης. Δημιουργήστε 2-3 αντικείμενα παιχτών στον κώδικά σας, οι οποίοι να “παίξουν”
από 2-3 στοιχήματα αγώνων ο καθένας.
Φροντίστε ο κώδικας να είναι μορφοποιημένος κατάλληλα και να είναι ευανάγνωστος. Θα πρέπει να υπάρχει
τεκμηρίωση σε μορφή σχολίων.
(Σύνολο: 10 μονάδες)

Μαθησιακά Αποτελέσματα
Στην Άσκηση 2.Δ. θα μάθετε:
● να δημιουργείτε σύνθετα αντικείμενα,
● να προσθέτετε σύνθετες παραμέτρους σε αντικείμενα,
● να προσθέτετε αντικείμενα σε λίστες,
● να εκτελείτε μεθόδους αντικειμένων και
● να καλείτε/χρησιμοποιείτε αντικείμενα δημιουργημένα με το πρότυπο Singleton.

Απάντηση 2ης Άσκησης / Ερώτημα 2.Δ

Εάν δεν έχετε δώσει απάντηση γράψτε με κεφαλαία γράμματα, ΔΕΝ ΑΠΑΝΤΗΘΗΚΕ.
Εάν εν γνώση σας δίνετε ελλιπή απάντηση γράψτε με κεφαλαία γράμματα, ΕΛΛΙΠΗΣ ΑΠΑΝΤΗΣΗ.
Εξηγήστε σε ποιο σημείο θεωρείτε την απάντηση ελλιπή και γιατί.

Κώδικας Κλάσης BetMain

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 11


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Ερώτημα 2.Ε – Δημιουργία Διαγράμματος Κλάσεων από Κώδικα Java


Σύμφωνα με το δοθέν Java Project, υλοποιήστε το διάγραμμα κλάσεων που αντιστοιχεί στο σύνολό του. Στο
διάγραμμα αυτό, θα απεικονίσετε τόσο τις κλάσεις, όσο και την διεπαφή που περιλαμβάνει το Project, καθώς
και τις μεταξύ τους σχέσεις.
(Σύνολο: 5 μονάδες)

Μαθησιακά Αποτελέσματα
Στην Άσκηση 2.Ε θα μπορέσετε:
● να παραθέσετε τα κύρια μέλη που περιλαμβάνει ένα διάγραμμα κλάσεων (κλάσεις-διεπαφές),
● να παραθέσετε τα είδη των σχέσεων μεταξύ των κλάσεων και
● να αντιστοιχίσετε το κάθε είδος σχέσης με το σύμβολο που την απεικονίζει.

Απάντηση 2ης Άσκησης / Ερώτημα 2.Ε

Εάν δεν έχετε δώσει απάντηση γράψτε με κεφαλαία γράμματα, ΔΕΝ ΑΠΑΝΤΗΘΗΚΕ.
Εάν εν γνώση σας δίνετε ελλιπή απάντηση γράψτε με κεφαλαία γράμματα, ΕΛΛΙΠΗΣ ΑΠΑΝΤΗΣΗ.
Εξηγήστε σε ποιο σημείο θεωρείτε την απάντηση ελλιπή και γιατί.

Διάγραμμα Kλάσεων από Κώδικα Java

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 12


ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ ΠΛΗ24 «ΣΧΕΔΙΑΣΜΟΣ ΛΟΓΙΣΜΙΚΟΥ»
ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ: 2022-2023

Υποδείξεις για τη συγγραφή της εργασίας

1) Για την απάντηση της εργασίας θα πρέπει να χρησιμοποιηθεί το κείμενο της εκφώνησης της
εργασίας. Στο κείμενο αυτό:
- Συμπληρώστε, στο χώρο των απαντήσεων, όλα τα στοιχεία με κίτρινο χρώμα.
- Μην ξεχάσετε να δηλώσετε εάν η εργασία αποτελεί προϊόν αποκλειστικά δικής σας εργασίας.
- Ενσωματώστε τις απαντήσεις (διαγράμματα ή/και κώδικα) στην κατάλληλη θέση. Δεν θα
πρέπει να κάνετε παραπομπές της μορφής «βλέπε αρχείο…».
- Αν δεν έχετε απαντήσει σε ένα ερώτημα γράψτε «ΔΕΝ ΑΠΑΝΤΗΘΗΚΕ».
- Αν απαντήσατε με ελλείψεις σε ένα ερώτημα γράψτε «ΕΛΛΙΠΗΣ ΑΠΑΝΤΗΣΗ».
2) Η συνεργασία στην ανάλυση της εργασίας επιτρέπεται, αλλά καλό είναι να αναφερθεί στον ειδικό
χώρο στην πρώτη σελίδα της εργασίας. Η συνεργασία δεν πρέπει να οδηγεί σε από κοινού επίλυση
και συγγραφή της εργασίας. Η υποβολή κοινών απαντήσεων από διαφορετικούς φοιτητές που
συνεργάστηκαν δεν επιτρέπεται και θεωρείται ως ΑΝΤΙΓΡΑΦΗ. Οι απαντήσεις ελέγχονται, τόσο
μεταξύ των φοιτητών του ιδίου τμήματος, όσο και μεταξύ φοιτητών διαφορετικών τμημάτων. Η
αντιγραφή έχει ως αποτέλεσμα το ΜΗΔΕΝΙΣΜΟ ΤΗΣ ΕΡΓΑΣΙΑΣ ΣΥΝΟΛΙΚΑ και την παραπομπή των
παραβατών στην Κοσμητεία της Σχολής Θετικών Επιστημών & Τεχνολογίας, σύμφωνα με τον
εσωτερικό κανονισμό του ΕΑΠ.
3) Η εκπόνηση της εργασίας θα πρέπει να γίνει αποκλειστικά και υποχρεωτικά με το εργαλείο Visual
Paradigm για τη UML και NetΒeans / IntelliJ για τη Java.
4) Η εργασία θα υποβληθεί στο σύστημα υποβολή εργασιών του study.eap.gr.
5) Ο φοιτητής θα πρέπει να υποβάλει την εργασία του σε δύο αρχεία:
- Το 1ο αρχείο θα έχει όνομα PLH24_2ERG_EPITHETO_ONOMA.doc και είναι το κείμενο της
εκφώνησης της εργασίας με συμπληρωμένες τις απαντήσεις.
- Το 2ο αρχείο είναι ένα συμπιεσμένο αρχείου zip ή rar με όνομα
PLH24_2ERG_EPITHETO_ONOMA.<rar|zip>. Το συμπιεσμένο αρχείο θα πρέπει να
αποτελείται από:
i. Το αρχείο Visual Paradigm με το project που θα περιέχει τα διαγράμματα των
ασκήσεων.
ii. Τον κατάλογο με τον κώδικα Java που θα πρέπει να περιλαμβάνει το project
όπως αυτό δημιουργείται από το εργαλείο NetΒeans / IntelliJ και το οποίο θα
πρέπει να μπορεί να εκτελείται χωρίς αλλαγές/επέμβαση από τον καθηγητή.
iii. Να γίνει χρήση λατινικών χαρακτήρων ΑΠΟΚΛΕΙΣΤΙΚΑ για την αποφυγή
προβλημάτων με το moodle.
H εφαρμογή των παραπάνω κανόνων είναι ΥΠΟΧΡΕΩΤΙΚΗ και βαθμολογείται σύμφωνα με το αντίστοιχο
κριτήριο αξιολόγησης. Η μη εφαρμογή του πρώτου κανόνα μπορεί να οδηγήσει σε συνολική απόρριψη της
εργασίας.

ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

ΠΛΗ24 - ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ Νο 2 13

You might also like