جهت مشاهدهی چالش هفتهی قبل اینجا کلیک کنید.
پیشزمینه:
شما در شرکت MyHotels.Com مشغول پیادهسازی فیچر قیمت گذاری اتاقهای یک هتل هستید.
سناریو:
در نظر داشته باشید که مسئلهای که در ادامه مشاهده میکنید فرم ساده شدهی صورت مسئله مدل کردن هتل میباشد
در این مسئله، هتل دارای اتاقهای متنوعی با خصوصیات گوناگون است که در قیمتگذاری هتل نقش مهمی ایفا میکند. برخی از این خصوصیات عبارتند از:
- نوع اتاق (سینگل، دبل، تریپل)
- طبقه اتاق (اتاقهای طبقات پایین نسبت به اتاقهای طبقات بالاتر قیمت متفاوتی دارند)
- امکانات اضافی اتاق (مانند مشرف بودن به دریا)
- علاوه بر این خصوصیات، وجود تخت اضافه در اتاق (مثلاً برای یک کودک ۹ ساله) نیز در قیمتگذاری آن اتاق مؤثر است.
صورت مسئله:
با توجه به صورت مسئله بالا به سوالات زیر پاسخ دهید:
- چه تستهای SBE (Scenario-Based Testing) میتوان طراحی کرد تا رفتار کلی سیستم قیمتگذاری را به درستی بررسی کند؟ این تستها چه موارد مهمی را پوشش میدهند؟
- چه تستهای پذیرش (Acceptance Tests) میتوان نوشت تا مطمئن شد که قیمتگذاری اتاقها به درستی محاسبه میشود؟ این تستها چه سناریوهایی را پوشش میدهند؟
- امکانات اضافی هر اتاق را چگونه میتوان مدلسازی کرد؟ آیا باید یک لیست از امکانات در
HotelRoom
نگهداری شود یا میتوان از یک مدل دیگر استفاده کرد؟ - چگونه میتوان قیمت پایه هر
HotelRoom
را محاسبه کرد؟ آیا این قیمت پایه باید به صورت یک فیلد در کلاسHotelRoom
نگهداری شود؟ - چه روشی برای محاسبه تغییرات قیمت بر اساس تقاضا و موجودی اتاقها وجود دارد؟ آیا این محاسبات باید در کلاس
HotelRoom
انجام شود یا در یک کلاس جداگانه؟ - چگونه میتوان قیمت نهایی هر
HotelRoom
را با در نظر گرفتن تمام عوامل مؤثر (نوع اتاق، موقعیت، امکانات اضافی و تغییرات تقاضا) محاسبه کرد؟
چالش بعدی DDD Plus در مورد جنبهی دیگری از همین صورت مسئله است.😉