Привет и добро пожаловать в команду «Gilded Rose». Как вы знаете, мы небольшая гостиница удобно расположенная в известном городе под руководством дружественного управляющего по имени Эллисон. Также мы занимаемся покупкой и продажей только самых лучших товаров. К несчастью, качество наших товаров постоянно ухудшается по мере приближения к максимальному сроку хранения.
У нас есть информационная система, которая ведет переучет всех товаров. Система была разработана рубаха-парнем, по имени Leeroy, который отправился за поисками новых приключений. Ваша задача заключается в том, чтобы добавить новый функционал в нашу систему, чтобы мы могли начать продавать новую категорию товаров. Для начала введение в нашу систему:
- Все
товары
имеют значениесрока реализации
(SellIn
), которое обозначает количество дней, в течение которых мы должны их продать - Все
товары
имеют значениекачества
(Quality
), которое обозначает, насколько ценен товар - В конце дня наша система снижает значение обоих свойств для каждого товара
Довольно просто, не правда ли? Тут-то и начинается самое интересное:
- Как только срок продажи товара истек, его качество (
Quality
) портится в два раза быстрее - Качество (
Quality
) товара никогда не бывает отрицательным - Для товара "Aged Brie" качество (
Quality
) увеличивается с возрастом - Качество (
Quality
) товара никогда не превышает50
- "Sulfuras", являясь легендарным товаром, никогда не нужно продавать и его
качество
(Quality
) никогда не уменьшается - "Backstage passes", как и "Aged Brie", увеличивается в качестве (
Quality
) по мере приближения к значению срока реализации (SellIn
):- Качество (
Quality
) увеличивается на2
, когда остаётся10
дней или меньше, и на3
, когда остаётся5
дней или меньше, но - Качество (
Quality
) падает до0
после концерта
- Качество (
Недавно мы подписали контракт с поставщиком зачарованных товаров. Это требует обновления нашей системы:
- Зачарованные ("Conjured") предметы теряют качество (
Quality
) в два раза быстрее обычных товаров
Не стесняйтесь вносить любые изменения в метод UpdateQuality
и добавлять любой новый код до тех пор,
пока система работает корректно. Тем не менее, не меняйте класс Item
или свойства Items
, так как они принадлежат
сидящему в углу гоблину, который очень яростен и поэтому выстрелит в вас поскольку не верит в принцип
совместного владения кодом (вы можете сделать метод UpdateQuality
и свойства класса Item
статическими
если хотите, мы вас прикроем).
Просто для уточнения, товар никогда не может иметь качество (Quality
) выше чем 50
, однако легендарный товар "Sulfuras"
имеет качество 80
и оно никогда не меняется.