Основы программирования на C#


Проект "Город и его службы" - часть 3


Для каждого потомка задан конструктор, вызывающий базовый метод родителя. Каждый потомок по-своему определяет обработчика события Fire. Обратите внимание на то, как в данном проекте решается проблема с выходным параметром события - Permit. Принята следующая стратегия: возвращаемое значение Permit будет истинно, если все обработчики согласны с этим. Поэтому каждый обработчик использует конъюнкцию выработанного им значения со значением, пришедшим от предыдущего обработчика. В данном примере все зависит от пожарных, которые могут вырабатывать разные решения.

Для полноты картины необходимо показать, как выглядит класс, задающий аргументы события, который, как и положено, является потомком класса EventArgs:

public class FireEventArgs : EventArgs { private int build; private int day; private bool permit; public int Build { get{ return(build);} ///set{ build = value;} } public int Day { get{ return(day);} ///set{ day = value;} } public bool Permit { get{ return(permit);} set{ permit = value;} } public FireEventArgs(int build, int day, bool permit) { this.build = build; this.day = day; this.permit = permit; } }//class FireEventArgs

Входные параметры события - build и day защищены от обработчиков события, а корректность выходного параметра гарантируется тщательным программированием самих обработчиков.

Для завершения проекта нам осталось определить тестирующую процедуру в классе Testing, создающую объекты и запускающую моделирование жизни города:

public void TestLifeTown() { NewTown sometown = new NewTown(100,100); sometown.LifeOurTown(); }

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

События в жизни города

Рис. 21.3.  События в жизни города




Начало  Назад  Вперед