Microwave Ovens Microwave Ovens
Simple
Russian EN

У вас на работе есть место для обеда, где находятся 3 микроволновых печи (Мicrowave1, Мicrowave2, Мicrowave3), которые являются субклассами класса MicrowaveBase. Каждая печь может принимать команды от пульта дистанционного управления - RemoteControl. Используемые команды:

set_time("xx:xx"), где "xx:xx" - время в минутах и секундах, которое показывает, сколько будет разогреваться еда. Например: set_time("05:30")
add_time("Ns"), add_time("Nm"), где N - количество секунд или минут, которое нужно добавить к текущему времени.
del_time("Ns"), del_time("Nm"), где N - количество секунд или минут, которое нужно отнять от текущего времени.
show_time(), показывает текущее время выставленное на определенной печи.

Время по умолчанию равно 00:00. Обратите внимание, что время не может быть меньше 00:00 и больше 90:00, даже если add_time или del_time приводят к подобной ситуации.

Ваша задача - создать все необходимые классы (родительский класс MicrowaveBase, 3 класса для печей и RemoteControl) и реализовать управление каждой микроволновкой с помощью общего пульта RemoteControl(microwave), где microwave - одна из 3 микроволновых печей, которой должен управлять пульт (например, microwave = Microwave1())
Также обратите внимание, что только одна печь нормально отображает время - Microwave3. Две остальные печи имеют поврежденные дисплеи и на месте определенного символа отображают лишь "_". Для первой печи такой символ - первый, для второй - последний. Давайте рассмотрим это на примерах:

microwave_1 = Microwave1()
microwave_2 = Microwave2()
microwave_3 = Microwave3()

RemoteControl(microwave_1).show_time() == "_0:00"
RemoteControl(microwave_2).show_time() == "00:0_"
RemoteControl(microwave_3).show_time() == "00:00"
В этой миссии вам может помочь такой шаблон проектирования, как Bridge. Основная задача шаблона - отделить абстракцию от её реализации так, чтобы то и другое можно было изменять независимо.

Примеры:

microwave_1 = Microwave1()
microwave_2 = Microwave2()
microwave_3 = Microwave3()

remote_control_1...
You should be an authorized user in order to see the full description and start solving this mission.