ثبت نام پنجمین آزمون و مسابقه کشوری جاواکاپ

خانه / آموزش / تمرین‌های آموزشی / بانکداری (تا پایان جلسه چهارم)

بانکداری (تا پایان جلسه چهارم)

سطح سوال : ساده

آنچه از این جلسه باید بدانید:

  • مفهوم کلاس و شی، نوشتن و استفاده از آن‌ها
  • ویژگی‌ها
  • محصورسازی

میخواهیم چند جزء کوچک از سیستم بانکی را شبیه‌سازی کنیم. چهار کلاس برای شعبه، مشتری، حساب و کارت اعتباری با توضیحاتی که برای ویژگی‌هایشان در زیر آمده است، بسازید.

شعبه:

یک کلاس با نام Branch ایجاد کنید که سه ویژگی زیر را داشته باشد:

  • کد : code یک رشته از حروف و اعداد است که کد شعبه را نشان می‌دهد.
  • شهر : city نام شهری که شعبه در آن قرار دارد را نشان می‌دهد.
  • درجه : rate یک عدد صحیح از بین اعداد ۱ و ۲ و ۳ است که درجه‌ی شعبه را نشان می‌دهد.

حساب:

یک کلاس با نام Account ایجاد کنید که دو ویژگی زیر را داشته باشد:

  • شماره حساب : accountNumber رشته‌ای (String) از اعداد است که شماره حساب را نشان می‌دهد.
  • مانده حساب : balance یک عدد اعشاری (double) است که میزان مانده‌ی حساب را نشان می‌دهد.

کارت اعتباری:

یک کلاس با نام CreditCard ایجاد کنید که دو ویژگی زیر را داشته باشد:

  • شماره کارت : cardNumber رشته‌ای (String) است از اعداد که شماره‌ی کارت را نشان می‌دهد.
  • اعتبار : credit یک عدد اعشاری (double) است که میزان اعتبار باقیمانده در کارت را نشان می‌دهد.

مشتری:

یک کلاس با نام Customer ایجاد کنید که سه ویژگی زیر را داشته باشد:

  • نام : name رشته‌ای از حروف است که نام مشتری را نشان می‌دهد.
  • حساب : account شی‌ای از جنس Account است که حساب مشتری را نشان می‌دهد.
  • کارت اعتباری : creditCard شی‌ای از جنس CreditCard است که کارت اعتباری مشتری را نشان می‌دهد.

بعد از این که کلاس‌ها و ویژگی‌هایشان را تعریف کردید. متدهای لازم برای مقداردهی و فراخوانی ویژگی‌ها(setter , getter) را نیز بنویسید.

یک متد با نام calCustomerBalance در کلاس مشتری ایجاد کنید که مجموع اعتبار باقیمانده در حساب و کارت اعتباری مشتری را محاسبه کرده و برمی‌گرداند.

نکات:

  • در هر کلاس‌، ویژگی‌ها را به صورت یک بخش خصوصی (private) و متدها را به صورت یک بخش عمومی (public) تعریف کنید.
  • در هر کلاس، برای تمامی ویژگی‌ها باید دو متد setter و getter را تعریف کنید.
  • دقت کنید که نام‌گذاری setter و getterها را درست انجام دهید. مثلاً برای ویژگی name متد مقداردهی آن باید با نام setName و متد فراخوانی مقدار آن باید با نام getName باشد.
  • دراین سوال فرض شده که کارت اعتباری و حساب برای مشتری جدا از هم هستند یعنی میزان باقیمانده‌ی آن‌ها ربطی به یکدیگر ندارد.
  • به املای درست نام ویژگی‌ها دقت کنید و دقیقا همان‌گونه که در صورت سوال گفته‌شده است، در برنامه‌ی خود از آن‌ها استفاده کنید.
  • نوع (type) هر یک از ویژگی‌ها که صراحتا بیان نشده‌اند را باید با توجه به توضیحات داده‌شده خودتان تشخیص دهید و از نوع مناسبی استفاده کنید.

آنچه باید آپلود کنید:

یک فایل زیپ شامل ۴ فایل Customer.java , Branch.java  ,CreditCard.java , Account.java را آپلود کنید. یعنی وقتی فایل زیپ را باز می‌کنیم، دقیقا همین ۴ فایل را ببینیم  و در داخل هیچ فولدر دیگری قرار نداشته باشند.

برای داوری تمرین، می‌توانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.

 

با ما همراه باشید:

آدرس کانال تلگرام: IranianJavaDevelopers@

آدرس صفحه اینستاگرام: javacup.ir

آدرس گروه لینکدین: Iranian Java Developers

 


درباره سردبیر

همچنین بررسی کنید

کنترل ترافیک

نام و تاریخ مسابقه: جی‌کل ۸ – ۲۱ اردیبهشت ۱۳۹۷ مباحث: Collections و Generics  

۱۰ نظر

  1. اگر کدی ارسال کنیم و اشتباه بود امکان ویرایش و حذف قرار ندادید

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

       
  2. طبیعتا کلاسها constructor دارند دیگه؟!!
    یه سوال دیگه ارور ” We couldn’t run your code in 5 tests. ” دریافت میکنم از کوئرا یعنی چی ؟ کدو باز نمیتونه بکنه اصلا؟!

     
    • سلام
      اگر در متن سوال چیزی گفته نشده، نیازی نیست خودتان Constructor اضافه کنید.

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

       
  3. متد main را در کدام کلاس باید نوشت؟

     
  4. گویا از کلاس شعبه در جایی استفاده نمی شود. همین مد نظر بوده یا چیزی از قلم افتاده است؟

     
    • سلام
      از همه‌ی متدها و کلاس‌ها در داخل تست‌ها استفاده شده و شما فقط باید آنچه رو که خواسته شده ایجاد و پیاده‌سازی کنید.

       

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *