События. Объявление и генерация событий. Реализация обработчиков событий

В консольных приложениях программный код Main() тем или иным способом направлял запросы соответствующим объектам. В Windows-приложениях должно существовать обратное обращение объекта к обращаемой стороне (ОС), ведь они выполняются нелинейно. Например, в приложениях архитектуры WindowsForms нужно выполнять действия только по щелчку кнопки мыши, нажатию клавиш и др. В серверных приложениях нужно ожидать сетевого запроса. В среде .NET Framework реализация таких сценариев возможна с использованием интерфейсов обратного вызова, а также событий и делегатов. Интерфейсы определяют поведение, которое может поддерживаться самыми разными типами (объектами классов). Но интерфейс использовать трудоемко: нужно разработать класс-посредник, который реализует интерфейс обратного вызова. В С# лучше обрабатывать сообщения ОС с помощью событий и делегатов. События (event) – это отправленное объектом уведомление о совершении какого-либо действия. Событие – автоматическое уведомление о выполнении некоторых действий. Действие может быть выполнено пользователем или программой. Объект, сгенерировавший событие, называется отправителем событий. Объект, перехвативший событие и реагирующий на него, называется получателем событий. Объявление стандартного делегата событий:

public delegate void EventHandler (object sender EventArgs e);

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

Объявление события:

public event делегат объект;

Рекомендуется, чтобы обработчики событий имели 2 параметра: объект, сгенерировавший событие, и информация об объекте-источнике.

Чтобы управлять списком обработчиков событий, исп. Еще одну форму event-инструкции, которые позволяет использовать средства доступа к событиям. Эти средства доступа к событиям дают возможность управлять реализацией списка обработчиков событий. event событийный_делегат имя_событий {add{ //код добавления событий в цепочку событий} Remove{ //код удаления событий из цепочки событий }} Эта форма включает два средства доступа к событиям add и Remove. Ср-во доступа add вызывается в случае, когда с пом. оператора «+=» в цепочку событий добавляется новой обработки, а Remove – когда с помощью оператора «-=» из цепочки событий удаляется новый обработчик. Средство доступа add и Remove при вызове получает обработчик, которые необходимо добавить или удалить, в качестве параметра. Этот параметр наз. value.


45.Понятие компонента и компонентной модели, компонентно-ориентированного программирования.

Понятие компонента и компонентной модели. Visual Basiс язык для работы с объектами, он не объектно-ориентированный. Предн.для работы с объектами и позволял более легко строить граф.интерфейс.Прогр-ние на С++ и исп-ние библиотека MFC(Microsoft Foundation Classes, сложный для чтения код).Технология СОМ – Microsoft Component Object Model – модель многокомпонентных объектов для разработки приложений-серверов и приложений-контейнеров. Упрощение для СОМ – библиотека ATL. Модель многокомпонентных объектов явл. двоичным стандартом интерфейса объектов в Windows. Это означает, что выполняемый программный код (в файлах .DLL или .EXT), который описывает объект, может быть вызван на выполнение другим объектом. Даже если оба объекта были написаны на разных языках, они сохраняют возможность взаимодействия между собой, используя стандарт СОМ.

Под компонентом понимается независимый модуль для повторного использования и разворачивания. Свойства компонента:

1) более крупная единица, чем объект (объект – это конструкция уровня языка программирования);

2) содержит множественные классы;

3) не зависит от языка программирования (в большинстве случаев).

Автор и пользователь компонента, находятся в разных местах и используют разные языки.

А также можно сказать про компонент ActiveX – это отдельный проект, содержащий набор элементов управления, классов и других программных модулей, скомпилированный затем в файл .OCX, .EXE, .DLL в зависимости от целей применения этого компонента.


46.Принципы и технологии внедрения и связывания объектов.

ОС Windows позволяет:

¾ создавать комплексные документы, содержащие несколько разных типов данных;

¾ обеспечивать совместную работу нескольких приложений при подготовке одного документа;

¾ переносить и копировать объекты между приложениями с использованием буфера обмена данными.

Под внедрением объектов подразумевается создание комплексного документа (документа-контейнера), содержащего два и более автономных объектов. Обычным средством внедрения объектов является их импорт из готового файла, в котором данный объект хранится (Если внедряем в Word- документ какой-то объект, графический или звукозапись, то нужно выполнить Вставка → Объект → Создать из файла.).

При сохранении комплексного документа (документа-контейнера) сохраняется и текст, и внедрённые в него объекты. Размер исходно документа возрастает.

Однако можно поместить объект в документ и другим способом. В диалоговом окне Вставка объекта есть флажок Связь. Если установить этот флажок перед вставкой объекта, то происходит другой тип вставки, называемый связыванием. Связывание отличается от внедрения тем, что сам объект не вставляется в документ, а вставляется только указатель (ссылка) на местоположение объекта.