МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
ФАКУЛЬТЕТ: ЗАОЧНОЕ ОТДЕЛЕНИЕ ИНСТИТУТА ДИСТАНЦИОННОГО ОБУЧЕНИЯ
Кафедра экономической информатики
Отчёт по РГЗ
на тему: «Наблюдатель (Observer)»
Дисциплина: Системная архитектура информационных систем
Направление подготовки: 09.03.03 Прикладная информатика
Профиль: Прикладная информатика в экономике
Преподаватель: Муртазина М.Ш. доцент кафедры ЭИ, к.ф.н.
|
Выполнил(а): Перов В.Н. ЗО ИДО, ЗФ-307
____________________________ (подпись, дата) |
Новосибирск, 2017
СОДЕРЖАНИЕ
Введение
Шаблон проектирования (англ. Software design patterns) - эффектные способы решения задач проектирования программного обеспечения. Шаблон не является законченным образцом, который можно непосредственно транслировать в программный код. Объектно-ориентированный шаблон чаще всего является образцом решения проблемы и отражает отношение между классами и объектами, без указания на то, как будет в конечном итоге реализовано это отношение.
«Низкоуровневые» шаблоны, учитывающие специфику конкретного языка программирования, называются идиомами. Это хорошие решения проектирования, характерные для конкретного языка или программной платформы, и потому не универсальные.
На наивысшем уровне существуют архитектурные шаблоны, они охватывают собой архитектуру всей программной системы.
В настоящее контрольной работе рассматривается паттерн программирования «Наблюдатель (Observer)». Необходимо изучить основы объектно-ориентированного программирования, реализовать небольшие приложение и продемонстрировать особенности паттерна наблюдатель. Языком для реализации стал ООП язык C#.
1 Теоретическая часть
1.1 Описание шаблона
Наблюдатель – паттерн поведения объектов. Назначения этого шаблона, определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются [1]. Также известны другие имена этого шаблона Dependents (подчиненные), Publish-Subscribe (издатель – подписчик). В результате разбиения системы на множество совместно работающих классов появляется необходимость поддерживать согласованное состояние взаимосвязанных объектов.
Например, в библиотеках для создания графических интерфейсов пользователя презентационные аспекты интерфейса отделены от данных приложения. С классами, описывающими данные и их представление, можно работать автономно. Электронная таблица и диаграмма не имеют информацию друг о друге, поэтому вы вправе использовать их по отдельности. Но ведут себя так, как будто «знают друг о друге» (рис. 1).
Рисунок 1 – Пример паттерна Наблюдатель
Когда пользователь начинает работу с электронной таблицей, все изменения немедленно отражаются на диаграмме, и наоборот.
При таком поведении подразумевается, что и электронная таблица, и диаграмма зависят от данных объекта и поэтому должны уведомляться о любых изменениях в его состоянии. И нет никаких причин, ограничивающих количество зависимых объектов; для работы с одними и теми же данными может существовать любое число пользовательских интерфейсов.
Паттерн наблюдатель описывает, как устанавливать такие отношения. Ключевыми объектами в нем являются субъект и наблюдатель. У субъекта может быть сколько угодно зависимых от него наблюдателей. Все наблюдатели уведомляются об изменениях в состоянии субъекта. Получив уведомление, наблюдатель опрашивает субъекта, чтобы синхронизировать с ним свое состояние.
Такого рода взаимодействие часто называется отношением издатель подписчик. Субъект издает или публикует уведомления и рассылает их, даже не имея информации о том, какие объекты являются подписчиками. На получение уведомлений может подписаться неограниченное количество наблюдателей.
