/* * quiz_json_adapter.h — Конкретный адаптер (Adapter) паттерна «Адаптер» * * QuizJsonAdapter — это «переводчик» между двумя несовместимыми * интерфейсами: * * Adaptee (что есть): QJsonObject / QJsonArray — формат Qt-библиотеки * Target (что нужно): IQuizAdapter — интерфейс нашего приложения * * Именно здесь выполняется десериализация: каждое поле QJsonObject * извлекается по строковому ключу и записывается в соответствующее * поле C++-объекта Quiz. * * Зависимость на уровне заголовков: QuizJsonAdapter наследует * IQuizAdapter, значит нужен только этот include — всё остальное * (QJsonObject, QJsonArray, Quiz) уже включено транзитивно. */ #pragma once #include "iquiz_adapter.h" class QuizJsonAdapter : public IQuizAdapter { public: /* * override явно указывает компилятору, что метод переопределяет * виртуальный метод базового класса. Если сигнатура вдруг не совпадёт — * получим ошибку компиляции, а не молчаливый баг. */ Quiz toQuiz (const QJsonObject &json) const override; QList toQuizList(const QJsonArray &json) const override; };