From 35b43584ead2074db0839dafbe79b835d420b2a0 Mon Sep 17 00:00:00 2001 From: Alexander Baranov Date: Fri, 6 Mar 2026 16:28:29 +0300 Subject: [PATCH] new homework definition --- smart-house/README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/smart-house/README.md b/smart-house/README.md index 8dada61..ca4334f 100644 --- a/smart-house/README.md +++ b/smart-house/README.md @@ -168,3 +168,40 @@ Запуск примера умного дома: cargo run --bin mocks_example + +## ДЗ 2026-03-05 + +Паттерны в умном доме + +### Цель: + +Делаем код умного дома более удобным с использованием различных паттернов. + +### Срок: + +Сдать до: **2026-04-01** + +### Описание/Пошаговая инструкция выполнения домашнего задания: + +Реализовать билдер для умного дома, позволяющий инициализировать объект умного дома в [таком стиле](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=5d0527e4684f726d54dc375829d983f4). + +- [ ] До добавления первой комнаты, билдер запрещает добавлять устройства. Это должно контролироваться компилятором. + +Реализовать компоновщик для построения отчёта об объектах умного дома в [таком стиле](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=c07dfc726e8ccbccdcc2d88a79d3f190). + +- [ ] Использовать статический полиморфизм (дженерики). +- [ ] Вызов метода report() должен выводить в терминал отчёт обо всех добавленных объектах. + +Добавить возможность добавления callback-ов в объект комнаты, которые срабатывают при добавлении новых устройств в комнату (паттерн Observer). + +- [ ] Использовать динамический полиморфизм (трейт-объекты). +- [ ] Можно передавать как объект-subscriber, так и [замыкание](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=06e9dc9bcce297d1e80a22d7e9338ee8). + +Добавить example-ы, демонстрирующие новый функционал. + +**Критерии оценки:** + +- Package успешно собирается. +- Приложение-пример успешно выполняется. +- Команды cargo clippy и cargo fmt --check не выводят ошибок и предупреждений. +- Присутствуют и успешно выполняются модульные тесты.