feat: implement legacy shop management system and add task documentation files
CI Check / lint-and-check (push) Failing after 9s

This commit is contained in:
Dmitry Belan
2026-07-18 12:25:32 +03:00
parent 7e8afd2a7e
commit ee235ece10
14 changed files with 953 additions and 1 deletions
+32
View File
@@ -0,0 +1,32 @@
### Задача 4. Работа с JSON и файлами (ООП, JSON, Исключения)
**Постановка**
* **Конфигурация:** Умеет читать и писать настройки в JSON-файл.
* **Приложение:** Использует конфигурацию для хранения состояния.
**Задание**
**Класс `Config`:**
1. Создайте класс `Config`.
2. В `__init__(self, filename)` сохраните имя файла.
3. Метод `load(self)` — читает JSON-файл и возвращает словарь. Если файла нет, перехватывает `FileNotFoundError` и возвращает пустой словарь `{}`.
4. Метод `save(self, data)` — записывает словарь `data` в JSON-файл с отступами (`indent=4`) и кодировкой `utf-8`.
5. Метод `get(self, key, default=None)` — загружает данные и возвращает значение по ключу или `default`.
6. Метод `set(self, key, value)` — загружает данные, устанавливает новое значение, сохраняет обратно.
**Класс `Application`:**
1. Создайте класс `Application`.
2. В `__init__(self, config)` сохраните объект `Config`.
3. Метод `run(self)` — выводит приветствие с именем пользователя из конфига (ключ `"username"`), по умолчанию `"Гость"`.
4. Метод `set_username(self, name)` — сохраняет имя в конфиг через `config.set`.
**Тесты:**
1. Создайте `Config("settings.json")` и `Application(config)`
2. Запустите приложение (должно вывести "Гость")
3. Установите имя через `set_username("Иван")`
4. Запустите снова (должно вывести "Иван")
5. Проверьте, что файл `settings.json` создался и содержит правильные данные