build и day защищены от обработчиков события, а корректность выходного параметра гарантируется тщательным программированием самих обработчиков. Для завершения проекта нам осталось определить тестирующую процедуру в классе Testing, создающую объекты и запускающую моделирование жизни города: public void TestLifeTown() { NewTown sometown = new NewTown(100,100); sometown.LifeOurTown(); } Результаты ее работы зависят от случайностей. Вот как выглядит один из экспериментов:
Рис. 21.3. События в жизни города Необходимость в универсализации возникает с первых шагов программирования. Одна из первых процедур, появляющихся при обучении программированию - это процедура свопинга:обмен значениями двух переменных одного типа. Выглядит она примерно так: public void Swap(ref T x1, ref T x2) { T temp; temp = x1; x1 = x2; x2 = temp; } Если тип T - это вполне определенный тип, например int |