Αντικειμενοστρεφής Προγραμματισμός — Εξέταση 2020¶
Μεταγραφή (από το text sidecar, χωρίς ανθρώπινο έλεγχο) του «Μέρους 1ου» της εξέτασης· συμβουλευτείτε το πρωτότυπο PDF.
java_2020_1.pdf¶
Μέρος 1ο¶
Διάρκεια 40 λεπτά. (Η συνολική διάρκεια της εξέτασης είναι 65 λεπτά περιλαμβανομένης και της παράδοσης του γραπτού σας).
Σας ζητείται να αναπτύξετε μια εφαρμογή Click Away με βάση το αντικειμενοστρεφές παράδειγμα προγραμματισμού και την γλώσσα Java.
H εφαρμογή θα διαθέτει γραφική διεπαφή που περιέχει τρία buttons (New Customer, New Shopkeeper, Start click Away) και συμπεριφορά που περιγράφεται στη συνέχεια:
-
Με το πάτημα του κουμπιού New Customer δημιουργείται ένας νέος πελάτης.
-
Με το πάτημα του κουμπιού New Shopkeeper δημιουργείται ένας νέος καταστηματάρχης.
-
Με το πάτημα του κουμπιού Start click Away ο πελάτης αρχίζει να δημιουργεί παραγγελίες (order) και ο καταστηματάρχης αρχίζει να τις παίρνει και να τις διαχειρίζεται. Ο πελάτης βάζει τις παραγγελίες στο μαγαζί του οποίου ο καταστηματάρχης τις παίρνει και τις διαχειρίζεται.
Η παραγγελία περιγράφεται από την ημερομηνία και ώρα δημιουργίας της, έναν αριθμό που δείχνει τη σειρά με την οποία η παραγγελία δημιουργήθηκε από τον πελάτη (αριθμός παραγγελίας) και τον κωδικό του προϊόντος.
Ο πελάτης δημιουργεί 30 παραγγελίες και τις βάζει στο κατάστημα.
Το κατάστημα έχει έναν χώρο υποδοχής των παραγγελιών (order box). Ο χώρος υποδοχής των παραγγελιών έχει χωρητικότητα μιας παραγγελίας. Με την δημιουργία του χώρου υποδοχής τοποθετείται μέσα του μια εικονική παραγγελία με αριθμό παραγγελίας 0.
Όταν ο πελάτης τοποθετεί μια νέα παραγγελία και υπάρχει ήδη παραγγελία μέσα στον χώρο υποδοχής παραγγελιών, η παλιά χάνεται.
Πελάτης και καταστηματάρχης λειτουργούν ταυτόχρονα.
Περιορισμός: Δεν θα χρησιμοποιήσετε κατασκευές συγχρονισμού.
Για τις παρακάτω δράσεις, και αυτές που θα σας δοθούν στη συνέχεια, αξιοποιήστε την αφαιρετικότητα στις διεργασίες (procedural abstraction) για να δώσετε όσο πιο πλήρη κώδικα γίνεται στα ανώτερα επίπεδα αφαιρετικότητας. Η κύρια απαίτηση της εξέτασης είναι να αξιοποιήσετε με τον καλύτερο δυνατό τρόπο τις βασικές έννοιες της αντικειμενοστρεφούς τεχνολογίας και τους μηχανισμούς και κατασκευές της γλώσσας που υλοποιούν τις έννοιες αυτές.
Όλος ο πηγαίος κώδικας σας θα βρίσκεται σε ένα αρχείο. Το όνομα του αρχείου θα αρχίζει με τους χαρακτήρες SC και θα ακολουθεί ο αριθμός μητρώου σας (μόνο το αριθμητικό μέρος) (πχ. SC123456). Η απαίτηση αυτή παραβιάζει τους κανόνες ανάπτυξης java κώδικα αλλά επιβάλλεται για την εξέταση.
Δράση Πρώτη¶
A.1) Δώστε σε Java τις βασικές κλάσεις που πρέπει να έχει το σύστημα σας για να υποστηρίζει τις παραπάνω απαιτήσεις.
Α.2) Δώστε το UML διάγραμμα κλάσεων.
Για την διευκόλυνση σας δημιουργήστε το UML διάγραμμα κλάσεων σε χαρτί. Φωτογραφίστε το και παραδώστε το με όνομα αρχείου τον αριθμό μητρώου σας
(μόνο το αριθμητικό μέρος) και στη συνέχεια το Αλφαριθμητικό UMLCD (πχ. 123456UMLCD).
Βοήθεια για την κατασκευή της γραφικής διεπαφής¶
Για την δημιουργία του παραθύρου της εφαρμογής σας θα πρέπει κατ’ ελάχιστο να ορίσετε την θέση του παραθύρου (setLocation), το μέγεθος του (setSize), να το κάνετε ορατό (setVisible), να του ορίσετε layout manager (setLayout( null )) και να το φέρετε μπροστά και να το κάνετε focus (toFront() - brings this Window to the front and may make it the focused Window).