Сутрин е. Нямате търпение да разберете оценката от домашното. Припряно въвеждате наново потребителското име и парола, влизате през девет линка в десети, само и само за да видите, че асистентът ви още не е нанесъл оценката. Омръзнало ви е. Искате да си направите собствен Moodle. Гладни сте. Отваряте хладилника. Решавате да го кръстите Noodle.
Всички потребители в Noodle трябва да имат потребителско име. Преподавателите трябва да могат да се асоциират с катедрата, в която работят. На студентите трябва да им се пазят факултетния номер, годината и номера на групата, в която са.
Направете възможно да има потребителски профили едновременно от тип "преподавател" и от тип "студент". Как се справяме с този специфичен проблем?
Наели са ви да работите за голяма гейминг компания по следващото ѝ голямо заглавие на пазара. Трябва да разработите инвентарна система. След дискусии със дизайнери си нахвърляте в тефтера следните класове, описващи всички видове предмети, които трябва да се поддържат:
UpgradeableItem
level
(get)upgrade()
:level++
name
(get):"{името} ({нивото} LVL)"
EquippableItem
isEquipped
(get)equip()
unequip()
name
(get):[{+ или -}] {името}
(+
, ако е екипиран;-
иначе)
UpgradeableAndEquippableItem
level
(get)upgrade()
:level++
isEquipped
(get)equip()
unequip()
name
(get):"[{+ или -}] {името} ({нивото} LVL)"
LimitedUpgradeableItem
maxLevel
level
(get)upgrade()
:if (level < maxLevel) level++
name
(get):"{името} ({нивото или MAX} LVL)"
LimitedUpgradeableAndEquippableItem
maxLevel
level
(get)upgrade()
:if (level < maxLevel) level++
isEquipped
(get)equip()
unequip()
name
(get):"[{+ или -}] {името} ({нивото или MAX} LVL)"
Имплементирайте тези класове като избегнете сблъскването с проблема на диаманта. Създайте още каквито искате допълнителни помощни класове по ваш избор.