تمرین‌های آموزشی

کتابخانه (تا پایان جلسه سیزدهم)

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

آنچه از این جلسه باید بدانید: آشنایی با مدیریت خطا و استثنا و توانایی استفاده از آن‌ها

بسته‌ی ir.javacup.library را دانلود کنید. در این بسته دو کلاس با نام‌های Library و Member و یک واسط IdGenerator وجود دارد. هدف از این تمرین پیاده‌سازی چهار متد register و unregister و getMemberCount و isFull با رفتارهای زیر است:

  • متد register:
    • باید عضو (member) دریافتی را در کتابخانه ثبت‌نام کند، به عبارت دیگر باید آن را به آرایه‌ی members اضافه کند.
    • هنگام ثبت‌نام باید به کمک متد generate از ویژگی idGenerator، ویژگی id از عضو دریافتی را مقداردهی کند.
    • اگر ظرفیت (capacity) کتابخانه پر شده بود، یک LibraryFullException با متن Library is full پرتاب کند.
    • اگر member برابر null بود، یک IllegalArgumentException با متن member is null پرتاب کند.
    • اگر ویژگی firstName از member برابر null بود، یک IllegalArgumentException با متن member.firstName is null پرتاب کند.
    • اگر ویژگی lastName از member برابر null بود، یک IllegalArgumentException با متن member.lastName is null پرتاب کند.
public void register(Member member) throws LibraryFullException {
// TODO implement
}
  • متد unregister:
    • باید عضوی را که با id داده‌شده در کتابخانه ثبت‌نام کرده است بیابد و ثبت‌نام او را لغو کند، به عبارت دیگر باید خانه‌ای از آرایه‌ی members را که این عضو در آن قرار دارد، برابر null قرار داده و عضو حذف‌شده را برگرداند.
    • اگر عضوی با این id پیدا نکرد، یک MemberNotFoundException با متن No member found with the given id پرتاب کند.
public Member unregister(int id) {
// TODO implement
}
  • متد getMemberCount:
    • تعداد اعضای ثبت‌نام‌کرده در کتابخانه را برمی‌گرداند.
public int getMemberCount() {
// TODO implement
}
  •  متد isFull:
    • اگر ظرفیت کتابخانه پر باشد، مقدار true و درغیراین‌صورت، مقدار false برمی‌گرداند.
public boolean isFull() {
// TODO implement
}

نکات و راهنمایی:

  • دو کلاس استثنای LibraryFullException و MemberNotFoundException را باید ایجاد کنید.
  • امضای (Signature) هیچ یک از متدها را نباید تغییر دهید. بنابراین باید تشخیص دهید که این کلاس‌های استثنا، checked exception و یا unchecked exception باشند.
  • متن استثناهای پرتاب‌شده، باید دقیقا معادل با آن‌چه در صورت مساله ذکر شده‌است باشد.

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

یک فایل زیپ شامل بسته‌ی ir.javacup.library است. به صورتی که وقتی فایل زیپ را باز می‌کنیم، دقیقا شاخه‌ی ir را ببینیم که درون آن شاخه‌ی javacup و درون آن نیز شاخه‌ی library قرار دارد. در داخل شاخه‌ی library باید سه فایل با نام‌های Library.java، LibraryFullException.java و MemberNotFoundException.java وجود داشته باشد.

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

 

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

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

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

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

نوشته های مشابه

‫7 دیدگاه ها

  1. با عرض سلام و خسته نباشید
    امکانش هست یک ورودی و خروجی نمونه برای تست MultipleRegistersAndUnregisters ارسال کنید
    یا یکم راجع بهش توضیح بدید
    تنها قسمتی که نتونستم حل کنم و متوجهش نمیشم این بخش هستش
    ممنون

    1. سلام
      لطفا مشکلتون رو در قسمت «سوال بپرسید» کوئرا مطرح کنید تا با توجه به کد ارسالی‎تون، تیم پشتیبانی راهنمایی‎تون کنند.

  2. سلام

    می‌شه یکم بیشتر راجع به متد unregister توضیح بدید؟

    الان بعد از اینکه member رو پیدا کرد و برابر با null قرار داد، باید null رو برگردونه یا یه member جدید با مشخصاتش تولید کنه و اون رو برگردونه؟

    و اینکه، باید memberCount هم یه واحد کاهش پیدا کنه؟

    باتشکر

    1. سلام
      باید بعد از اینکه member رو پیدا کرد، همون member رو برگردونه. (در واقع یک member جدید که برابر با member مورد نظر است). اگر به نوع بازگشتی متد هم دقت کنید، می‌بینید که انتظار می‌رود member برگردانده شود و نه null.

      بله memberCount نشان‌دهنده تعداد اعضای کتابخانه است و با unregister شدن یک عضو، تعداد اعضا یکی کم می‌شود.

  3. با سلام و عرض خسته نباشید بسته ir.javacup.library قابل دانلود نمیباشذ لطفا بررسی کتید …
    با تشکر از سایت خوبتون

    1. سلام
      ما بررسی کردیم و ظاهرا مشکلی وجود نداشت.
      لطفا یکبار دیگر تلاش کنید.
      با تشکر

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

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

دکمه بازگشت به بالا