خانه / آموزش / تمرین‌های آموزشی / قفس پرندگان (تا پایان جلسه هفتم)

قفس پرندگان (تا پایان جلسه هفتم)

سطح سوال: متوسط

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

  • بسته (package)

بسته ir.javacup.contest.zoo را دانلود کنید و کلاس‌های Cage و CageCopier را ببینید. در کلاس CageCopier متد copy را به گونه‌ای پیاده‌سازی کنید که تمامی اطلاعات و ویژگی‌های قفس اول c1 به قفس دوم c2 منتقل (کپی) شود؛ به عبارت دیگر، اگر نام (name) یک پرنده یا شناسه (id) یک قفس تغییر کند، نباید تغییری در قفس دیگر رخ دهد.

نکات:

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

 در واقع با این کد، یک قفس ایجاد شده که دارای یک آرایه‌ی دوتایی به نام birds است. ولی هر دو خانه‌ی این آرایه هنوز nullهستند و اگر هیچ پرنده‌ای به قفس c1 اضافه نشده باشد، c2 هم پس از عملیات کپی کردن به همین صورت دارای یک آرایه‌ی دوتایی است که هر دوخانه مقدار null دارند. همین مساله در مورد قفس دارای یک پرنده هم صدق می‌کند.

  • اگر c1 یا c2 هرکدام null بودند، عملیات کپی‌کردن نباید انجام شود و این متد نباید هیچ کاری انجام دهد.
  • اگر هریک از فیلدهای c1 مقدار null داشته باشد، پس از کپی‌کردن، فیلد متناظر در c2 نیز مقدار null بگیرد.
 به این ترتیب فیلد birds در قفس c1 مقدار null دارد و در قفس c2 هم باید به همین گونه باشد.

  • اما اگر هر یک از فیلدهای c2 مقدار null داشته باشد، عملیات کپی‌کردن طبق معمول انجام شده و مقدار آن فیلد از c1 به سادگی در c2 کپی می‌شود.

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

یک فایل زیپ شامل بسته‌ی ir.javacup.contest.zoo است. به صورتی که وقتی فایل زیپ را باز می‌کنیم، دقیقا شاخه‌ی ir را ببینیم که درون آن شاخه‌ی javacup و درون آن شاخه‌ی contest و درون آن نیز شاخه‌ی zoo قرار دارد. در داخل شاخه‌ی zoo دو فایل Cage.java و CageCopier.java  وجود دارند.

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

 

 


درباره مهناز خورسندی

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

ماشین‌سازی (تا پایان جلسه ششم)

سطح سوال: ساده آنچه از این جلسه باید بدانید: فرآیند مقداردهی اولیه اشیا سازنده ترتیب …

۳ نظر

  1. درود
    آیا امکانش هست پاسخنامه ای هم برای این تمرینات آموزشی در نظر گرفته و جایی قرار داده شود ؟
    چون ما که این تمرینات رو حل میکنیم در مرحله آموزش هستیم و جهت رفع اشکال گاهی نیاز هست جوابیه صحیح رویت شود

     
    • سلام
      در حال حاضر این امکان وجود دارد که بتوانید در سایت Quera و در بخش “سوال بپرسید”، مشکل خود را از طراح سوال بپرسید، متوجه شوید که کد شما چه مشکلی دارد که امیتاز کامل را نمی‌گیرد و آن را رفع کنید. در کل سوالات به گونه‌ایست که با دقت کامل در متن سوال، می‌توانید متوجه شوید و یا حداقل حدس بزنید که مشکل کدتان چیست.

       
  2. تمرین خیلی خوبیه برای آشنایی با خطای NullPointer و مقدار دهی اولیه به اشیاء.

    ممنون

     

پاسخ دهید

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