Skip to content

Latest commit

 

History

History
 
 

lab-java-04

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Εργαστήριο #4 - Κλάσεις, μέθοδοι, static μέλη


Σκοπός του τρίτου εργαστηρίου είναι να εξοικειωθείτε με το ορισμό και την υπερφόρτωση μεθόδων καθώς και με τα 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.