Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 86 стр.

UptoLike

Составители: 

86
}
k = 0;
}
else k += 1;
} } }
В данном примере, в классе ClassWithEvent описан делегат My-
Handler, сигнатура которых содержит три параметра. Событие
MyEvent в классе ClassWithEvents является экземпляром класса, за-
данного делегатом.
Обработка событий в классах
Класс, который заинтересован в обработке событий, должен:
иметь обработчик события метод, согласованный по сигнатуре с
сигнатурой делегата, который задает событие;
иметь ссылку на объект, создающий событие, чтобы получить
доступ к этому событию – event-объекту;
присоединить обработчик события к event-объекту. Это реализу-
ется с использованием операции += для описанного события.
Пример класса, использующего описанный ранее класс ClassWi-
thEvent с событием, показан ниже:
class Program {
const int WorkVolume = 10000000; // объем работы
public static void Main(){
// создается объект
ClassWithEvent obj=new ClassWithEvent(WorkVolume);
// задается обработчик события
obj.MyEvent += new MyHandler(ShowStar);
// запускам длинную работу у объекта a
obj.LongWork();
// ждем нажатия клавиши
Console.ReadLine();
}
// обработчик события
private static void ShowStar(object o, int n) {
Console.WriteLine(" Выполнено {0}%", n);
//Console.Write("*"); // можно просто выводить *
}
}
5. Отношения между классами
Описываемые в программах классы обычно находятся в некото-
рых отношениях друг с другом. В объектно-ориентированном програм-