![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Этап 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 () // Обработать событие {
|