Використання події | Багатоцільова обробка події. | Використання подій в компонентах .NET | Класи з великим числом подій | Що об'єднує події, делегати та властивості | Завдання на лабораторну роботу |

загрузка...
загрузка...
На головну

Використання подій в компонентах .NET.

1.6. Класи з великим числом подій.

1.7. Що об'єднує між собою події, делегати і властивості.

2. Завдання на лабораторну роботу.

3. Зміст звіту по лабораторній роботі.

4. Питання для самоперевірки.

Література.

Теоретична частина

події

Роботу будь-якого об'єкта можна розглядати як деяку послідовність виконуваних дій, в результаті яких відбувається перехід з одного його стану в деяке інше. Зазвичай сам факт такої зміни станів називають подією. З точки зору програміста, під подією слід розуміти деяку ознаку або, по суті справи, повідомлення про виконання певної дії. Як правило, події працюють таким чином. Об'єкт, якому необхідна інформація про деяке подію, реєструється як обробник цієї події. Коли очікувана подія відбувається, то викликаються всі зареєстровані обробники. І ось тут-то і виявляються дуже корисними властивості і делегати.

Справа в тому, що властивість є об'єктом, який об'єднує в собі закриту змінну і відкриті функції доступу до цієї змінної. А що, якщо замість змінної у властивості використовувати покажчик на функцію? А ось тоді ми й отримаємо те, що називають подією, яке вказує на функцію-обробник цієї події. Але оскільки покажчик являє собою незахищений тип, то замість нього найкраще використовувати делегат, який являє собою екземпляр класу. Таким чином, подія є властивість, пов'язане через делегат з функцією, що реагує дана подія і відома під назвою функції-обробника цієї події.

Клас, який вирішив мати події, повинен вміти робити, принаймні, три речі:

· Оголосити подія в класі;

· Згенерувати в потрібний момент подія, передавши оброблювачу необхідні для обробки аргументи. (Під генерацією події розуміється деякий механізм, що дозволяє об'єкту повідомити клієнтів класу, що у нього сталося дана подія);

· Проаналізувати, при необхідності, результати події, використовуючи значення вихідних аргументів події, повернуті оброблювачем.

Стосовно подій введена наступна термінологія. об'єкт, генерує події, називають джерелом (source), а об'єкт, який одержує подія, називають приймачем (sink). Функції приймача, що реагують на подію, називають обработчиками (handlers) події.

Часто використовуються й інші терміни. Об'єкт, що генерує події, називають видавцем (publisher). Кажуть, що видавець публікує події, на які повинні підписатися передплатники (subscribers) - об'єкти, обробники яких реагують на події видавця. На подію вказує посилання або дескриптор в об'єкті-видавця (об'єкті-джерелі). Підписка на подія полягає в прив'язці до події необхідного обробника, тобто створення об'єкта делегата, що інкапсулює обробник об'єкта передплатника (об'єкта-приймача), і додавання цього делегата до об'єкта події видавця. Об'єкт події являє собою особливий множинний об'єкт делегата, який може викликатися тільки в об'єкті-видавця.

Перед початком роботи програмної системи встановлюється зв'язок між її компонентами, тобто здійснюється підписка компонентів-передплатників на потрібні їм події конкретних компонентів-видавців. І тільки після завершення підписки компоненти починають виконуватися, передавати і отримувати події.

З подіями пов'язано кілька особливостей. Події можуть використовуватися тільки в тому класі, в якому вони описані і не можуть безпосередньо використовуватися в породжених класах. Події відрізняються від змінних-членів класу тим, що вони можуть бути поміщені в інтерфейс.

 



Події. | оголошення події
загрузка...
© um.co.ua - учбові матеріали та реферати