1. Курсовая работа по объектно-ориентированному
Этап
программированию
Разработка класса обычного объекта шара
class Ball
{
// Класс обычного объектa
int num;
// Номер обычного объекта
Thread thread; // Ссылка на объект потока
bool run;
// Признак выполнения потока
bool life;
// Признак жизни потока
public Ball (int Num) { . . .} // Конструктор
~Ball ( ) {life= false;}
// Деструктор
public void Start ( ) { . . .}
// Стартовать
public void Suspend ( ) { . . .} // Приостановить
public void Resume ( ) { . . .} // Возобновить
void BallFunc ( ) { . . .}
// Выполнить поток
}
1а
2. Курсовая работа по объектно-ориентированному
программированию
Этап 1
Разработка класса обычного объекта шара
public void Start ( )
// Стартовать поток
{
if (!run)
// Если поток не выполняется, то
{
run= true;
// пусть выполняется и
life= true;
// живѐт
// Создать объект рабочего потока
thread= new Thread (new ThreadStart (BallFunc));
thread.Start ( ); // Стартовать поток
}
}
б
3. Курсовая работа по объектно-ориентированному
программированию
Этап 1в
Разработка класса обычного объекта шара
void BallFunc ( ) // Выполнить поток
{
int n= 0;
// Номер цикла потоковой функции
while (life) // Выполнить, пока поток жив
{
// Выдать на консоль номер объекта и цикла
Console.Write ("Объект {0}", num.ToString ( ));
Console.WriteLine (" n= {0}", n.ToString ( ));
n++;
// Увеличить номер цикла
Thread.Sleep (10); // Поспим
}
// Выдать на консоль номер объекта и о завершении потока
Console.Write ("Объект {0}", num.ToString ( ));
Console.WriteLine (" завершился");
}
4. Курсовая работа по объектно-ориентированному
Этап 1
программированию
г
Разработка класса обычного объекта шара
class BallsCs1
{
static void Main (string[] args)
{
Ball ball1= new Ball (1); // Создать первый обычный объект
Ball ball2= new Ball (2); // Создать второй обычный объект
Console.WriteLine ("Объекты функционируют");
Thread.Sleep (20);
// Объекты функционируют 20 мс
ball1.Suspend ( );
// Приостановить первый обычный объект
ball2.Suspend ( );
// Приостановить второй обычный й объект
Console.WriteLine ("Объекты приостановлены и возобновлены");
ball1.Resume ( );
// Возобновить выполнение первого объекта
ball2.Resume ( );
// Возобновить выполнение второго объекта
Thread.Sleep (20);
// Объекты функционируют 20 мс
ball1.Suspend ( );
// Приостановить первый обычный объект
ball2.Suspend ( );
// Приостановить второй обычный объект
}
}
5. Курсовая работа по объектно-ориентированному
Этап 1
программированию
Разработка класса обычного объекта шара
/*
Результат:
Объекты функционируют
Объект 1 n= 0
Объект 2 n= 0
Объект 1 n= 1
Объект 2 n= 1
Объекты приостановлены и возобновлены
Объект 1 n= 2
Объект 2 n= 2
Объект 1 n= 3
Объект 2 n= 3
*/
д
6. Курсовая работа по объектно-ориентированному
Этап 2
программированию
Разработка класса Balls
class Balls
// Класс объектов
{
Ball [] pBall;
public Balls ( )
{
pBall= new Ball [2];
for (int i= 0 ; i < 2; i++) pBall[i]= new Ball (i);
Start ( );
}
public void Start ( )
// Стартовать
{
for (int i=0 ; i < 2; i++) pBall[i]. Start ( );
}
public void Suspend ( ) {…} // Возобновить
public void Resume ( ) {…}
}
// Приостановить
а
7. Курсовая работа по объектно-ориентированному
Этап 2
программированию
б
Разработка класса Balls
class BallsCs2
{
}
static void Main (string[] args)
{
Balls pBalls= new Balls ( ); // Создать объект класса Balls
Thread.Sleep (20);
// Объект функционирует 20 мс
pBalls.Suspend ( );
// Приостановить функционирование
Console.WriteLine("Объекты приостановлены и возобновлены");
pBalls.Resume ( );
// Возобновить функционирование
Thread.Sleep (20);
// Объект функционирует 20 мс
pBalls.Suspend ( );
// Приостановить функционирование
}
/* Результат:
Объект 1 n= 0
Объект 2 n= 0
. . .
Объекты приостановлены и возобновлены
. . .
Объект 2 n= 3
8. Курсовая работа по объектно-ориентированному
Этап 3
программированию
а
Разработка события ev
delegate void delEv ( );
// Объявление делегата
class Ball
{
public event delEv ev; // Объявление
...
// события ev
void BallFunc ( ) // Выполнить поток
{
int n= 0;
while (life)
{
n++;
if (ev != null)
// Если событие активизировано, то
{
ev ( );
// свершить событие
}
Thread.Sleep (10);
}
}
}
9. Курсовая работа по объектно-ориентированному
Этап 3
программированию
Разработка события ev
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 ( );
}
...
};
в
10. Курсовая работа по объектно-ориентированному
Этап 4
программированию
а
Разработка прикладного окна
class Balls : Form
// Класс прикладного окна
{
Ball [] pBall; // Ссылка на массив
public Balls ( )
{
pBall= new Ball [2];
// Создать массив обычных объектов
for (int i= 0; i < 2; i++)
{
pBall[i]= new Ball (…);
pBall[i].ev+= new delEv(HandlerEv ); // Подписаться
}
Start ( );
}
...
protected override void OnPaint (PaintEventArgs arg)
{
base.OnBase (arg);
for (int i= 0; i < 2; i++)
arg .Graphics.DrawEllipse (…);}
void HandlerEv ( ) { Invalidate ( );} // Обработать события ev от объектов
}