Использование структурных шаблонов проектирования
Автор: Анита Черных • Май 7, 2018 • Лабораторная работа • 4,020 Слов (17 Страниц) • 746 Просмотры
Липецкий государственный технический университет
Кафедра автоматизированных систем управления
Архитектура программных систем
Лабораторная работа №2
«Использование структурных шаблонов проектирования»
Студент | Дмитриев А.Р. | |||||
подпись, дата | фамилия, инициалы | |||||
Группа | АС-14-1 | |||||
Принял | ||||||
Алексеев В.А. | ||||||
ученая степень, звание | подпись, дата | фамилия, инициалы |
Липецк – 2018 г.
- Цель работы
Изучить шаблоны проектирования, относящиеся к классу структурных, освоить применение шаблонов этого класса при разработке программных систем с применением объектно-ориентированных языков программирования.
- Задание кафедры
Реализовать программу для решения задачи согласно варианту с использованием требуемого структурного шаблона проектирования.
Вариант 1.3 Декоратор:
На базе классов .NET Framework System.IO.StreamWriter, StreamReader реализовать набор классов, реализующих следующие преобразования текстовых данных с сохранением в файл:
- перевод фразами (предложениями) с использованием Google Translate API;
- Исправление регистра символов в предложениях (первый символ – прописной, остальные – строчные).
Тестовое приложение должно обладать функциями записи в файл текстовых данных с использованием любой комбинации преобразований в любой последовательности и чтения данных из файла с обратным преобразованием.
Тестовое приложение должно обладать функциями записи в файл текстовых данных с использованием любой комбинации преобразований в любой последовательности и чтения данных из файла с обратным преобразованием.
- Краткие теоретические сведения
- Описание шаблона проектирования
Паттерн Decorator (Декоратор)
Паттерн декоратор описывает динамическое добавление объектам новых обязанностей. Это структурный паттерн, который рекурсивно компонует объекты с целью реализации заранее неизвестного числа дополнительных функций. Например, объект-декоратор, содержащий некоторый элемент пользовательского интерфейса, может добавить к нему оформление в виде рамки или тени либо новую функциональность, например возможность прокрутки или изменения масштаба. Два разных оформления прибавляются путем простого вкладывания одного декоратора в другой. Для достижения этой цели каждый объект-декоратор должен соблюдать интерфейс своего компонента и перенаправлять ему сообщения. Свои функции (скажем, рисование рамки вокруг компонента) декоратор может выполнять как до, так и после перенаправления сообщения.
Данный шаблон используется если необходимо:
- динамически и прозрачно для клиента изменять функциональность объекта;
- (или) реализовать небольшую функциональность, которая в дальнейшем может быть исключена;
- (или) уменьшить число классов, получающихся в результате использования наследования;
- (или) добавить функциональность классу, от который невозможно наследоваться;
- (или) реализовать аналог множественного наследования, в языках его не поддерживающих.
- Классовая диаграмма для шаблона проектирования в нотации UML
[pic 1]
Рисунок 1.ПаттернDecorator
- Описание условий и хода работы
- Используемые аппаратные и программные средства
Аппаратные средства:
- Ноутбук DELL Inspiron 5570-0078
- Операционная система Windows 10 Pro
- Процессор Intel Core i7 – 7500U
- Оперативная память 8ГБ DDR4
- Размер экрана 15.6"
- Разрешение 1920x1080
- Видеопроцессор AMD Radeon R7 M440
Программные средства:
- Visual Studio 2017
- Microsoft Visio
- Интерпретация шаблона проектирования для решения задачи
Component: абстрактный класс, который определяет интерфейс для наследуемых объектов
ConcreteComponent: конкретная реализация компонента, в которую с помощью декоратора добавляется новая функциональность
Decorator: собственно декоратор, реализуется в виде абстрактного класса и имеет тот же базовый класс, что и декорируемые объекты. Поэтому базовый класс Component должен быть по возможности легким и определять только базовый интерфейс.
...