Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LR4.Tyutterin_Yakov_Z1411

.pdf
Скачиваний:
0
Добавлен:
07.01.2025
Размер:
3.28 Mб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА ПРИКЛАДНОЙ ИНФОРМАТИКИ

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

Канд. техн. наук

 

С. А. Чернышев

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №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). Метод, отвечающий за удаление тестовых

файлов

Соседние файлы в предмете Технологии программирования