ট্র্যাক
/
Scala
Scala
/
অনুশীলনী
/
ব্যাংক অ্যাকাউন্ট
ব্যাংক অ্যাকাউন্ট

ব্যাংক অ্যাকাউন্ট

মধ্যম

ভূমিকা

বছরের পর বছর ফর্ম পূরণ আর অপেক্ষা করার পর, অবশেষে আপনি আপনার ব্যাংকিং লাইসেন্স পেয়ে গেছেন। এর মানে হলো, এখন আপনি আনুষ্ঠানিকভাবে নিজের একটি ব্যাংক খোলার যোগ্যতা পেয়ে গেছেন, বাহ!

আপনার প্রথম কাজ হলো IT সিস্টেমগুলো চালু করা। একদিনের কঠোর পরিশ্রমের পর আপনি ইতিমধ্যেই অ্যাকাউন্ট খুলতে ও বন্ধ করতে পারছেন, আর উইথড্র ও ডিপোজিটও সামলাতে পারছেন।

টেস্ট লিখতে আপনার আলসেমি লাগছিল বলে, সিস্টেমটি টেস্ট করতে সাহায্যের জন্য আপনি কিছু বন্ধুকে ডেকে আনলেন। কিন্তু মাত্র পাঁচ মিনিটের মধ্যেই আপনার একজন বন্ধু দাবি করল যে তার টাকা হারিয়ে গেছে! আপনার কোডে কোনো বাগ নেই বলে আপনি নিশ্চিত, তবুও তদন্ত করতে আপনি লগগুলো দেখা শুরু করলেন।

আহা, ঠিক যেমনটা আপনি সন্দেহ করেছিলেন, দোষটা আপনার বন্ধুরই! সে তার টেস্ট ক্রেডেনশিয়াল আরেক বন্ধুর সাথে শেয়ার করেছিল, আর দুজনে মিলে ষড়যন্ত্র করে একই অ্যাকাউন্টে প্যারালালে ডিপোজিট ও উইথড্র করতে শুরু করেছিল। এমন কাজ কে-ই বা করে?

কারও পক্ষে প্যারালালে নিজের অ্যাকাউন্টে ঢোকা শারীরিকভাবে অসম্ভব বলে আপনি যখন তর্ক করছেন, তখনই আপনার বন্ধু আত্মতুষ্ট ভঙ্গিতে আপনাকে জানাল যে ব্যাংকের নিয়ম এটিকে সমর্থন করা আপনার জন্য বাধ্যতামূলক করে দিয়েছে। তাই প্যারালাল ব্যাংকিং সাপোর্ট নেই মানে গো-লাইভের সিগন্যালও নেই। দীর্ঘশ্বাস ফেলে আপনি মনে মনে টুকে নিলেন, কাল এটা নিয়ে কাজ করতে হবে। এতে আপনার লঞ্চের তারিখ অন্তত আরও একদিন পিছিয়ে যাবে, কিন্তু, যা হোক...

নির্দেশনা

আপনার কাজ হলো এমন ব্যাংক অ্যাকাউন্ট তৈরি করা যেগুলোতে অ্যাকাউন্ট খোলা/বন্ধ করা, টাকা জমা এবং টাকা উত্তোলনের সুবিধা থাকবে।

যেহেতু ব্যাংক অ্যাকাউন্টে নানা রকমভাবে (ইন্টারনেট, মোবাইল ফোন, স্বয়ংক্রিয় চার্জ) ঢোকা যায়, তাই আপনার ব্যাংক সফটওয়্যারকে অবশ্যই একাধিক থ্রেড/প্রসেস থেকে (পরিভাষাটি আপনার প্রোগ্রামিং ভাষার উপর নির্ভর করে) সমান্তরালভাবে অ্যাকাউন্টে নিরাপদে ঢোকার সুবিধা দিতে হবে। উদাহরণস্বরূপ, একসাথে অনেক জমা ও উত্তোলন ঘটতে পারে; অ্যাকাউন্টের ব্যালেন্স পড়ার এবং নতুন ব্যালেন্স সেট করার মধ্যে যেন কোনো রেস কন্ডিশন না থাকে, তা আপনাকে নিশ্চিত করতে হবে।

একটি অ্যাকাউন্ট বন্ধ করা সম্ভব হওয়া উচিত; বন্ধ অ্যাকাউন্টে করা যেকোনো কাজ ব্যর্থ হতে হবে।

এই অনুশীলনীতে এমন মিউটেবল স্টেট পরীক্ষা করা হচ্ছে, যেটি একাধিক থ্রেড থেকে নিরাপদে অ্যাক্সেস করা যায়। মিউটেবল স্টেট রক্ষা করার নানা উপায় Scala দেয়। Java concurrency-এর সাথে পরিচিত ডেভেলপারদের জন্য Scala Java-এর concurrency সাপোর্ট কাজে লাগাতে পারে, যেমন Java synchronized ব্লক।

কমন বিপদ

Scala-তে মিউটেবল স্টেট অর্জন করার দুটি উপায় আছে: একটি "var" ব্যবহার করা, অথবা একটি মিউটেবল অবজেক্ট। এখানে কমন দুটি ভুল হলো:

  • এমন একটি "var" ব্যবহার করবেন না, যেটি আবার একটি মিউটেবল অবজেক্টও। দুটোর একটিই যথেষ্ট, একসাথে দুটো নয়।
  • "var" বা মিউটেবল অবজেক্টটি বাইরের জগতের কাছে প্রকাশ করবেন না। তাই এগুলোকে "private" করে রাখুন এবং মান হিসেবে রিটার্ন করার আগে মিউটেবল অবজেক্টটিকে ইমিউটেবল করে নিন।
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Scala Exercism

ব্যাংক অ্যাকাউন্ট শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Scala ট্র্যাকের 95টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।