4.1 KiB
Технічні вимоги «Gilded Rose»
Привіт і ласкаво просимо до команди Gilded Rose. Як ви знаєте, ми — невеликий готель з чудовим розташуванням у видатному місті, яким керує привітна господиня на ім'я Еллісон. Ми також купуємо і продаємо тільки найкращі товари.
На жаль, якість (Quality) наших товарів постійно погіршується по мірі наближення до кінцевого терміну придатності.
Ми маємо інформаційну систему, яка веде облік всіх товарів. Система була розроблена прагматичним хлопцем на ім'я Лірой, який вирушив у нові пригоди. Ваше завдання полягає в тому, щоб додати новий функціонал до нашої системи, щоб ми могли почати продавати нову категорію товарів. Спочатку коротке введення в нашу систему:
- Усі
items(предмети) мають значенняSellIn, яке позначає кількість днів, протягом яких ми повинні продатиitems(цей товар). - Усі
itemsмають значенняQuality, яке позначає якістьitem. - В кінці кожного дня наша система знижує значення обох властивостей для кожного
item.
Досить просто, чи не так? Але тут починається найцікавіше:
- Після того як
SellIn(дата продажу) минула,Quality(якість) падає вдвічі швидше Qualityтовару ніколи не може бути від'ємною- Для товару "Aged Brie" якість збільшується з віком
Qualityтовару ніколи не перевищує50- "Sulfuras", як легендарний товар, ніколи не потребує продажу і його
Qualityніколи не зменшується - "Backstage passes" (пропуск за лаштунки), як і "Aged Brie", збільшує якість по мірі наближення до значення
SellIn:Quality(Якість) збільшується на2, коли залишилося10днів або менше, і на3, коли залишилося5днів або менше, але- Якість падає до
0після концерту
Ми недавно підписали угоду з постачальником чарівних товарів. Це потребує оновлення нашої системи:
- Чарівні ("Conjured") предмети втрачають якість (
Quality) удвічі швидше, ніж звичайні товари
Не соромтеся вносити будь-які зміни до методу UpdateQuality та додавати будь-який новий код, поки система працює правильно. Однак не змінюйте клас Item або властивість Items, оскільки вони належать гобліну в кутку, який дуже роздратований і тому вистрілить в вас, оскільки він не вірить у принцип спільної власності коду (ви можете зробити метод UpdateQuality та властивість Items статичними, якщо хочете — ми прикриємо вас).
Просто для уточнення, товар ніколи не може мати якість (Quality) вище, ніж 50, однак легендарний товар "Sulfuras" має якість 80 і вона ніколи не змінюється.