Microwave Ovens
У вас на работе есть место для обеда, где находятся 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() assert RemoteControl(microwave_1).show_time() == "_0:00" assert RemoteControl(microwave_2).show_time() == "00:0_" assert RemoteControl(microwave_3).show_time() == "00:00"В этой миссии вам может помочь такой шаблон проектирования, как Bridge. Основная задача шаблона - отделить абстракцию от её реализации так, чтобы то и другое можно было изменять независимо.
Примеры:
microwave_1 = Microwave1() microwave_2 = Microwave2() microwave_3 = Microwave3() remote_control_1...