Дюке должен начать охранять печенье.
Оба питомца получают одинаковую команду через общий интерфейс.
Дюке охраняет тарелку. Каналья получила одну уточку, сохранив ожидаемое поведение остальных команд.
Canalla.perform(). Остальные классы менять нельзя.Доступный API и контракты
Pet.perform(command, station) понимает "wait" и незнакомые команды. Унаследованное поведение должно сохраниться.
Duke.perform("guard", station) ставит Дюке на охрану. Для прочих команд вызывает родительский метод.
station.assign(pet) регистрирует охранника; station.isGuard(pet) проверяет регистрацию; station.takeCookie(pet) выдаёт одну уточку зарегистрированному охраннику, если печенье осталось. За смену один питомец может получить не больше одной.
Состояние: station.cookies — количество уточек, this.pocket — сколько получила Каналья.