C>_
CANALLA.EXEOBJECT-ORIENTED CATASTROPHE
← МЕНЮLEVEL 01LEVEL 03 →
LEVEL 02 / POLYMORPHISM + INHERITANCE

Дюке, охраняй! Система допуска.

Крис назначил Дюке охранять тарелку с печеньем-уточками Линды. Система доверяет тем, кто успешно выполняет команду guard. Каналья нашла у этой идеи перспективы.

GAME SCENE / КУХНЯSTANDBY
Дюке ждёт приказа. Каналья уже разработала план.
MISSION OBJECTIVES0 / 3
○
01. Поставить Дюке на пост

Дюке должен начать охранять печенье.

○
02. Разослать команду guard

Оба питомца получают одинаковую команду через общий интерфейс.

○
03. Сохранить все контракты

Дюке охраняет тарелку. Каналья получила одну уточку, сохранив ожидаемое поведение остальных команд.

ШАГ 03 · CODE EDITORCanalla.js ●
JAVASCRIPTПереопредели только тело метода Canalla.perform(). Остальные классы менять нельзя.
// class Canalla extends Pet { perform(command, station) {
} // }
Доступный API и контракты

Pet.perform(command, station) понимает "wait" и незнакомые команды. Унаследованное поведение должно сохраниться.

Duke.perform("guard", station) ставит Дюке на охрану. Для прочих команд вызывает родительский метод.

station.assign(pet) регистрирует охранника; station.isGuard(pet) проверяет регистрацию; station.takeCookie(pet) выдаёт одну уточку зарегистрированному охраннику, если печенье осталось. За смену один питомец может получить не больше одной.

Состояние: station.cookies — количество уточек, this.pocket — сколько получила Каналья.

ШАГ 04 · TEST RUNNERQA / 10 ASSERTIONS
CANALLA QA / READY
> Дюке считает, что должностная инструкция на его стороне.
CLASS EXPLORERLIVE MODEL