ПКРПСиБД LAB6 Захаров А.Е. (548498)
Текст из файла
Национальный Исследовательский Университет
МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
Институт автоматики и вычислительной техники
Кафедра прикладной математики
Лабораторная работа № 6
Реализация одного из структурных
шаблонов проектирования
Курс «Проектирование крупных распределенных программных систем и баз данных»
Выполнил
студент группы А-13-08
Захаров Антон
(8 вариант)
Преподаватель
к.т.н., доц. Куриленко Иван Евгеньевич
Цель работы
Научиться применять структурные шаблоны проектирования.
Порядок выполнения работы
-
С использованием одного из языков программирования из множества (C++, C#, Java) реализовать структурный шаблон проектирования «Адаптер»
(8 вариант). -
Разработать UML модель.
Требования
-
Наличие работающей демонстрационной программы с исходным кодом.
-
Наличие UML-модели в электронном виде, иллюстрирующей шаблон, полученной с помощью специализированного диаграммера (Rational Enterprise Architect, Visual Paradigm, Visual Studio).
-
Наличие отчёта в печатном виде, содержащего теоретическое введение, UML-модель и исходный код.
Адаптер
Структурный шаблон проектирования
Описание
Адаптер (Adapter) – структурный шаблон проектирования, предназначенный для организации использования функций объекта, недоступного для модификации, через специально созданный интерфейс.
По схеме, используемой для работы с адаптируемым объектом, выделяют два варианта:
-
Адаптер объекта – использует композицию, т.е. содержит экземпляр адаптируемого объекта.
-
Адаптер класса – использует наследование от адаптируемого объекта для получения его функциональности.
Уместность применения
Шаблон следует применять, если необходимо создать класс, производный от вновь определяемого или уже существующего абстрактного класса.
Приоритетным является вариант применения адаптера объекта, так как он обеспечивает меньшую связанность с адаптируемым объектом. В этом случае может даже осуществляться преобразование одного интерфейса в другой без привязки к конкретной реализации.
Но встречаются ситуации, когда требуется применение адаптера класса. Например, необходимость доступа к защищённым методам. В другом случае может потребоваться использовать адаптер и вместо адаптируемого объекта.
Преимущества, достигаемые при применении шаблона
-
Изменяет интерфейс объекта, не изменяя его функциональности. Может адаптировать несколько объектов к одному интерфейсу.
-
Позволяет повторно использовать уже существующий код.
-
Содержит или наследует адаптируемый объект.
-
Простота реализации.
Недостатки шаблона
-
Доступ к защищённым методам может привести к возникновению ошибок.
-
Изменения адаптируемого класса может потребовать изменить код адаптера.
Детали реализации
Шаблон реализуется следующим образом:
1. Адаптер объекта
using System;
using System.Windows.Forms;
namespace lab6
{
public interface IGenerator
{
int getRandom();
int getRandom(int maxValue);
int getRandom(int minValue, int maxValue);
}
public class generatorAdapter : IGenerator
{
private readonly Random rand = new Random();
public int getRandom() {
return rand.Next();
}
public int getRandom(int maxValue) {
return rand.Next(maxValue);
}
public int getRandom(int minValue, int maxValue) {
return rand.Next(minValue, maxValue);
}
}
public partial class Form1 : Form
{
private IGenerator generator = new generatorAdapter();
public Form1() {
InitializeComponent();
generate();
}
private void buttonClick(object sender, EventArgs e) {
generate();
}
private void generate() {
label.Text = generator.getRandom(10, 100).ToString();
}
}
}
2. Адаптер класса
using System;
using System.Windows.Forms;
namespace lab6
{
public interface IGenerator
{
int getRandom();
int getRandom(int maxValue);
int getRandom(int minValue, int maxValue);
}
public class generatorAdapter : Random, IGenerator
{
public int getRandom() {
return Next();
}
public int getRandom(int maxValue) {
return Next(maxValue);
}
public int getRandom(int minValue, int maxValue) {
return Next(minValue, maxValue);
}
}
public partial class Form1 : Form
{
private IGenerator generator = new generatorAdapter();
public Form1()
{
InitializeComponent();
generate();
}
private void buttonClick(object sender, EventArgs e)
{
generate();
}
private void generate()
{
label.Text = generator.getRandom(10, 100).ToString();
}
}
}
UML-диаграммы
1. Адаптер объекта
2. Адаптер класса
Литература
-
Приёмы объектно-ориентированного проектирования. Паттерны проектирования. – СПб.: Питер, 2011. – 368 с.: ил.
-
PHP: объекты, шаблоны и методики программирования. 3-е изд.: Пер. с англ. – М. : ООО «И.Д. Вильямс», 2011. – 560 с. : ил. – Парал. тит. англ.
Москва, 2012
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.