В зале ресторана для влюбленных расположено N столов одинакового размера. Если вы еще не догадались, то каждый столик рассчитан ровно на двоих, ни больше, ни меньше. Столики в этом удивительном заведении можно в течение дня заказывать по телефону. Сотрудница ресторана с ангельским голосом — обязательное условие коммерческого успеха — выясняет у предполагаемого посетителя желаемое время визита. В случае наличия свободных мест она записывает в журнал номер телефона посетителя, время прихода и номер зарезервированного столика. Многолетние наблюдения показали, что посетители проводят в ресторане не более трех часов. Если свободного столика на все время визита не находится, сотрудница сообщает об этом с сожалением в голосе (не забываете для кого этот ресторан!), но с неудержимой тягой к наживе, которая ошибочно воспринимается находящимся на грани отчаяния от услышанного звонящим как сочувствие, предлагает забронировать столик на ограниченное время или изменить время визита.
Вся гамма душевных переживаний звонящего не поддается никакому рациональному анализу и находится далеко за пределами нашего обсуждения. В отличие от расчетливых действий сотрудницы ресторана. Пусть ангельский голос не вводит вас в заблуждение!
Требуется реализовать класс для работы с журналом заказов. Значение N и часы работы ресторана могут изменяться каждый день, но в течение одного дня остаются неизменными. С помощью данного класса сотрудники ресторана должны иметь возможность выполнять следующие действия.
Ресторан всеми средствами пытается бороться за посетителей. Поэтому под рекламным слоганом "За искренность отношений" запрещает бронировать два столика на один номер телефона. Разумеется, только в течение одного вечера. На следующий день у звонящего опять полная свобода.
Ожидается, что вы разработаете правильный интерфейс и какую-то реализацию. Все методы должны работать корректно, но их производительность не имеет значения. Медленно, но корректно.
В случае обнаружения ошибочных данных методы должны генерировать исключения.