حساب بانکی

حساب بانکی

متوسط

مقدمه

پس از سال‌ها پر کردن فرم و انتظار کشیدن، بالاخره مجوز بانکی خود را گرفته‌اید. یعنی حالا رسماً می‌توانید بانک خودتان را باز کنید، هورا!

اولین اولویتتان راه‌اندازی سیستم‌های فناوری اطلاعات است. پس از یک روز کار سخت، هم‌اکنون می‌توانید حساب باز کنید و ببندید و همچنین برداشت‌ها و واریزها را انجام دهید.

چون حوصله‌ی نوشتن Test را نداشتید، از چند دوست می‌خواهید که در آزمایش سیستم کمکتان کنند. اما فقط پنج دقیقه بعد، یکی از دوستانتان ادعا می‌کند که پول از دست داده است! هرچند مطمئنید که کدتان بدون Bug است، شروع می‌کنید لاگ‌ها را بررسی کنید تا بفهمید چه شده است.

آهان، دقیقاً همان‌طور که حدس می‌زدید، مقصر خود دوستتان است! او اطلاعات ورود آزمایشی‌اش را با دوست دیگری به اشتراک گذاشت و با هم توطئه کردند تا به‌صورت موازی از همان حساب واریز و برداشت انجام دهند. چه کسی چنین کاری می‌کند؟

در حالی که شما بحث می‌کنید که از نظر فیزیکی غیرممکن است کسی به‌صورت موازی به حساب خود دسترسی پیدا کند، دوستتان با خودپسندی به شما اطلاع می‌دهد که قوانین بانکی ملزمتان می‌کند که از این پشتیبانی کنید. بنابراین، بدون پشتیبانی از بانکداری موازی، سیگنالی برای راه‌اندازی در کار نیست. آهی می‌کشید و در ذهن خود یادداشت می‌کنید که فردا به این موضوع رسیدگی کنید. این کار تاریخ راه‌اندازی شما را حداقل یک روز دیگر عقب می‌اندازد، اما خب...

دستورالعمل‌ها

وظیفه‌ی شما پیاده‌سازی حساب‌های بانکی است که از باز و بسته کردن، برداشت و واریز پول پشتیبانی می‌کنند.

از آنجا که از راه‌های مختلفی می‌توان به حساب‌های بانکی دسترسی داشت (اینترنت، تلفن همراه، کسر خودکار)، نرم‌افزار بانکی شما باید امکان دسترسی ایمن و همزمان به حساب‌ها را از چند «نخ» یا «فرایند» فراهم کند (اصطلاح آن به زبان برنامه‌نویسی شما بستگی دارد). برای نمونه، ممکن است واریزها و برداشت‌های بسیاری به‌طور همزمان رخ دهد؛ باید مطمئن شوید که میان خواندن موجودی حساب و ثبت موجودی جدید، «شرایط رقابتی» رخ نمی‌دهد.

باید بتوان حساب را بست؛ عملیاتی که روی یک حساب بسته انجام شود باید شکست بخورد.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Delphi Pascal Exercism

آماده‌اید حساب بانکی را شروع کنید؟

در Exercism ثبت‌نام کنید تا Delphi Pascal را همراه با 76 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.