Студопедия

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

КАТЕГОРИИ:

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






Этап 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.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал