تمرین نوزدهم
سلام دوستان
تمرین نوزدهم در مورد Exception و Assertion است.
تمرین های 12.33 تا 12.39 از کتاب را انجام دهید.
تمرین 12.33:
در پروژه ی address-book-v3t یک کلاس جدید برای exceptionی از نوع checked با نام DuplicateKeyException تعریف کنید. این exception در صورتی که هر یک از فیلدهای کلید پارامتر واقعی متد addDetails از قبل مورد استفاده باشند باید توسط این متد پرتاب شود . کلاس DuplicateKeyException باید جزیات کلید/کلیدهای خاطی را ذخیره کند. تغییرات لازم را در کلاس رابط کاربر برای catch کردن و گزارش exception انجام دهید.
تمرین 12.34:
به نظر شما DuplicateKeyException باید checked باشد یا unchecked؟ دلایل خود را بیان کنید.
تمرین 12.35:
پروژه address-book-assert را باز کنید. در کلاس AdressBook همه ی دستورات assert را بیابید و توضیح دهید چه چیزی توسط آنها چک می شود و چرا؟
تمرین 12.36:
کلاس AddressBookDemo شامل چندین متد تست است که متدهای AdressBook را
که دارای دستور assert است را فراخوانی می کنند. در کلاس AddressBookDemo
همه ی تست ها را توضیح دهید. سپس هر یک از آنها را انجام دهید. آیا هیچ
خطای assert روی می دهد؟ اگر این طور است توضیح دهید چرا.
تمرین 12.37:
متد changeDetails از AddressBook در حال حاضر دستور assert ندارد. دستور assert ی که می توان اضافه کرد این ادعاست که تعداد اقلام در ابتدا و انتهای متد یکسان است. دستورات لازم را برای انجام این ادعا اضافه کنید. سپس متد testChange از کلاس AddressBookDemo را اجرا کنید. به نظر شما آیا این متد باید یکسان بودن اندازه map و متغیر numberOfEntries را نیز چک کند؟
تمرین 12.38:
فرض کنید تصمیم گرفته ایم که علاوه بر نام و شماره تلفن، با آدرس نیز
بتوان در دفترچه جستجو کنیم. اگر دستور زیر را به متد addDetails اضافه
کنیم، آیا هیچ یک از دستورات assertion تولید خطا می کند؟ امتحان کنید.
تغییرات لازم را در AddressBook اضافه کنید به گونه ای که هیچ یک از دستورات assertion خطا ندهد.
book.put(details.getAddress(), details);
تمرین 12.39:
ContactDetails یک شیء تغییرناپذیر (immutable) است. چرا که هیچ متد mutator ی ندارد. این موضوع در هماهنگی داخلی AddressBook چقدر مهم است؟ مثلاً اگر کلاس ContactDetails متد setPhone داشت چه مشکلی امکان داشت روی دهد؟
آزمایشی ترتیب دهید که مشکلات ممکن را نشان دهد.
مهلت ارسال: دوشنبه 8 دی ساعت 20
با تاخیر: سه شنبه 9 دی ساعت 20
موفق باشید.
- ۹۳/۱۰/۰۴