ट्रैक
/
Scala
Scala
/
अभ्यास
/
बैंक खाता
बैंक खाता

बैंक खाता

मध्यम

परिचय

वर्षों तक फॉर्म भरने और इंतज़ार करने के बाद, आपको अपना बैंकिंग लाइसेंस मिल ही गया। इसका मतलब है कि अब आप आधिकारिक रूप से अपना बैंक खोल सकते हैं, वाह!

आपकी पहली प्राथमिकता आईटी सिस्टम को काम करने लायक बनाना है। एक दिन की मेहनत के बाद, आप अब खाते खोल और बंद कर सकते हैं, और निकासी तथा जमा भी संभाल सकते हैं।

चूँकि आप टेस्ट लिखने की मेहनत नहीं करना चाहते थे, आप कुछ दोस्तों को सिस्टम परखने में मदद के लिए बुलाते हैं। लेकिन सिर्फ पाँच मिनट बाद, आपके एक दोस्त का दावा है कि उसका पैसा गायब हो गया है! हालाँकि आपको पूरा भरोसा है कि आपके कोड में कोई बग नहीं है, फिर भी आप जाँच करने के लिए लॉग देखने लगते हैं।

आह, हाँ, जैसा आपको संदेह था, गलती आपके दोस्त की ही है! उसने अपने टेस्ट क्रेडेंशियल किसी और दोस्त के साथ साझा किए, और दोनों ने मिलकर एक ही खाते से समानांतर में जमा और निकासी करने की चाल चली। ऐसा भला कौन करेगा?

जब आप यह तर्क करते हैं कि किसी के लिए अपने खाते को समानांतर में एक्सेस करना भौतिक रूप से असंभव है, तो आपका दोस्त आत्मसंतुष्ट होकर आपको बताता है कि बैंकिंग नियम आपको इसे सपोर्ट करने के लिए बाध्य करते हैं। इसलिए, समानांतर बैंकिंग सपोर्ट नहीं, तो लाइव होने का संकेत भी नहीं। आह भरते हुए, आप मन में लिख लेते हैं कि कल इस पर काम करना है। इससे आपकी लॉन्च तारीख कम से कम एक दिन और पीछे चली जाएगी, लेकिन जो भी हो...

निर्देश

आपको ऐसे बैंक खाते बनाने हैं जिन्हें खोला और बंद किया जा सके, और जिनमें पैसा जमा किया जा सके तथा निकाला जा सके।

बैंक खातों तक कई अलग-अलग तरीकों से पहुँचा जा सकता है (इंटरनेट, मोबाइल फोन, ऑटोमैटिक चार्ज), इसलिए आपके बैंक सॉफ्टवेयर को यह सुविधा देनी चाहिए कि एक ही समय में कई थ्रेड या प्रोसेस (यह शब्द आपकी प्रोग्रामिंग भाषा पर निर्भर करता है) खातों तक सुरक्षित रूप से पहुँच सकें। उदाहरण के लिए, एक साथ बहुत सारी जमा और निकासी हो सकती हैं; आपको यह सुनिश्चित करना है कि खाते का बैलेंस पढ़ने और नया बैलेंस सेट करने के बीच कोई रेस कंडीशन न हो।

खाता बंद करना भी संभव होना चाहिए। बंद खाते पर की जाने वाली हर कार्रवाई विफल होनी चाहिए।

यह अभ्यास ऐसी परिवर्तनशील स्थिति की जाँच करता है जिसे कई थ्रेड से सुरक्षित रूप से एक्सेस किया जा सकता है। Scala में परिवर्तनशील स्थिति को सुरक्षित रखने के कई तरीके हैं। जो डेवलपर Java की कॉन्करेंसी से पहले से परिचित हैं, वे Scala में Java की कॉन्करेंसी सुविधाएँ इस्तेमाल कर सकते हैं, जैसे Java का synchronized ब्लॉक।

आम गलतियाँ

Scala में परिवर्तनशील स्थिति पाने के दो तरीके हैं: किसी "var" का उपयोग कीजिए, या किसी परिवर्तनशील ऑब्जेक्ट का। यहाँ दो आम गलतियाँ होती हैं:

  • ऐसे "var" का उपयोग न कीजिए जो खुद भी एक परिवर्तनशील ऑब्जेक्ट हो। दोनों में से एक काफी है, पर दोनों एक साथ नहीं।
  • "var" या परिवर्तनशील ऑब्जेक्ट को बाहरी दुनिया के सामने न रखिए। इसलिए उन्हें "private" बनाइए और वैल्यू लौटाने से पहले परिवर्तनशील ऑब्जेक्ट को अपरिवर्तनीय बना दीजिए।
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Scala Exercism

बैंक खाता शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Scala को 95 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।