ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ Τµήµα Ψηφιακών Συστηµάτων Μάθηµα: «Αντικειµενοστρεφής Προγραµµατισµός» 2 ο εξάµηνο, Εαρινή περίοδος

Σχετικά έγγραφα
Το βιβλίο διευθύνσεων των Windows

Υπηρεσία Διανομής Συγγραμμάτων

ΜΕ ΤΟ ΠΡΟΓΡΑΜΜΑ OUTLOOK EXPRESS ΡΥΘΜΙΣΗ ΤΟΥ ΛΟΓΑΡΙΣΑΜΟΥ

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Ηλεκτρονική Υπηρεσία Ολοκληρωμένης Διαχείρισης Συγγραμμάτων και Λοιπών Βοηθημάτων ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΓΡΑΜΜΑΤΕΙΩΝ

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Σχεδιασμός Βάσεων Δεδομένων

Εγχειρίδιο Χρήστη Φάση 2: Αρχική Καταχώρηση Συµβάσεων

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Εφαρμογή κατασκευής Προγράμματος εξεταστικών περιόδων. εφαρμογής

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

(CUT Portal). ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ - ΥΠΟΒΟΛΗ ΑΙΤΗΣΗΣ ΓΙΑ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

CUT Portal ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΥΠΟΒΟΛΗ ΑΙΤΗΣΗΣ ΓΙΑ ΠΕΡΙΣΤΑΣΙΑΚΗ ΦΟΙΤΗΣΗ

Οδηγίες Καταχώρησης Τεκμηρίου

11/4/2014 ΤΕΙ Ιονίων Νήσων Πλατφόρµα Ασύγχρονησ Τηλεκπαίδευσησ eclass s ηµιο ι υρ υ γ ρ ία ί Μ αθήµατο τ σ 1

Εργασία για το Facility Game Μάθημα: Δομές Δεδομένων Σωτήρης Γυφτόπουλος

ΒΗΜΑΤΑ ΚΑΤΑΧΩΡΗΣΗΣ ΔΙΑΣΑΦΗΣΗΣ ΕΙΣΑΓΩΓΗΣ στο SEPAdesk

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗ ΔΗΛΩΣΗ ΜΑΘΗΜΑΤΩΝ ΓΙΑ ΤΟ ΧΕΙΜΕΡΙΝΟ. Για να πραγματοποιήσετε την δήλωσή σας μεταβαίνετε στο σύνδεσμο:

Άσκηση. Εξοικείωση με διαδικασία εγγραφής μαθητών σε κάποιο μάθημα και διαδικασία μεταφοράς μαθημάτων μεταξύ διαφορετικών συστημάτων moodle

Οδηγίες συμπλήρωσης αίτησης στην Εφαρμογή Πρόσληψης Εκτάκτου Προσωπικού.

Δημιουργία μιας εφαρμογής Java με το NetBeans

Αντιστοίχιση ΚΑΔ και Αυτόματη Αποστολή Αρχείου νέων ΚΑΔ

Management Classes Create Class Create Class Management Classes List of Classes

Ο ΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΕΡΓΑΣΙΩΝ ΓΙΑ ΤΟ ΣΥΝΕ ΡΙΟ ΝΕΩΝ ΕΡΕΥΝΗΤΩΝ ΤΗΣ ΕΝΕΦΕΤ

Management School School Profile Save

ΟΔΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΕΡΕΥΝΗΤΙΚΗΣ ΕΡΓΑΣΙΑΣ ΣΤΟ ΙΔΡΥΜΑΤΙΚΟ ΑΠΟΘΕΤΗΡΙΟ ΤΟΥ ΟΠΑ "ΠΥΞΙΔΑ"

ΕΡΓΑΣΙΑ 2 - MOODLE ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ακ. Έτος ΔΙΔΑΣΚΩΝ: Π. Εφραιμίδης. Υπεύθυνος εργαστηρίου: Α. Κουτσιαμάνης

1. Άνοιγμα Και Κλείσιμο Της Εφαρμογής Φυλλομετρητή Ιστού (Internet Explorer)

Αντικειμενοστρεφής Προγραμματισμός

Προγραµµατιστική Εργασία 1 ο Μέρος

Οδηγίες Χρήσης της εφαρμογής Class-Web

(Εικόνα 1) Αφού εγκατασταθεί το λογισμικό κάνουμε κλικ πάνω στο εικονίδιο IP Reporting, το οποίο βρίσκεται στην επιφάνεια εργασίας.

Microsoft PowerPoint 2010 Πανεπιστήμιο Κύπρου

Διαχείριση Ωρολογίων Προγραμμάτων Εκπαιδευτικών

Διαχείριση Ωρολογίων Προγραμμάτων

Δημιουργία Οριστικής Δήλωσης Φ.Μ.Υ.

Διαχείριση Βάσης Δεδομένων (dbadmin)

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 2. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης

Δημιουργία και Σύνδεση με Στήλες Βιβλίου

Απαραίτητο για τη δήλωση είναι να έχετε ενεργό πανεπιστημιακό .

3η ΕΡΓΑΣΙΑ. 3.1 Αµεσοι µέθοδοι για την Αριθµητική Επίλυση Γραµµικών Συστηµάτων

Δημιουργία Οριστικής Δήλωσης Φ.Μ.Υ.

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Διαχείριση Έργων Πληροφορικής Εργαστήριο

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 7/1/2014, 22:00

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

παράδοση έως: Παρασκευή 11 Ιανουαρίου 2019

ΟΔΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΕΡΓΑΣΙΩΝ ΣΤΟ ΙΔΡΥΜΑΤΙΚΟ ΑΠΟΘΕΤΗΡΙΟ ΤΟΥ ΟΠΑ "ΠΥΞΙΔΑ"

Κεντρική Βιβλιοθήκη Ε.Μ.Π. Υλικό Σεμιναρίων (για προπτυχιακούς φοιτητές)

(Αντιγραφή) ή χρησιμοποιήστε το πληκτρολόγιο για να καταχωρίσετε τους αριθμούς των αντιγράφων. Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

Alpha Web Banking Εργαλείο δηµιουργίας αρχείων Οδηγίες χρήσεως Αθήνα, Ιούλιος 2014

1 η ΑΣΚΗΣΗ. 1. Θεωρία (Κεφ. 1, 2) ξ = 2 της εξίσωσης fx ( ) = 0 για x

Ηλεκτρονική Υπηρεσία Ολοκληρωμένης Διαχείρισης Συγγραμμάτων και Λοιπών Βοηθημάτων

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

Συνεργείο Αυτοκινήτων

Υπηρεσία Ηλεκτρονικής Επιλογής Συγγραμμάτων

Pylon Entry. Υπηρεσίες. Στην διαδικασία αυτή περιγράφεται η Δημιουργία- Μεταβολή-Διαγραφή και Αναζήτηση υπηρεσίας

CARDISOFT. User Guide. ClassWeb VERSION 1.1. [February] [2007] Cardisoft Ανώνυµη Εταιρία Παραγωγής Λογισµικού

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Pylon Entry. Πόροι. Στη διαδικασία αυτή περιγράφεται η Δημιουργία- Μεταβολή-Διαγραφή Αναζήτηση Πόρων

του προγράμματος diagrama_rohs.zip )

Οδηγίες Χρήσης Εφαρµογής Καταχώρησης Αποδείξεων µε απλά βήµατα

1. Υπηρεσία StudentsWeb

ΓΕΝΙΚΟ ΝΟΣΟΚΟΜΕΙΟ ΡΟΔΟΥ ΤΜΗΜΑ ΟΡΓΑΝΩΣΗΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΝΟΣΗΛΕΙΑΣ ΑΣΘΕΝΩΝ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΕΚΔΟΣΗ 1.0

Ερευνητικό Αποθετήριο Πανεπιστημίου Πειραία

Σύστημα Πρακτικής Άσκησης Εγχειρίδιο χρήσης Επιστημονικά Υπευθύνου

Σχεδιασμός Βάσεων Δεδομένων

Αφού ολοκληρώσετε την ενημέρωση των στοιχείων στις λίστες, μπορείτε να καταχωρήσετε τη διασάφηση εισαγωγής.

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΝΕΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΑΡΑΓΓΕΛΙΟΛΗΨΙΑΣ. ΣΥΦΑ eοrder

Joomla! with K2 - User Guide

Οδηγίες Εργασίας 1 Facility-Game

Τυπικές χρήσεις της Matlab

Αντικειμενοστρεφής Προγραμματισμός

Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α ΕΓΧΕΙΡΙΔΙΟ ΕΦΑΡΜΟΓΗΣ ΤΕΛΩΝ Τ.Α.Π. 1-1

Πρόσβαση στο ηλεκτρονικό σύστημα μέσω της ιστοσελίδας του Οργανισμού

(CUT Portal). ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ - ΥΠΟΒΟΛΗ ΑΙΤΗΣΗΣ ΓΙΑ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Οδηγίες χρήσης του Exams Planner

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

CARDISOFT. User Guide. StudentsWeb VERSION 1.1. [February] [2007] Cardisoft Ανώνυμη Εταιρία Παραγωγής Λογισμικού

Δημιουργία Πρόχειρων Βιβλίων

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Εξαγωγή Οικονοµικών Αναφορών (Ισολογισµός, Αποτελέσµατα Χρήσης, Λογαριασµοί Γενικής Εκµετάλλευσης) στην Εφαρµογή Ms Excel

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

ΕΘΝΙΚΗ ΤΡΑΠΕΖΑ ΥΔΡΟΛΟΓΙΚΩΝ ΚΑΙ ΜΕΤΕΩΡΟΛΟΓΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ ΟΔΗΓΙΕΣ ΚΑΤΑΧΩΡΗΣΗΣ ΧΡΟΝΟΣΕΙΡΩΝ ΓΙΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΒΔ ΕΝΥΔΡΙΣ ΤΟΥ ΥΔΡΟΣΚΟΠΙΟΥ

ΟΔΗΓΙΕΣ ΣΥΝΤΑΞΗΣ /ΥΠΟΒΟΛΗΣ Δήλωσης Άφιξης Οχήματος- ΔΑΟ στο SEPAnet.

Αντικειμενοστρεφής Προγραμματισμός

Παραδοτέο Α.2.1 Παράρτηµα 2. Εγχειρίδιο χρήσης των βάσεων δεδοµένων του AegeanBiz (επιχειρηµατικοί φορείς, επιχειρήσεις)

ALERTS ή EDA (Event Driven Actions)

ΟΔΗΓΙΕΣ ΥΠΟΒΟΛΗΣ ΔΙΔΑΚΤΟΡΙΚΩΝ ΔΙΑΤΡΙΒΩΝ ΣΤΟ ΙΔΡΥΜΑΤΙΚΟ ΑΠΟΘΕΤΗΡΙΟ ΤΟΥ ΟΠΑ "ΠΥΞΙΔΑ"

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

Springer Book Series, Springer Science + Business Media

Δηµιουργώντας µία παρουσίαση µε το Prezi

Ο ΗΓΙΕΣ DOCUMENT DESIGNER

ΟΔΗΓΙΕΣ ΧΕΙΡΙΣΜΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ DYMO LABEL V.8

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ Τµήµα Ψηφιακών Συστηµάτων Μάθηµα: «Αντικειµενοστρεφής Προγραµµατισµός» 2 ο εξάµηνο, Εαρινή περίοδος 2015-2016 ΕΡΓΑΣΙΑ ΜΑΘΗΜΑΤΟΣ Η εργασία αυτή θα σας βοηθήσει να εξοικειωθείτε µε τις βασικές έννοιες του αντικειµενοστρεφούς προγραµµατισµού και µε τον προγραµµατισµό σε γλώσσα Java. Η εργασία πρέπει να εκπονηθεί από οµάδες µέχρι δύο ατόµων (µπορεί να γίνει και ατοµική αν δεν υπάρχει η δυνατότητα οµαδικής εργασίας). Η εργασία σας θα πρέπει να παραδοθεί σε ένα αρχείο ΑΜ1-ΑΜ2.zip (ΑΜ1, ΑΜ2 οι αριθµοί µητρώου των µελών της οµάδας). Το zip αρχείο θα υποβληθεί µέσω eclass (ανεβάστε το αρχείο στην περιοχή «Εργασίες» στο https://evdoxos.ds.unipi.gr/). Η εργασία θα πρέπει να παραδοθεί µέχρι τις 5/6/2016, ώρα 23:59 (µετά την παρέλευση της ηµεροµηνίας αυτής δεν πρόκειται να γίνουν δεκτές εργασίες). Οδηγίες ανάπτυξης και εξαγωγής πηγαίου κώδικα εργασίας από το Eclipse Για την ανάπτυξη του πηγαίου κώδικα της εργασίας και την εκτέλεση θα χρησιµοποιήσετε το ολοκληρωµένο περιβάλλον ανάπτυξης Eclipse. Για την εξαγωγή και αποθήκευση του πηγαίου κώδικα της εργασίας, πρέπει να ακολουθήσετε τα εξής βήµατα µέσα από το Eclipse: 1. Από το µενού του Eclipse (η µπάρα στο πάνω µέρος) επιλέγετε File ->Export. 2. Στο παράθυρο που σας ανοίγει, επιλέγετε από την κατηγορία General, την επιλογή Archive File και πατάτε Next. 3. Επιλέγετε το project στο πάνω αριστερά µέρος (τικάρετε το κουτάκι στα αριστερά του ονόµατος) και πατάτε το κουµπί Browse... για να επιλέξετε τη διαδροµή που θα αποθηκευτεί το αρχείο. 4. Τέλος, πατάτε το κουµπί Finish για να αποθηκευτεί ο κώδικάς σας σε συµπιεσµένη µορφή στο zip αρχείο, το οποίο θα αποστείλετε µέσω του eclass. Περιγραφή Εργασίας Να αναπτύξετε ένα πρόγραµµα σε γλώσσα προγραµµατισµού Java το οποίο θα περιέχει: 1. Κλάση Person η οποία θα περιλαµβάνει: - Πεδία: όνοµα, επώνυµο, email. όπου namefieldvalue, lastnamefieldvalue και emailfieldvalue είναι οι τιµές των πεδίων όνοµα, επώνυµο και email αντίστοιχα για το στιγµιότυπο της κλάσης Person. ΣΗΜΕΙΩΣΗ: Πρέπει να διασφαλίζεται ότι και για οποιοδήποτε αντικείµενο της κλάσης, το email περιέχει τους χαρακτήρες «@» και «.». 2. Κλάση Publisher η οποία θα περιλαµβάνει: - Πεδία: όνοµα, διεύθυνση, χώρα, πόλη.

όπου namefieldvalue,addressfieldvalue, cityfieldvalue και countryfieldvalue είναι οι τιµές των πεδίων όνοµα, διεύθυνση, πόλη και χώρα αντίστοιχα για το στιγµιότυπο της κλάσης Publisher. 3. Κλάση Item η οποία θα περιλαµβάνει: - Πεδία: τίτλος, εκδότης, τιµή, ποσότητα, έτος έκδοσης. Ο εκδότης αποτελεί αντικείµενο της κλάσης Publisher. όπου titlefieldvalue, pricefieldvalue, yearfieldvalue, quantityfieldvalue είναι οι τιµές των πεδίων τίτλος, τιµή, έτος έκδοσης, ποσότητα, αντίστοιχα για το στιγµιότυπο της κλάσης Item και namefieldvalue, addressfieldvalue, cityfieldvalue και countryfieldvalue είναι οι τιµές των πεδίων όνοµα, διεύθυνση, πόλη και χώρα αντίστοιχα του εκδοτικού οίκου για το στιγµιότυπο της κλάσης Item. 4. Κλάση Author η οποία θα κληρονοµεί από την κλάση Person και θα περιλαµβάνει επιπλέον: - Πεδίο: φύλο Author: { Gender: genderfieldvalue όπου namefieldvalue, lastnamefieldvalue, emailfieldvalue και genderfieldvalue είναι οι τιµές των πεδίων όνοµα, επώνυµο, email και φύλο αντίστοιχα για το στιγµιότυπο της κλάσης Author. ΣΗΜΕΙΩΣΗ: Πρέπει να διασφαλίζεται ότι και για οποιοδήποτε αντικείµενο της κλάσης, το φύλο έχει τιµή F ή «M. 5. Κλάση Student η οποία θα κληρονοµεί από την κλάση Person και θα περιλαµβάνει επιπλέον: - Πεδίο: id

- Υπερφόρτωση της µεθόδου tostring() η οποία θα επιστρέφει το αλφαριθµητικό : Student: { ID: idfieldvalue όπου namefieldvalue, lastnamefieldvalue, emailfieldvalue και idfieldvalue είναι οι τιµές των πεδίων όνοµα, επώνυµο, email και id αντίστοιχα για το στιγµιότυπο της κλάσης Student. 6. Κλάση Book η οποία θα κληρονοµεί από την κλάση Item και θα περιλαµβάνει επιπλέον: - Πεδία: συγγραφέας, isbn. Ο συγγραφέας αποτελεί αντικείµενο της κλάσης Author. - Κατασκευαστή/Κατασκευαστές και accessor/mutator (get/set) µεθόδους. Book: { Author: { Name: authornamefieldvalue Last Name: authorlastnamefieldvalue Email: authoremailfieldvalue Gender: authorgenderfieldvalue ISBN: isbnfieldvalue όπου titlefieldvalue, pricefieldvalue, yearfieldvalue, quantityfieldvalue, isbnfieldvalue είναι οι τιµές των πεδίων τίτλος, τιµή, έτος έκδοσης, ποσότητα και isbn αντίστοιχα για το στιγµιότυπο της κλάσης Book και namefieldvalue, addressfieldvalue, cityfieldvalue και countryfieldvalue είναι οι τιµές των πεδίων όνοµα, διεύθυνση, πόλη και χώρα αντίστοιχα του εκδοτικού οίκου για το στιγµιότυπο της κλάσης Book και authornamefieldvalue, authorlastnamefieldvalue, authoremailfieldvalue και authorgenderfieldvalue είναι οι τιµές των πεδίων όνοµα, επώνυµο, email και φύλο αντίστοιχα του συγγραφέα του στιγµιοτύπου της κλάσης Book. 7. Κλάση Magazine η οποία θα κληρονοµεί από την κλάση Item και θα περιλαµβάνει επιπλέον: - Πεδίο: τεύχος

Magazine: { Issue: issuefieldvalue όπου titlefieldvalue, pricefieldvalue, yearfieldvalue, quantityfieldvalue, issuefieldvalue είναι οι τιµές των πεδίων τίτλος, τιµή, έτος έκδοσης, ποσότητα και τεύχος αντίστοιχα για το στιγµιότυπο της κλάσης Magazine και namefieldvalue, addressfieldvalue, cityfieldvalue και countryfieldvalue είναι οι τιµές των πεδίων όνοµα, διεύθυνση, πόλη και χώρα αντίστοιχα του εκδοτικού οίκου για το στιγµιότυπο της κλάσης Magazine. 8. Κλάση Loan όπου θα περιλαµβάνει: - Πεδία: φοιτητής, item. - Υπερφόρτωση της µεθόδου tostring() η οποία θα επιστρέφει: a) το ακόλουθο αλφαριθµητικό αν το item είναι βιβλίο: Loan: { Student: { ID: idfieldvalue Book: { Author: { Name: authornamefieldvalue Last Name: authorlastnamefieldvalue Email: authoremailfieldvalue Gender: genderfieldvalue ISBN: isbnfieldvalue

όπου namefieldvalue, lastnamefieldvalue, emailfieldvalue και idfieldvalue είναι οι τιµές των πεδίων όνοµα, επώνυµο, email και id αντίστοιχα για το φοιτητή του στιγµιοτύπου της κλάσης Loan και titlefieldvalue, pricefieldvalue, yearfieldvalue, quantityfieldvalue, isbnfieldvalue είναι οι τιµές των πεδίων τίτλος, τιµή, έτος έκδοσης, ποσότητα και isbn αντίστοιχα για το βιβλίο του στιγµιοτύπου της κλάσης Loan και namefieldvalue, address- FieldValue, cityfieldvalue και countryfieldvalue είναι οι τιµές των πεδίων όνοµα, διεύθυνση, πόλη και χώρα αντίστοιχα του εκδοτικού οίκου του βιβλίου του στιγµιοτύπου της κλάσης Loan και authornamefieldvalue, authorlastnamefieldvalue, authoremail- FieldValue και authorgenderfieldvalue είναι οι τιµές των πεδίων όνοµα, επώνυµο, email και φύλο αντίστοιχα του συγγραφέα του βιβλίου του στιγµιοτύπου της κλάσης Loan. b) το ακόλουθο αλφαριθµητικό αν το item είναι περιοδικό: Loan: { Student: { ID: idfieldvalue Magazine: { Name: publishernamefieldvalue Issue: issuefieldvalue όπου namefieldvalue, lastnamefieldvalue, emailfieldvalue και idfieldvalue είναι οι τιµές των πεδίων όνοµα, επώνυµο, email και id αντίστοιχα για το φοιτητή του στιγµιοτύπου της κλάσης Loan και titlefieldvalue, pricefieldvalue, yearfieldvalue, quantityfieldvalue, issuefieldvalue είναι οι τιµές των πεδίων τίτλος, τιµή, έτος έκδοσης, ποσότητα και τεύχος αντίστοιχα για το περιοδικό του στιγµιοτύπου της κλάσης Loan και namefieldvalue, addressfieldvalue, cityfieldvalue και countryfieldvalue είναι οι τιµές των πεδίων όνοµα, διεύθυνση, πόλη και χώρα αντίστοιχα του εκδοτικού οίκου του περιοδικού του στιγµιοτύπου της κλάσης Loan. ΣΗΜΕΙΩΣΗ: Για την επίλυση του συγκεκριµένου ερωτήµατος ενδείκνυται η χρήση της µεθόδου instanceof που είναι ικανή να ελέγχει αν ένα αντικείµενο item ανήκει στην κλάση Book ή Μagazine. [https://docs.oracle.com/javase/tutorial/displaycode.html?code=https:// docs.oracle.com/javase/tutorial/java/nutsandbolts/examples/instanceofdemo.java] 9. Προσαρµογή της κλάσης Loan ώστε να περιέχει ένα ακόµα πεδίο αυτό της τρέχουσας ηµεροµηνίας (ηµεροµηνία και ώρα) κατά την οποία δηµιουργήθηκε ένα αντικείµενο της κλάσης Loan και να οριστεί η συνάρτηση που θα ορίζει την ηµεροµηνία. Η κλάση Loan πρέπει να υλοποιεί τη µέθοδο loantime() του Interface Time που θα επιστρέφει την ηµεροµηνία µε

την οποία θα ορίζεται η τιµή ηµεροµηνία και ώρα στο πεδίο ηµεροµηνίας κατά τη δηµιουργία ενός αντικειµένου τύπου Loan. Το παραπάνω θα πρέπει να πραγµατοποιηθεί χωρίς προσθήκη επιπλέον ορίσµατος στον κατασκευαστή της Loan άλλα µέσα σε αυτόν να ορίζεται η τιµή του πεδίου ηµεροµηνία µε βάση τη loantime(). Παράλληλα να δηµιουργηθεί η public συνάρτηση getloantime η οποία θα επιστρέφει την τιµή του πεδίου ηµεροµηνίας (ηµεροµηνία και ώρα). O υπολογισµός της ηµεροµηνίας θα γίνεται µε τη χρήση της κλάσης Date του πακέτου java.util [https://docs.oracle.com/javase/6/docs/api/java/util/ Date.html]. Τέλος Πρέπει να γίνει και επέκταση της µεθόδου tostring() της κλάσης Loan ώστε να περιλαµβάνει το πρόσθετο πεδίο ως έξης: Student: { ID: idfieldvalue Magazine: { Name: publishernamefieldvalue Issue: issuefieldvalue Timestamp: timestampfieldvalue 10. Κλάση Management που θα περιλαµβάνει τη συνάρτηση main η οποία µε τη χρήση ενός µενού που θα εµφανίζεται κατά την εκκίνηση της εκτέλεσης του προγράµµατος θα είναι σε θέση ανάλογα µε την επιλογή του χρήστη να εκτελεί τα ακόλουθα: 1. Δηµιουργία νέου αντικειµένου της κλάσης Student, όταν ο χρήστης εισάγει την τιµή 1. Αυτό θα συνεπάγεται τη δηµιουργία δυναµική νέων αντικειµένων (εκχώρηση τιµών στα πεδία µε βάση τιµές που εισάγει ο χρήστης από το πληκτρολόγιο) της κλάσης Student και καταχώρηση σε κατάλληλο πίνακα τύπου Student αν ο φοιτητής δεν έχει εκχωρηθεί παλαιότερα και εκτύπωση του αρχικού µενού. Ο έλεγχος θα γίνεται µε βάση το πεδίο id µε µία επανάληψη που θα ελέγχει ένα προς ένα αν τα αντικείµενα Student του πίνακα students έχουν πεδίο id ίδιο µε αυτό που εισήγαγε ο χρήστης. Αν δεν συµπίπτει, τότε το νέο αντικείµενο τύπου Student εισάγεται στον πίνακα students και στη συνέχεια εκτυπώνεται ξανά το αρχικό µενού. Θα πρέπει να γίνει χρήση της κλάσης ArrayList και των µεθόδων της: ArrayList< Student > students (µέθοδοι students.add(student), students.get(index), students.size(); ). 2. Δηµιουργία νέου αντικειµένου της κλάσης Book, όταν ο χρήστης εισάγει την τιµή 2. Αυτό θα συνεπάγεται τη δηµιουργία δυναµική νέων αντικειµένων (εκχώρηση τιµών στα πεδία µε βάση τιµές που εισάγει ο χρήστης από το πληκτρολόγιο) της κλάσης Book και καταχώρηση σε κατάλληλο πίνακα τύπου Item αν το βιβλίο δεν έχει εκχωρηθεί παλαιότερα. Ο έλεγχος θα γίνεται µε βάση το πεδίο τίτλος µε µία

επανάληψη που θα ελέγχει ένα προς ένα αν τα αντικείµενα τύπου Book του πίνακα items έχουν το πεδίο τίτλο ίδιο µε αυτό που εισήγαγε ο χρήστης. Αν δεν συµπίπτει, τότε το νέο αντικείµενο τύπου Book εισάγεται στον πίνακα items. Θα πρέπει να γίνει χρήση της κλάσης ArrayList και των µεθόδων της: ArrayList< Items > items (µέθοδοι items.add(book), items.get(index), items.size()). Παράλληλα, δηµιουργία κατάλληλων αντικειµένων της κλάσης Publisher και Author αναγκαία ως ορίσµατα δηµιουργίας αντικειµένων της κλάσης Book και εκτύπωση του αρχικού µενού. 3. Δηµιουργία νέου αντικειµένου της κλάσης Magazine, όταν ο χρήστης εισάγει την τιµή 3. Αυτό θα συνεπάγεται τη δηµιουργία δυναµική νέων αντικειµένων (εκχώρηση τιµών στα πεδία µε βάση τιµές που εισάγει ο χρήστης από το πληκτρολόγιο) της κλάσης Magazine και καταχώρηση στον παραπάνω πίνακα τύπου Item (υποερώτηµα 10.2) αν το περιοδικό δεν έχει εκχωρηθεί παλαιότερα. Ο έλεγχος θα γίνεται µε βάση το πεδίο τίτλος µε µία επανάληψη που θα ελέγχει ένα προς ένα αν τα αντικείµενα τύπου Magazine του πίνακα items έχουν το πεδίο τίτλο ίδιο µε αυτό που εισήγαγε ο χρήστης. Αν δεν συµπίπτει τότε το νέο αντικείµενο τύπου Magazine εισάγεται στον πίνακα items. Θα πρέπει να γίνει χρήση της κλάσης ArrayList και των µεθόδων της: ArrayList< Items > items (µέθοδοι items.add(magazine), items.get(index), items.size()). Παράλληλα, δηµιουργία κατάλληλου αντικειµένου της κλάσης Publisher αναγκαίο ως όρισµα δηµιουργίας αντικειµένου της κλάσης Magazine και εκτύπωση αρχικού µενού. 4. Δηµιουργία νέου αντικειµένου της κλάσης Loan, όταν ο χρήστης εισάγει την τιµή 4. Αυτό θα συνεπάγεται τη δηµιουργία δυναµική νέων αντικειµένων (εκχώρηση τιµών στα πεδία µε βάση τιµές που εισάγει ο χρήστης από το πληκτρολόγιο) της κλάσης Loan. Για να επιτευχθεί αυτό θα πρέπει να εµφανίζεται κατάλληλο µήνυµα προς το χρήστη ώστε να εισαχθούν από το πληκτρολόγια δύο τιµές, το student ID (πεδίο της κλάσης Student) και ένα title (πεδίο της κλάσης Item). Με βάση το student ID θα πρέπει να γίνεται έλεγχος αν υπάρχει αντικείµενο τύπου Student που διαθέτει το student id που εισήγαγε ο χρήστης στον πίνακα students του υποερωτήµατος 10.1, και µε βάση τον τίτλο αν υπάρχει αντικείµενο τύπου Book ή Magazine που διαθέτει τον τίτλο που εισήγαγε ο χρήστης στον πίνακα items του υποερωτήµατος 10.2, ή 10.3. Αν οι δυο παραπάνω συνθήκες ικανοποιούνται, τότε θα δηµιουργείται κατάλληλο αντικείµενο της κλάσης Loan µε ορίσµατα τα αντικείµενα student και item που εµπεριέχουν τις τιµές που εισήγαγε ο χρήστης. Τέλος για κάθε αντικείµενο τύπου Loan που δηµιουργήθηκε κατά την παραπάνω διαδικασία θα πρέπει να εισάγεται στον πίνακα loans. Τέλος για να καταχωρηθούν τα αντικείµενα στο κατάλληλον πίνακα τύπου Loan πρέπει το απόθεµα του προς δανεισµό βιβλίου ή περιοδικού να είναι µεγαλύτερο από το µηδέν. Για κάθε νέο επιτυχή δανεισµό το απόθεµα θα µειώνεται ανάλογα. Στη συνέχεια εκτυπώνεται ξανά το αρχικού µενού. Θα πρέπει να γίνει χρήση της κλάσης ArrayList και των µεθόδων της: ArrayList< Loan > loans (µέθοδοι loans.add(magazine), loans.get(index), loans.size()). 5. Διαγραφή ενός δανεισµού (στοιχείο του πίνακα loans), όταν ο χρήστης εισάγει την τιµή 5. Αυτό θα συνεπάγεται τη διαγραφή δανεισµού από τον πίνακα τύπου Loan του υποερωτήµατος 10.4 µε βάση µία ηµεροµηνία που εισάγει ο χρήστης (πεδio timedate του ερωτήµατος 9) και εκτύπωση αρχικού µενού. Θα πρέπει να γίνει χρήση της κλάσης ArrayList και των µεθόδων της: (µέθοδος loans.get(index), loans.size(), loans.remove(loan)).

6. Εκτύπωση όλων των στοιχείων του πίνακα των φοιτητών, όταν ο χρήστης εισάγει την τιµή 6 και εκτύπωση αρχικού µενού. 7. Εκτύπωση όλων των στοιχείων του πίνακα των βιβλίων και περιοδικών, όταν ο χρήστης εισάγει την τιµή 7 και εκτύπωση αρχικού µενού. 8. Εκτύπωση όλων των στοιχείων του πίνακα των δανεισµών, όταν ο χρήστης εισάγει την τιµή 8 και εκτύπωση αρχικού µενού. 9. Έξοδος από την εκτέλεση του προγράµµατος, όταν ο χρήστης επιλέξει x ή Χ. ΣΗΜΕΙΩΣΕΙΣ: 1. Για την επίλυση αυτού του ερωτήµατος ενδείκνυται η χρήση της µεθόδου instanceof που είναι ικανή να ελέγχει αν ένα αντικείµενο item ανήκει στην κλάση Book ή Μagazine. [https://docs.oracle.com/javase/tutorial/displaycode.html?code=https:// docs.oracle.com/javase/tutorial/java/nutsandbolts/examples/instanceofdemo.java]. 2. Για δυναµικές δοµές δεδοµένων (πίνακες) ενδείκνυται η χρήση της κλάσης ArrayList [https://docs.oracle.com/javase/7/docs/api/java/util/arraylist.html] 3. Παράδειγµα επαναληπτικού µενού εισαγωγής τιµών από το πληκτρολόγιο είναι το ακόλουθο: [+] To Insert New Student Press: 1 [+] To Insert New Book Press: 2 [+] To Insert New Magazine Press: 3 [+] To Insert New Loan Press: 4 [+] To Delete Loan Press: 5 [+] To Print Students Press: 6 [+] To Print Books and Magazines Press: 7 [+] To Print Loans Press: 8 [+] For Exit Press: x or X [>] Insert Choice: Καλή Επιτυχία!!!