Студопедия

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

КАТЕГОРИИ:

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






Этап 7. Разработка специального объекта




 

В последнем этапе разработаем класс SpecialBall специального объекта, добавим его объект в класс, содержащий массив обычных объектов. В соответствии с заданием этот специальный объект должен быть представлен в виде желтой окружности в левом верхнем углу прикладного окна, и эта оеружность вспыхивает (увеличивается ширина круга) при отталкивании шаров от стенок прикладного окна. Создадим специальный объект в теле конструктора класса Balls, подписав событие или уведомление каждого обычного объекта с обработчиком этого специального объекта. Добавим в дочернее окно управляющий элемент-список для выбора одного из трёх цветов шаров. Диаграмма классов и реализация последнего этапа представлены на рис. 5.3.7.1 и в примерах 5.3.7.1 и 5.3.7.2.

Рис. 5.3.7.1. Диаграмма классов Balls–приложения седьмого этапа

 

 

Пример 5.3.7.1. Реализация седьмого этапа разработки Balls–приложения на языке C#.

////////////////////

// C# File BallsCs7.cs

// Файл BallsCs7.cs полностью включает файл BallsCs6.cs, дополнив его новым

// классом SpecialBall специального объекта. Модифицирован класс Ball – в нём

// объявлено новое событие evSpecial. В классе Balls создан специальный объект,

// обработчик HandlerEvSpecial которого подписан на события всех обычных

// объектов. Изменения файла BallsCs6.cs выделены жирным шрифтом

// Изменения файла BallsCs6.cs выделены жирным шрифтом

. . .

class Ball // Класс обычного объекта

{

public event delEv ev; // Объявление события

public event delEv evSpecial;//Объявление специального события

. . .

 

void BallFunc ( ) // Выполнить поток

{

while (life) // Пока существует, выполнить

{

x += dx; y += dy;

if (x>w || x<0)

{

dx= -dx;

if (evSpecial != null)

{

evSpecial ( );// Генерировать событие

}

}

if (y>h || y<0)

{

dy= -dy;

if (evSpecial != null)

{

evSpecial ( );// Генерировать событие

}

}

if (ev != null)

{

ev ( ); // Генерировать событие

}

Thread.Sleep (100);

}

}

}

//-------------------------------------

class SpecialBall // Класс специального объекта

{

public int x, y; // Координаты шара

public int d=1; // Ширина пера

Thread thread; // Поток

bool run; // Признак выполнения потока

 

public SpecialBall (int X, int Y) // Конструктор

{

run= false;

x= X; y= Y;

}

 

void Start ( ) // Стартовать

{

if (!run) // Если поток не выполнялся, то

{

run= true; // пусть выполняется и

d= 5; // утолщить кольцо

thread= new Thread (new ThreadStart (BallFunc));

thread.Start ( );// Стартовать поток



}

}

 

 

public void HandlerEvSpecial ( ) // Обработать событие

{


.

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