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