Студопедия

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

КАТЕГОРИИ:

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






Этап 2. Разработка класса Balls




 

На этом этапе реализуем класс Balls, содержащий массив обычных объектов класса Ball и осуществляющий их одновременный запуск, а также приостановку и возобновление функционирования. Дополнительно к указателю pBall на массив обычных объектов, класс Balls содержит функции, выполняющие запуск (Start), приостановку выполнения (Suspend) и возобновление выполнения (Resume) всей совокупности обычных объектов.

Диаграмма классов Balls–приложения второго этапа изображена на рис. 5.3.2.1.

 

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

 

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

Реализация второго этапа разработки Balls–приложенияна языке Java дана в примере 5.3.2.2.

 

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

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

// C# File BallsCs2.cs

// Файл BallsCs2.cs полностью включает файл BallsCs1.cs, дополнив его

// нижеследующим описанием класса Balls и изменённой функцией Main

. . .

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

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 ( ) // Возобновить

{

for (int i=0; i < 2; i++)

pBall[i].Suspend ( );

}

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

public void Resume ( ) // Приостановить

{

for (int i= 0; i < 2; i++)

pBall[i].Resume ( );

}

};

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

class BallsCs2

{

static void Main (string[] args)

{

Balls pBalls= new Balls ( ); // Создать объект класса Balls

Console.WriteLine ("Объекты функционируют");

Thread.Sleep (20); // Объект функционирует 20 мс

pBalls.Suspend ( ); // Приостановить функционирование

Console.WriteLine("Объекты приостановлены и возобновлены");

pBalls.Resume ( ); // Возобновить функционирование

Thread.Sleep (20); // Объект функционирует 20 мс

pBalls.Suspend ( ); // Приостановить функционирование

}

}

/*

Результат:

Потоковые объекты функционируют

Объект 1 n= 0

Объект 2 n= 0

Объект 1 n= 1

Объект 2 n= 1

Объекты приостановлены и возобновлены

Объект 2 n= 2

Объект 1 n= 2

Объект 1 n= 3

Объект 2 n= 3

*/

 

Пример 5.3.2.2. Реализация второго этапа разработки Balls–приложения на языке Java.

package BallsCj2;

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

//C# File BallsCj2



 

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

{

int num;

Thread thread;

boolean run;

boolean waiting= false;

boolean life;

public Ball (int Num) // Конструктор

{

num= Num; life= false; run= false;

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)

{

System.out.print("object "+num);

System.out.println(" n= "+n);

n++;

try

{

Thread.sleep (10);

synchronized(this)

{

if(waiting)

wait();

}

}

catch(InterruptedException iE){}

}

System.out.print("object "+num);

System.out.println(" finished ");

}

}

 

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

class Balls // Класс объектов

{

Ball [] pBall;


.

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