![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Этап 3. Разработка события ev и уведомления
Включим в класс Ball обычного объекта событие ev и уведомление, сигнализирующее об очередном цикле выполнения потока. Это событие и уведомление обрабатывается функцией HandlerEv или update() класса Balls, что будет использовано при перерисовке шаров в области клиента прикладного окна на четвёртом этапе. На рис. 5.3.3.1 и в примерах 5.3.3.1 и 5.3.3.2 представлены диаграмма классов третьего этапа и программы, реализующие её.
Рис. 5.3.3.1. Диаграмма классов Balls–приложения третьего этапа
Пример 5.3.3.1. Реализация третьего этапа разработки Balls–приложения. //////////////////// // С# File BallsCs3.cs // Файл BallsCs3.cs полностью включает файл BallsCs2.cs, дополнив // его объявлением события ev в классе Ball и функцией HandlerEv // класса Balls, обеспечивающей обработку этого события. // Изменения файла BallsCs2.cs выделены жирным шрифтом. ... //------------------------------------- delegate void delEv (); // Объявление типа delEv делегата события ev class Ball { public event delEv ev; // Объявление события ev ... //--------------- void BallFunc () // Выполнить поток { int n= 0; while (life) { Console.Write (" Объект {0}", num.ToString ()); Console.WriteLine (" n= {0}", n.ToString ()); n++; if (ev! = null) // Если событие активизировано, то { Console.WriteLine (" Event"); ev (); //свершить событие } Thread.Sleep (10); } Console.Write (" Объект {0}", num.ToString ()); Console.WriteLine (" завершён"); } }; //------------------------------------- class Balls // Класс потоковых объектов { Ball [] pBall;
public void HandlerEv () // Обработчик события ev { Console.WriteLine (" HandlerEv"); }
public Balls () // Конструктор { pBall= new Ball [2]; for (int i= 0; i < 2; i++) { pBall[i]=new Ball (i); pBall[i].ev+= new delEv(HandlerEv); // Добавить } Start (); } ... } class BallsCs3 { static void Main (string[] args) { Balls pBalls= new Balls (); // Создать объект класса Balls Console.WriteLine(" Объекты функционируют"); Thread.Sleep (20); // Объект функционирует 20 мс pBalls.Suspend (); // Приостановить функционирование } } Результат: Объекты функционируют Объект 0 n= 0 Event HandlerEv Объект 1 n= 0 Event HandlerEv Объект 0 n= 1 Event HandlerEv Объект 1 n= 1 Event HandlerEv */
Пример 5.3.3.2. Реализация третьего этапа разработки Balls–приложения на языке Java.
package BallsCj3; //////////////////// //C# File BallsCj3 import java.util.*;
|