Домашняя работа № 3 (9 p.)
Перед выполнением домашней работы вытяните и слейте изменения из моего оригинального репозитория Для тестирования вашего кода используйте существующие тесты из директории tests или добавьте свои
Для работы с устройствами в нашем SCADA-фреймворке мы определим класс Device
который будет представлять интерфейс для произвольного прибора. Определим следующие понятия:
trait — изменяемое свойство устройства, которое опционально может быть считано из устройства или наоборот записано в прибор.
action — действие, которое может выполнить устройство.
логический уровень — текущие значение traits устройства в программе.
физические уровень — реальные значения trits устройства.
Таким образом объект представляющий устройство описывает traits и actions этого устройств, а так же связывает физический и логический уровень.
(1 p.) В модуле
controls/device.py
превратите классDeviceLifecycleState
в перечисление, описывающий одно из трёх состояний прибора:INIT
,OPEN
,CLOSE
.(1 p.) В модуле
controls/device.py
в классеDevice
выполните следующий условия:Сделайте класс
Device
абстрактным.Методы
trait_descriptors
иaction_descriptors
сделайте abstract property.
Считывание/запись данных с/в устройства/о можно проводить синхронным или асинхронным образом. Определим класс
SynchronyDevice
описывающий синхронное взаимодействие с устройством. В нем определенны абстрактные методы
для работы с traits и actions устройства (см. docstring методов).
В модуле
equipment/turtle_device.py
реализуйте классTurtleDevice
(для генерации заготовок абстрактных методов можно использовать иструменты IDE). С помощью экземпляров этого класса мы будем управлять черепашкой (объектом классTurtle
из модуляturtle
). Реализуйте следующее поведение:(1 p.) В методах
open
иclose
должен создаваться и уничтожаться объект черепашки, не забудьте вызвать родительские методы для изменения состояния устройства.(3 p.) Свойства
trait_descriptors
иaction_descriptors
должны возвращать описания traits и actions черепашки согласно заданной сигнатуре методов. Traits черепашки это её публичные аттрибуты и они доступны только на чтение. Actions черепашки это её публичные методы. Описания должны генерироваться автоматически путем анализа класса черепашки.(3 p.) Реализуйте методы
read
,write
,execute
,__getitem__
,invalidate
. Значения полей объекта черепашка считайте физическим уровнем. При необходимости вызывайте реализацию родительского метода.