وبلاگ سید جلال سیدیزدی

تمرین نوزدهم

پنجشنبه, ۴ دی ۱۳۹۳، ۰۹:۱۷ ق.ظ

سلام دوستان

تمرین نوزدهم در مورد 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

موفق باشید.

  • ۹۳/۱۰/۰۴

نظرات  (۲)

سلام استاد
پروزه ای ک بهمون دادید طراحیش واقعاً مشکل و وقتگیره ما خیلی ک تلاش کنیم حداقل 3/4 وقت فرجه هامونو پروزه میگیره،لطفاً اگه میشه یا تمرین نذارید یا ی کم پروژه آسونترشه.
پاسخ:
سلام
بعد از امتحانات هم چند روز وقت دارید.
موفق باشید.
سلام استاد

خواهش میکنم دیگه تمرین نذارید.
علاوه بر پروژه ما 20 واحد درس داریم فرجه ها برای خواندن بقیه دروس هم هست.
پاسخ:
سلام
تمرین که نمی شه نداد!
مهلتش رو بیشتر می کنم.
موفق باشید.
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی