
LR4.Tyutterin_Yakov_Z1411
.pdf
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
КАФЕДРА ПРИКЛАДНОЙ ИНФОРМАТИКИ
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
Канд. техн. наук |
|
С. А. Чернышев |
должность, уч. степень, звание |
подпись, дата |
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №4
Структурные шаблоны проектирования GoF
по дисциплине: Технологии программирования
РАБОТУ ВЫПОЛНИЛ |
|
|
|
|
|
СТУДЕНТ гр. № |
Z1411 |
|
|
Я. Н. Тюттерин |
|
|
|
|
|
|
|
|
номер группы |
подпись, дата |
|
инициалы, фамилия |
|
Студенческий билет № |
2022/4886 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Санкт-Петербург 2024

Лабораторная работа № 4. Структурные шаблоны проектирования GoF
Цель работы: познакомиться с основными способами реализации структурных шаблонов
проектирования GoF.
Вариант 18.
Задание 4. Разработайте консольное приложение для хранения и извлечения данных с использованием разных способов хранения (в файлах или базе данных). Используйте шаблон проектирования Мост. Обязательные для реализации классы и их методы: DataStorage - абстрактный класс для хранения данных с методами store() и retrieve(); FileStorage, DatabaseStorage – производные классы от DataStorage реализующие хранение данных; DataFormat - абстрактный класс для форматов данных с методами serialize() и deserialize(); JSONFormat, TXTFormat - производные классы от DataFormat реализующие работу с конкретными форматами данных.
Класс с конфигурацией приложения для регистрации Бинов в контексте Sprig,
отвечающими за работу с файлами формата JSON и TXT представлен на рисунке 1.
Рисунок 1 - Класс с конфигурацией

Класс-сущность для представления пользователя. Если потребуется добавить новый тип в приложение, достаточно будет добавить новый класс, без ввода репозитория,
стерилизаторов и десериализаторов, так как они являются универсальными.
Рисунок 2 - Класс-сущность
Рисунок 3 - Класс-сервис, отвечающий за вызов соответствующего хранилища для сохранения/выгрузки на основе переданного типа хранения

Рисунок 4 - Enum с доступными типа хранения
Рисунок 5 - Абстрактный класс, предоставляющий контракт для классов хранения
Рисунок 6 - Реализация хранилища для сохранения в БД

Рисунок 7 - Реализация файлового хранилища. Ее Бины регистрируются в классе-
конфигурации, описанном ранее.
Рисунок 8 - Утилитарный класс для работы с рефлексией

Рисунок 9 - Абстрактный класс для контракта по работе с типами файлов
Рисунок 10 - Реализация для JSON-файлов
Рисунок 11 - Реализация для TXT-файлов(1/2)

Рисунок 12 - Реализация для TXT-файлов(2/2)

Тестовая конфигурация представлена на рисунке 13. За счет указания флага ddlauto в true, генерация схемы происходит автоматически на основе сущностей.
Рисунок 13 - Тестовая конфигурация
Рисунок 14 - Тестовая конфигурация БД для исполнения тестов не на реальной БД, а
встроенной, но имеющей тот же функционал

Рисунок 15 - Абстрактный класс для описания общих правил тестирования
Рисунок 16 - Аннотация для указания мета-информации
Рисунок 17 - Класс с тестами сервиса(1/3)

Рисунок 18 - Класс с тестами сервиса(2/3)
Рисунок 18 - Класс с тестами сервиса(3/3). Метод, отвечающий за удаление тестовых
файлов