قفس پرندگان (تا پایان جلسه هفتم)
سطح سوال: متوسط
آنچه از این جلسه باید بدانید:
- بسته (package)
بسته ir.javacup.contest.zoo را دانلود کنید و کلاسهای Cage و CageCopier را ببینید. در کلاس CageCopier متد copy را به گونهای پیادهسازی کنید که تمامی اطلاعات و ویژگیهای قفس اول c1 به قفس دوم c2 منتقل (کپی) شود؛ به عبارت دیگر، اگر نام (name) یک پرنده یا شناسه (id) یک قفس تغییر کند، نباید تغییری در قفس دیگر رخ دهد.
package ir.javacup.contest.zoo; public class CageCopier { public void copy (Cage c1, Cage c2){ //TODO } }
نکات:
- هر قفس حداکثر دو پرنده دارد و این تعداد تغییری نمیکند.
- اگر قفسی کمتر از دو پرنده داشته باشد، مقدار حداقل یکی از خانههای آرایه birds مربوط به آن قفس، برابر با null است.
Cage c1 = new Cage();
در واقع با این کد، یک قفس ایجاد شده که دارای یک آرایهی دوتایی به نام birds است. ولی هر دو خانهی این آرایه هنوز nullهستند و اگر هیچ پرندهای به قفس c1 اضافه نشده باشد، c2 هم پس از عملیات کپی کردن به همین صورت دارای یک آرایهی دوتایی است که هر دوخانه مقدار null دارند. همین مساله در مورد قفس دارای یک پرنده هم صدق میکند.
- اگر c1 یا c2 هرکدام null بودند، عملیات کپیکردن نباید انجام شود و این متد نباید هیچ کاری انجام دهد.
- اگر هریک از فیلدهای c1 مقدار null داشته باشد، پس از کپیکردن، فیلد متناظر در c2 نیز مقدار null بگیرد.
Cage c1 = new Cage(); c1.setBirds(null);
به این ترتیب فیلد birds در قفس c1 مقدار null دارد و در قفس c2 هم باید به همین گونه باشد.
- اما اگر هر یک از فیلدهای c2 مقدار null داشته باشد، عملیات کپیکردن طبق معمول انجام شده و مقدار آن فیلد از c1 به سادگی در c2 کپی میشود.
آنچه باید آپلود کنید:
یک فایل زیپ شامل بستهی ir.javacup.contest.zoo است. به صورتی که وقتی فایل زیپ را باز میکنیم، دقیقا شاخهی ir را ببینیم که درون آن شاخهی javacup و درون آن شاخهی contest و درون آن نیز شاخهی zoo قرار دارد. در داخل شاخهی zoo دو فایل Cage.java و CageCopier.java وجود دارند.
برای داوری تمرین، میتوانید پاسخ خود را در سایت Quera به نحوی که در بالا گفته شد، بارگذاری کنید.
با ما همراه باشید:
آدرس کانال تلگرام: IranianJavaDevelopers@
آدرس صفحه اینستاگرام: javacup.ir
آدرس گروه لینکدین: Iranian Java Developers
سلام من تو استخراج فایل دانلود شده مشکل دارم
منظورتون چیه؟ دانلود میکنید ولی در استفاده ازش مشکل دارید؟
سلام چرا کسی اون طرف پاسخگو نیست؟quera
سلام
تیم پشتیبانی به سوالات همه کاربران، به ترتیب پاسخ میدهد. گاهی ممکن است دو سه روز طول بکشد تا به سوال شما پاسخ داده شود.
ممنون بابت زحمات و پیگیری ها.
سلام ببخشید من منظور این تست رامتوجه نمی شم
testNotSameCageObjects
سلام
لطفا سوال خود را در بخش «سوال بپرسید» کوئرا مطرح کنید تا تیم پشتیبانی راهنماییتان کنند.
سوال خیلی خوبیه. ولی بیان صورت مسله کمی گنگ است.بررسی امتیازات بچه ها هم گواه این است
سلام
خیلی ممنون که نظرتون رو با ما در میون گذاشتید.
بله حق با شماست.
این سوال، خیلی نکات مهم و پایهای (و در عین حال ساده)ای داره که واجبه این نکات برای پیادهساز جا بیفته و درکشون کنه.
تیم پشتیبانی همیشه سعی کرده به سوالاتی که در خصوص این سوال پرسیده میشه، طوری پاسخ بده که این نکات به خوبی شفاف و مطرح بشن و بعد از اون، پیادهساز به راحتی تونسته امتیاز کامل رو کسب کنه.
ترجیح میدیم که این نکات به صورت شفاف در متن سوال نباشه و افراد حتما خودشون به چالش کشیده بشن. بعضیها به تنهایی این چالش رو حل میکنن و بعضیها هم به کمک ما.
در هر صورت، حتما سعی میکنیم تا جای ممکن صورت سوال را شفافتر کنیم.
با تشکر
سلام
لینک بسته (ir.javacup.contest.zoo) خرابه!
ممنون میشم اصلاحش کنید.
سلام
اصلاح شد
تمرین خیلی خوبیه برای آشنایی با خطای NullPointer و مقدار دهی اولیه به اشیاء.
ممنون
درود
آیا امکانش هست پاسخنامه ای هم برای این تمرینات آموزشی در نظر گرفته و جایی قرار داده شود ؟
چون ما که این تمرینات رو حل میکنیم در مرحله آموزش هستیم و جهت رفع اشکال گاهی نیاز هست جوابیه صحیح رویت شود
سلام
در حال حاضر این امکان وجود دارد که بتوانید در سایت Quera و در بخش “سوال بپرسید”، مشکل خود را از طراح سوال بپرسید، متوجه شوید که کد شما چه مشکلی دارد که امیتاز کامل را نمیگیرد و آن را رفع کنید. در کل سوالات به گونهایست که با دقت کامل در متن سوال، میتوانید متوجه شوید و یا حداقل حدس بزنید که مشکل کدتان چیست.