Кейс HomeTech
Задание
Вы - разработчик программного обеспечения в компании HomeTech. Ваша задача - создать консольное приложение для управления умными устройствами в доме.
Приложение должно позволять пользователю:
-
добавлять различные типы устройств в систему;
-
включать и выключать устройства;
-
просматривать статус всех устройств;
-
управлять специфичными настройками каждого типа устройств.
Система должна быть масштабируемой: в будущем планируется добавить новые типы устройств (умные замки, датчики движения, роботы-пылесосы и т.д.). Поэтому архитектура кода должна легко расширяться.
На текущий момент необходимо добавить поддержку следующих умных устройств:
-
умная лампочка: может включаться/выключаться, регулировать яркость (0–100%)
-
умный термостат: может включаться/выключаться, устанавливать температуру (16–30°С)
-
умная камера: может включаться/выключаться, начинать/останавливать запись
-
умная розетка: может включаться/выключаться, отображать потребляемую мощность (в ваттах)
Критерии оценивания
| Критерий | Макс. балл | Комментарий |
|---|---|---|
| Иерархия наследования | 3 | Базовый класс и наследники спроектированы корректно |
| Полиморфизм | 3 | Виртуальные методы работают, вызовы осуществляются через базовый класс |
| Инкапсуляция | 2 | Поля защищены, доступ организован через методы |
| Управление памятью | 2 | Используются виртуальные деструкторы, умные указатели, нет утечек |
| Функциональность | 2 | Программа работает, все функции реализованы |
| Расширяемость | 1 | Добавление нового устройства не требует изменения существующего кода |
| Качество кода | 1 | Достигнута читаемость кода, соблюдён стандартный стиль оформления кода, код сопровождается комментариями |
| Итого | 14 |