Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Этап 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.*;


.

mylektsii.ru - Мои Лекции - 2015-2019 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал