Материал: Паттерны проектирования программных систем (90

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

1)перевод фразами (предложениями) с использованием Google Translate API;

2)Исправление регистра символов в предложениях (первый символ – прописной, остальные – строчные).

Тестовое приложение должно обладать функциями записи в файл текстовых данных с использованием любой комбинации преобразований в любой последовательности и чтения данных из файла с обратным преобразованием.

2.Фасад.

2.1.Реализовать систему управления домашним кинотеатром,

включающим следующие электронные компоненты:

широкоформатный телевизор, Blu-Ray проигрыватель, ресивер с акустической системой. Каждый из компонентов имеет собственный интерфейс управления и ряд настроек (например, телевизор – формат отображения, режим яркости, 3D; ресивер – режим объемного звучания, громкость). Реализовать общий интерфейс управления домашним кинотеатром, предусматривающий включение и комплекс настроек для нескольких типовых режимов просмотра / прослушивания

(например, мультфильмы, классическая музыка и т.п.).

2.2.Реализовать систему криптографической защиты данных на основе служб криптографии .NET Framework (пространство имен

System.Security.Cryptography). Система криптографической защиты должна реализовывать цифровую подпись файла и шифрование данных с использованием выбранной комбинации алгоритмов цифровой подписи, хеширования и симметричного шифрования. Должно быть реализовано и обратное преобразование защищенного файла –

дешифрование и проверка цифровой подписи. Дополнительно система защиты данных должна генерировать пару ключей для цифровой подписи и выгружать открытый ключ в формате xml. Секретный ключ

15

для алгоритма симметричного шифрования должен запрашиваться у

пользователя.

3.Компоновщик.

3.1.В информационной системе хранится организационная структура предприятия (иерархия структурных подразделений). Для каждого структурного подразделения задан код, наименование и перечень должностей по штатному расписанию: наименование должности,

количество ставок, оклад. Необходимо разработать набор классов для представления организационной структуры с использованием заданного шаблона проектирования. Должны быть реализованы возможности вывода штатного расписания для любого подразделения

(включая подчиненные подразделения) с расчетом общего количества штатных единиц и суммарного оклада. Программа должна предусматривать добавление и удаление подразделений, должностей.

3.2.Реализовать утилиту анализа дерева каталогов и файлов для выбранного диска/каталога. Утилита должна считывать содержимое файловой системы и использовать набор классов, соответствующий заданному шаблону проектирования, для хранения содержимого файловой системы. Утилита должна реализовывать анализ файловой системы, вывод дерева каталогов и файлов с указанием занимаемого на диске места.

3.3.В САПР продукции машиностроительного предприятия хранится информация о комплектующих выпускаемой продукции,

организованная в виде иерархии, узлами которого являются сборочные единицы, элементарные детали и закупаемые компоненты. Для элементарных деталей и закупаемых компонентов задается стоимость,

для сборочных единиц, кроме того, время сборки и количество используемых деталей/компонентов каждого вида. САПР должна обеспечивать вывод иерархии производства продукции, расчет времени

и стоимости производства изделия.

16

3.4.В системе моделирования используется представление математического выражения (функции n переменных) в виде дерева вычисления, листьями которого являются переменные или константы, а

промежуточными узлами – математические операции, включающие

операторы (сумма, разность, произведение, частное) и элементарные функции (sqrt, exp, log и т.п.). Реализовать хранение выражения в виде дерева с использованием заданного шаблона проектирования,

вычисление значения выражения при заданных значениях переменных и вывод выражения в текстовом виде в традиционной (инфиксной)

нотации. Ввод выражения должен осуществляться в польской

(префиксной) нотации с автоматическим формированием дерева вычисления.

17

Лабораторная работа № 3

Использование поведенческих шаблонов проектирования

Цель работы

Изучить шаблоны проектирования, относящиеся к классу поведенческих,

освоить применение шаблонов этого класса при разработке программных систем с применением объектно-ориентированных языков программирования.

Теоретические сведения

Паттерны поведения связаны с алгоритмами и распределением обязанностей между объектами. Речь в них идет не только о самих объектах и классах, но и о типичных способах взаимодействия. Паттерны поведения характеризуют сложный поток управления, который трудно проследить во время выполнения программы. Внимание акцентировано не на потоке управления как таковом, а на связях между объектами.

В паттернах поведения уровня класса используется наследование – чтобы распределить поведение между разными классами. Самым простым и распространенным паттерном такого вида является «шаблонный метод»,

который представляет собой абстрактное определение алгоритма. Алгоритм здесь определяется пошагово. На каждом шаге вызывается либо примитивная,

либо абстрактная операция. Алгоритм «обрастает мясом» за счет подклассов,

где определены абстрактные операции. Другой паттерн поведения уровня класса – «интерпретатор», который представляет грамматику языка в виде иерархии классов и реализует интерпретатор как последовательность операций над экземплярами этих классов.

В паттернах поведения уровня объектов используется не наследование, а

композиция. Некоторые из них описывают, как с помощью кооперации множество равноправных объектов справляется с задачей, которая ни одному из них не под силу. Важно здесь то, как объекты получают информацию о существовании друг друга. Объекты-коллеги могут хранить ссылки друг на

18

друга, но это увеличит степень связанности системы. При максимальной степени связанности каждому объекту пришлось бы иметь информацию обо всех остальных. Эту проблему решает паттерн посредник. Посредник,

находящийся между объектами-коллегами, обеспечивает косвенность ссылок,

необходимую для разрывания лишних связей.

Паттерн «цепочка ответственности» позволяет и дальше уменьшать степень связанности. Он дает возможность посылать запросы объекту не напрямую, а по цепочке «объектов-кандидатов». Запрос может выполнить любой «кандидат», если это допустимо в текущем состоянии выполнения программы. Число кандидатов заранее не определено, а подбирать участников можно во время выполнения.

Паттерн «наблюдатель» определяет и отвечает за зависимости между объектами. Классический пример наблюдателя встречается в схеме модель/вид/контроллер (MVC), где все виды модели уведомляются о любых изменениях ее состояния.

Прочие паттерны поведения связаны с инкапсуляцией поведения в объекте и делегированием ему запросов. Паттерн «стратегия» инкапсулирует алгоритм объекта, упрощая его спецификацию и замену. Паттерн «команда» инкапсулирует запрос в виде объекта, который можно передавать как параметр,

хранить в списке истории или использовать как-то иначе. Паттерн «состояние» инкапсулирует состояние объекта таким образом, что при изменении состояния объект может изменять поведение. Паттерн «посетитель» инкапсулирует поведение, которое в противном случае пришлось бы распределять между классами, а паттерн «итератор» абстрагирует способ доступа и обхода объектов из некоторого агрегата. Паттерн «хранитель» фиксирует и выносит за пределы объекта его внутреннее состояние, не нарушая инкапсуляции так, чтобы позднее можно было восстановить в нем объект.

Таким образом, к поведенческим шаблонам относятся:

Цепочка ответственности (Chain of responsibility);

19

Источник: https://studfile.net/preview/16724806/