Διαδρομές
/
Odin
Odin
/
Ασκήσεις
/
Τραπεζικός Λογαριασμός
Τραπεζικός Λογαριασμός

Τραπεζικός Λογαριασμός

Μέτριο

Εισαγωγή

Ύστερα από χρόνια συμπλήρωσης εντύπων και αναμονής, απέκτησες επιτέλους την τραπεζική σου άδεια. Αυτό σημαίνει ότι πλέον δικαιούσαι επίσημα να ανοίξεις τη δική σου τράπεζα, ζήτω!

Η πρώτη σου προτεραιότητα είναι να στήσεις και να θέσεις σε λειτουργία τα συστήματα πληροφορικής. Ύστερα από μια μέρα σκληρής δουλειάς, μπορείς ήδη να ανοίγεις και να κλείνεις λογαριασμούς, καθώς και να χειρίζεσαι αναλήψεις και καταθέσεις.

Επειδή βαριόσουν να γράψεις tests, καλείς κάποιους φίλους να σε βοηθήσουν να δοκιμάσετε το σύστημα. Ωστόσο, μόλις πέντε λεπτά αργότερα, ένας από τους φίλους σου ισχυρίζεται ότι έχασε χρήματα! Αν και είσαι σίγουρος ότι ο κώδικάς σου δεν έχει bugs, αρχίζεις να ψάχνεις τα αρχεία καταγραφής για να το ερευνήσεις.

Α, ναι, όπως ακριβώς υποψιαζόσουν, ο φίλος σου φταίει! Μοιράστηκε τα διαπιστευτήρια δοκιμής του με έναν άλλο φίλο, και μαζί συνωμότησαν να κάνουν καταθέσεις και αναλήψεις από τον ίδιο λογαριασμό παράλληλα. Ποιος θα έκανε κάτι τέτοιο;

Ενώ εσύ επιμένεις ότι είναι σωματικά αδύνατο να έχει κάποιος πρόσβαση στον λογαριασμό του παράλληλα, ο φίλος σου σε ενημερώνει με αυτάρεσκο ύφος ότι οι τραπεζικοί κανονισμοί απαιτούν να το υποστηρίζεις. Έτσι, χωρίς υποστήριξη παράλληλης τραπεζικής λειτουργίας, δεν δίνεται το σήμα για να ξεκινήσεις. Αναστενάζοντας, σημειώνεις νοερά να ασχοληθείς με αυτό αύριο. Αυτό θα καθυστερήσει την ημερομηνία κυκλοφορίας σου κατά τουλάχιστον μία ακόμη μέρα, αλλά τι να κάνουμε...

Οδηγίες

Ο στόχος σου είναι να υλοποιήσεις τραπεζικούς λογαριασμούς που υποστηρίζουν άνοιγμα/κλείσιμο, αναλήψεις και καταθέσεις χρημάτων.

Καθώς οι τραπεζικοί λογαριασμοί είναι προσβάσιμοι με πολλούς διαφορετικούς τρόπους (διαδίκτυο, κινητά τηλέφωνα, αυτόματες χρεώσεις), το τραπεζικό σου λογισμικό πρέπει να επιτρέπει την ασφαλή πρόσβαση στους λογαριασμούς από πολλά νήματα/διεργασίες (η ορολογία εξαρτάται από τη γλώσσα προγραμματισμού σου) παράλληλα. Για παράδειγμα, μπορεί να συμβαίνουν πολλές καταθέσεις και αναλήψεις παράλληλα· πρέπει να διασφαλίσεις ότι δεν υπάρχουν συνθήκες ανταγωνισμού ανάμεσα στη στιγμή που διαβάζεις το υπόλοιπο του λογαριασμού και στη στιγμή που ορίζεις το νέο υπόλοιπο.

Θα πρέπει να είναι δυνατό να κλείσεις έναν λογαριασμό· οι πράξεις σε έναν κλειστό λογαριασμό πρέπει να αποτυγχάνουν.

Ειδικές οδηγίες για Odin

Για να λύσεις αυτή την άσκηση, θα χρησιμοποιήσεις το Mutex από το βασικό πακέτο sync. Υπάρχει ένα παράδειγμα από την ομάδα της γλώσσας για να ξεκινήσεις.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Odin Exercism

Έτοιμος να ξεκινήσεις την άσκηση Τραπεζικός Λογαριασμός;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Odin με 73 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.