A.M. : 1115201800230 | Όνομα/Επώνυμο : Kleriana Kurra
-
Η εντολή για τη μεταγλώττιση : make
-
Η εντολή εκτέλεσης με τιμές (5 2 15 8): make run
-
Εάν θέλετε να το εκτελέσετε με άλλες τιμές, αλλάξτε τις τιμές αυτές στο Makefile η μπορείτε να το εκτελέσετε με την εντολή ./exe K M N L
-
Έχω υλοποιήσει τις δύο βασικές κλάσεις οι οποίες είναι :
α) η bank.h : αναπαριστά την οντότητα μιας τράπεζας.
- cahsier πίνακας δεικτών σε αντικείμενα κλάσης Cashier με μέγεθος NUMBEROFCASHIERS (το NUMBEROFCASHIERS το έχω κάνει define με την τιμή 5, έτσι ώστε αν στο μέλλον θέλω να αλλάξω το πόσα ταμεία έχει η bank να αλλάξω μόνο την τιμή του NUMBEROFCASHIERS). Στον Constructor της Bank δημιουργώ δυναμικά τα ταμεία περνώντας στο Constructor της Cashier το L και βάζω τους δείκτες του πίνακα να δείχνουν σε αυτά. Δημιουργώ δυναμικά τα ταμεία γιατί ο Constructor της Cashier παίρνει όρισμα(L) οπότε δεν μπορώ να τα φτιάξω στατικά δημιουργώντας έναν πίνακα από αντικείμενα τύπου Cashier. (Τα υπόλοιπα εξηγούνται και σε σχολεία στο πρόγραμμα.)
β) η cashier.h : αναπαριστά την οντότητας ταμείου.
-
Η free επιστρέφει false όταν ένα ταμείο κλείσει επειδή δούλεψε πολύ, έτσι ώστε να ξέρει και η τράπεζα που την καλεί πόσα ταμεία έχει ακόμα ανοιχτά.
-
Γενικά
Στην main για το (γ) κάνω enter όσους δεν μπόρεσαν να μπουν στο (β) και μετά όσους μπόρεσαν να μπουν τους εξυπηρετώ. Αυτή η διαδικασία συνεχίζετε μέχρι να μην υπάρχουν άλλοι πελάτες που περιμένουν από έξω.
Τρέχοντας το πρόγραμμα με (K = 5, M = 1, N = 15, L = 1) θα βάλω 15 πελάτες μέσα στην τράπεζα οπότε θα ανοίξουν 3 ταμεία. Οι τρεις πρώτοι πελάτες θα εξυπηρετηθούν από τα ταμεία 0, 1, 2 αντίστοιχα και κάθε ταμείο θα κλείνει με το που εξυπηρετεί τον πελάτη επειδή δούλεψε πολύ (αφού το L = 1). Για κάθε έναν από τους υπόλοιπους πελάτες θα ανοίγει το πρώτο ταμείο, θα τον εξυπηρετεί και θα κλείνει επειδή δούλεψε πολύ. Αυτό θα συμβεί επειδή στην serve όπως λέει και στην εκφώνηση αν όλα τα ταμεία είναι κλειστά θα ανοίγει και θα επιλέγει το πρώτο ταμείο.
Έχω χωρίσει τις κλάσεις μου σε αρχεία έτσι ώστε να είναι πιο ευανάγνωστος ο κώδικας μου και να μπορούν να χρησιμοποιηθούν οι κλάσεις μου και αργότερα σε άλλα project.
Οι μεταβλητές κάθε κλάσης είναι private ενώ οι μέθοδοι public έτσι ώστε ο χρήστης να έχει περιορισμένη δύναμη πάνω στις μεταβλητές της κλάσης, αφού θα μπορεί να τις επεξεργαστεί μόνο μέσω των μεθόδων που έχω ορίσει ως public.
Για την αρχικοποίηση των attributes των κλάσεων χρησιμοποιώ initialization list.
Οι περισσότερες παράμετροι στις μεθόδους μου είναι referances για εξοικονόμηση μνήμης και const γιατί δεν θέλω να μπορεί να αλλάξει η τιμή τους.
Όσες μέθοδοι ήταν μικρές τις όρισα μέσα στην αντίστοιχη κλάση για να είναι inline έτσι δεν έχουν όλες οι κλάσεις .cpp αλλά μόνο .h.
Όσες μέθοδοι δεν αλλάζουν τις τιμές των δεδομένων της κλάσης, τις έχω προσδιορίσει με const.