Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ-307_ПеровВН_Наблюдатель.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
452.36 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

ФАКУЛЬТЕТ: ЗАОЧНОЕ ОТДЕЛЕНИЕ ИНСТИТУТА ДИСТАНЦИОННОГО ОБУЧЕНИЯ

Кафедра экономической информатики

Отчёт по РГЗ

на тему: «Наблюдатель (Observer)»

Дисциплина: Системная архитектура информационных систем

Направление подготовки: 09.03.03 Прикладная информатика

Профиль: Прикладная информатика в экономике

Преподаватель:

Муртазина М.Ш.

доцент кафедры ЭИ, к.ф.н.

Выполнил(а):

Перов В.Н.

ЗО ИДО, ЗФ-307

____________________________

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

Новосибирск, 2017

СОДЕРЖАНИЕ

  1. Введение

Шаблон проектирования (англ. Software design patterns) - эффектные способы решения задач проектирования программного обеспечения. Шаблон не является законченным образцом, который можно непосредственно транслировать в программный код. Объектно-ориентированный шаблон чаще всего является образцом решения проблемы и отражает отношение между классами и объектами, без указания на то, как будет в конечном итоге реализовано это отношение.

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

На наивысшем уровне существуют архитектурные шаблоны, они охватывают собой архитектуру всей программной системы.

В настоящее контрольной работе рассматривается паттерн программирования «Наблюдатель (Observer)». Необходимо изучить основы объектно-ориентированного программирования, реализовать небольшие приложение и продемонстрировать особенности паттерна наблюдатель. Языком для реализации стал ООП язык C#.

  1. 1 Теоретическая часть

  2. 1.1 Описание шаблона

Наблюдатель – паттерн поведения объектов. Назначения этого шаблона, определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются [1]. Также известны другие имена этого шаблона Dependents (подчиненные), Publish-Subscribe (издатель – подписчик). В результате разбиения системы на множество совместно работающих классов появляется необходимость поддерживать согласованное состояние взаимосвязанных объектов.

Например, в библиотеках для создания графических интерфейсов пользователя презентационные аспекты интерфейса отделены от данных приложения. С классами, описывающими данные и их представление, можно работать автономно. Электронная таблица и диаграмма не имеют информацию друг о друге, поэтому вы вправе использовать их по отдельности. Но ведут себя так, как будто «знают друг о друге» (рис. 1).

Рисунок 1 – Пример паттерна Наблюдатель

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

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

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

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