![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Этап 4. Разработка прикладного окнаСодержание книги
Поиск на нашем сайте
Наступил этап разработки, когда появится прикладное окно приложения с перемещающимися шарами. Наследовав класс Form или Frame, класс Balls существенно расширит свою функциональность. Теперь можно создать прикладное окно (основную форму) и дочернее окно (дочернюю форму). Но дочернее окно будет создано потом в классе User, порождённым из класса Balls. Диаграмма классов и реализация этого этапа представлены на рис. 5.3.4.1 и в примерах 5.3.4.1 и 5.3.4.2.
Рис. 5.3.4.1. Диаграмма классов Balls–приложения четвёртого этапа
Пример 5.3.4.1. Реализация четвёртого этапа разработки Balls–приложения на языке C#. //////////////////// // C# File Balls4Cs.cs // Файл BallsCc4.cs полностью включает файл BallsCs3.cs, дополнив его // данными класса Ball икласса Balls, необходимыми для рисования шаров. // В результате наследования класса Balls из базового класса Form появилось // прикладное окно, свойства которого установлены в конструкторе класса // Balls. Переопределена функция OnPaint перерисовки. Функция HandlerEv, // реагируя на событие ev из потоков, вызывает перерисовку шаров. // Изменения файла BallsCs3.cs выделены жирным шрифтом // using System; using System.Drawing; using System.Windows.Forms; using System.Threading;
delegate void delEv (); class Ball // Класс обычного объекта { public event delEv ev; public int x, y; public int w, h; public int dx, dy; ...
public Ball (int Num, int X, int Y, int Dx, int Dy) // Конструктор { num= Num; life= false; run= false; w= 100; h= 100; x= X; y= Y; dx= Dx; dy= Dy; Start(); } //--------------- ...
void BallFunc () // Выполнить поток { int n= 0; while ((life)) //&&(n<=2)) { Console.Write ("Объект {0}", num.ToString ()); Console.WriteLine (" n= {0}", n.ToString ()); n++; x += dx; y += dy; if (x>w || x<0) dx= -dx; if (y>h || y<0) dy= -dy; if (ev!= null) { Console.WriteLine (" Event"); ev (); } Thread.Sleep (100); } Console.Write ("Объект {0}", num.ToString ()); Console.WriteLine (" завершён"); } } //------------------------------------- class Balls: Form { Ball [] pBall; Color col; public Balls () { col= System.Drawing.Color.FromArgb (0, 0, 255); pBall= new Ball [2]; for (int i= 0; i < 2; i++) { pBall[i]=new Ball (i, i*3+10, 1*3+15, i*3+5, i*3+5); pBall[i].ev+= new delEv(HandlerEv); } Text= "Balls"; Start (); } ...
Protected override void OnPaint (PaintEventArgs arg) { base.OnPaint (arg); for (int i= 0; i < 2; i++) { Arg.Graphics.DrawEllipse (new Pen (col), pBall[i].x, pBall[i].y, 20, 20); pBall[i].w= Width; pBall[i].h= Height; } } void HandlerEv () { Console.WriteLine (" HandlerEv"); Invalidate (); } //------------------------- static void Main() { Application.Run(new Balls ()); } } /* Результат: Появилось прикладное окно с двумя нарисованными шарами.
Объект 0 n= 0 Event HandlerEv Объект 1 n= 0 Event HandlerEv Объект 0 n= 1 Event HandlerEv Объект 1 n= 1 Event HandlerEv Объект 0 завершился Объект 1 завершился */ Рис. 5.3.4.1. Прикладное окно с консолью Balls–приложения 4 этапа
Пример 5.3.4.2. Реализация четвёртого этапа разработки Balls–приложения на языке Java. package BallsCj4; //////////////////// //C# File BallsCj4 import java.util.*; import java.awt.*;
class Obs { public int num, n;
public Obs (int num, int n)
{this.num= num; this.n= n;}
int getNumber(){return num;}
int getN(){return n;} } class Ball extends Observable implements Runnable // Класс обычного объекта { int num; Thread thread; boolean run; boolean waiting= false; boolean life; public int x, y; public int w, h; public int dx, dy;
public Ball (int Num, int X, int Y, int Dx, int Dy)// Конструктор { num= Num; life= false; run= false; w= 100; h= 100; x= X; y= Y; dx= Dx; dy= Dy; Start (); }
public void Start () // Стартовать { if (!run) { run= true; life= true; thread= new Thread (this); thread.start (); } } //--------------- synchronized public void Suspend () // Приостановить { if (run) { run= false; waiting=true; } } //--------------- synchronized public void Resume () // Возобновить { if (!run) { run= true; waiting=false; notify(); } } //--------------- public void run () // Выполнить поток { int n= 0; while ((life)) //&&(n<=2)) { System.out.print("object "+num); System.out.println(" n= "+n); n++; x += dx; y += dy; if (x>w || x<0) dx= -dx; if (y>h || y<0) dy= -dy;
// Уведомить setChanged(); notifyObservers(new Obs(num, n)); try { Thread.sleep (10); synchronized(this) { if(waiting) wait(); } } catch(InterruptedException iE){} } System.out.print("object "+num); System.out.println(" finished "); } }
//------------------------------------- class Balls extends Frame implements Observer // Класс объектов { Ball [] pBall; Color col; public Balls () { col= Color.red; pBall= new Ball [2]; for (int i= 0; i < 2; i++) { pBall[i]=new Ball (i, i*3+10, 1*3+15, i*3+5, i*3+5);
pBall[i].addObserver(this); } this.setTitle("Balls"); this.setSize(400, 300); this.show(); Start (); } //--------------- public void Start () // Стартовать { for(int i=0; i < 2; i++) { pBall[i]. Start (); } } //--------------- public void Suspend () // Возобновить { for (int i=0; i < 2; i++) pBall[i].Suspend (); } //--------------- public void Resume () // Приостановить { for (int i= 0; i < 2; i++) pBall[i].Resume (); }
public void update (Observable r, Object ob) // Обработчик события ev { Obs obs= (Obs) ob; System.out.print("object num= "+ obs.num); System.out.println(" n= "+ obs.n); repaint(); }
|
|||||
Последнее изменение этой страницы: 2016-08-01; просмотров: 145; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.131.98.117 (0.009 с.) |