/
nanezz
/
ans
Обзор
Документация
Войти
/
nanezz
/
ans
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Task1.txt
24 строки
3 KB
nanezz
Create: Task1.txt
08 авг 2026, 02:52
Верифицирован
08 авг 2026, 02:52
1e8b4a5
Код
Авторство
О чём код?
1. Принцип единственной ответственности Нарушение: Класс Data совмещает в себе две различные обязанности: -хранение данных (data_ и format_) -преобразование данных в различные форматы Изменение логики форматирования или добавление нового формата потребует изменения класса Data, что противоречит SRP. Кроме того, проверка формата внутри каждого метода также относится к обязанности форматирования, что делает класс менее гибким. 2. Принцип открытости/закрытости Нарушение: Интерфейс Printable жёстко определяет все возможные форматы в виде трёх методов. При добавлении нового формата (например, XML) необходимо: -изменить интерфейс Printable -изменить все существующие реализации -изменить функцию saveTo Это делает классы открытыми для изменения, а не для расширения, что прямо нарушает OCP. 3. Принцип разделения интерфейса Нарушение: Интерфейс Printable содержит методы для всех форматов сразу. Клиенты, которым требуется только один формат, вынуждены зависеть от всех методов, хотя используют только один. Класс Data вынужден реализовывать все три метода, даже если объект может поддерживать только один формат, остальные выбрасывают исключения. Это нарушает ISP: интерфейсы должны быть узкоспециализированными, а клиенты не должны зависеть от методов, которые они не используют. 4. Принцип подстановки Лисков Нарушение: Класс Data является наследником Printable, но его методы printAsHTML(), printAsText() и printAsJSON() могут выбросить исключение std::runtime_error, если текущий формат объекта не соответствует вызываемому методу.