Σκοπός του τρίτου εργαστηρίου είναι να εξοικειωθείτε με το ορισμό και την υπερφόρτωση μεθόδων καθώς και με τα static μέλη κλάσεων στη γλώσσα προγραμματισμού Java
Δημιουργήσετε μια κλάση σε γλώσσα java
η οποία να αναπαριστά παραγγελίες αντικειμένων για κάποια επιχείρηση. Ονομάστε την κλάση σας Order
.
Η κλάση σας να περιέχει τα ακόλουθα πεδία δεδομένων:
itemName
τύπουString
το οποίο αποθηκεύει την ονομασία του προϊόντοςnetValue
τύπουdouble
το οποίο αποθηκεύει την τιμή μονάδας ενός προϊόντος, προφανώς μεγαλύτερη ή ίση του μηδενόςquantity
τύπουint
το οποίο αποθηκεύει την ποσότητα ενός προϊόντος, προφανώς μεγαλύτερη ή ίση του μηδενός,default
τιμή1
discount
τύπουdouble
το οποίο αποθηκεύει ενδεχόμενο ποσοστό έκπτωσης,default
τιμή0.0
, αποδεκτές τιμές μεταξύ 0.0 και 1.0 (=100%).
Όλα τα στιγμιότυπα της κλάσης θα πρέπει να μοιράζονται την κοινή static μεταβλητή vat
τύπου double
με τιμή 0.23
(=23%)
H κλάση σας θα πρέπει να παρέχει τους ακόλουθους constructor, αλλά όχι default constructor:
constructor
με δύο παραμέτρους, τηνονομασία προϊόντος
και τηντιμή μονάδας
, τα υπόλοιπα μελη κρατούν τις default τιμές τουςconstructor
με τρεις παραμέτρους, τηνονομασία προϊόντος
, τηντιμή μονάδας
και τηνποσότητα
, τα υπόλοιπα μελη κρατούν τις default τιμές τουςconstructor
με τέσσερις παραμέτρους, τηνονομασία προϊόντος
, τηντιμή μονάδας
, τηνποσότητα
και έναποσοστό έκπτωσης
Η κλάση σας θα πρέπει επιπλέον να παρέχει μια μέθοδο computeBill
η οποία δε δέχεται παραμέτρους και με βάση τις τιμές των μελών δεδομένων του αντικειμένου υπολογίζει το πληρωτέο ποσό.
Επιπλέον η κλάση σας να παρέχει υπερφορτωμένες μεθόδους toString()
και equals()
, η πρώτη να παρέχει μια String
αναπαράσταση της παραγγελίας, η δεύτερη να συγκρίνει δύο παραγγελίες για ομοιότητα. Κριτήριο ομοιότητας είναι η ομοιότητα του itemName
και η ισότητα του netValue
.
Τέλος, αξιοποιώντας όλα τα παραπάνω, εντός της main
της κλάσης να υλοποιήσετε διαλογικό με το χρήστη πρόγραμμα (θυμηθείτε τη Scanner) στο οποίο ο χρήστης να δημιουργεί νέες παραγγελίες. Κάθε παραγγελία να εισάγεται σε μια λίστα
, αφού πρώτα έχει γίνει έλεγχος αν υπάρχει άλλη όμοια παραγγελία. Αν υπάρχει, αντί εισαγωγής να κάνετε ενημέρωση της παραγγελίας που ήδη υπάρχει συμψηφίζοντας τις ποσότητες και κρατώντας την καλύτερη έκπτωση. Με την ολοκλήρωση της παραγγελίας (όπως αποφασίσετε να γίνεται αυτό) να υπολογίζεται και να εμφανίζεται το συνολικό ποσό και καθένα Order
.