Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев_С++_CLI_C#_Java_J#.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

Importjava.Awt.*;

Importjava.Util.*;

Import cjWarehouse.*

class TestWarehouse extends Frame implements Runnable, Observer

Warehouse leftWH, rightWH; // Ссылки на объекты

// компонента Warehouse

boolean leftRight; // Признак направления перемещения грузовиков

boolean llfe; // Признак жизни потока управления загрузкой

// и выгрузкой складов

Thread thr; // Ссылка на поток управления загрузкой

// и выгрузкой складов

public TestWarehouse ( )

i

this.setLayout(null); // Менеджер расстановки не используем

this.setSlze(400,300);

// Создать объект левого склада

leftWH= new Warehouse (true, true);

leftWH.setLocation(10, 30);

leftWH.setSize (30, 100);

leftWH.setForeground (Color.white);

leftWH.bW.addObserver (this); // Подписать обозреватель

leftWH.show ( );

this.add(leftWH);

// Создать объект правого склада

rightWH= new Warehouse (false, false);

rightWH.setLocation(350, 30);

rightWH.setSize(30, 100);

rightWH.setForeground(Color.whlte);

rlghtWH.show ( );

rightWH.bW.addObserver(this); // Подписать обозреватель

thls.add(rightWH);

// Создать и запустить поток управления загрузкой

// и выгрузкой складов

leftRight= true;

life= true;

thr= new Thread(thls,"thread");

thr.start ();

>

// Обработать событие evFromWarehouse

public void update (Observable obs, Object args)

{

// Выдать информацию о направлении перемещения и

// о складе, объект которого сгенерировал событие

WarehouseEventArgs arg= (WarehouseEventArgs) args;

if (arg.getLeftQ)

System.out.print("— leftWH ");

else

System.out.print("— rightWH ");

If (arg.getFull())

System.out.println(" full");

else

System.out.println(" empty");

// Изменить направление перемещения грузовиков

if(larg.getLeft() && larg.getFull())

leftRight= true;

if (arg.getLeft() && larg.getFull())

leftRight= false;

>

// Обеспечить загрузку груза в склады и

// выгрузку груза из складов

public void run ( )

{

while (life)

{

if (leftRight) {leftWH.Get (false ); rightWH.Put (true );>

else {leftWH.Put (true ); rightWH.Get (false );>

try

{

Thread.sleep (100);

>

catch (InterruptedException e) { }

>

>

// Завершить поток управления загрузкой

// и выгрузкой складов

vold Finish ()

<

life= false;

>

public static vold main ()

{

// Создать объект прикладного окна

TestWarehouse testWH= new TestWarehouse ();

testWH.show(); >

/>*

Result:

— leftWH empty

— rightWH empty

— leftWH empty

— rlghtWH empty

* / '

C#. Приложение csTestWarehouse применяет библиотеку csWarehouse.dll с

классом Warehouse и пространством имён csWarehouse. Перед компиляцией

приложения необходимо подключить эту библиотеку к приложению, вос-

пользовавшись меню Project/AddReference системы разработки Visual Studio.

Класс TestWarehouse прикладного окна содержит признак leftRight на-

правленности перемещения грузовиков, объекты leftWH и rightWH класса

Warehouse и поток thr, потоковая функция Go() которого осуществляет цик-

лическую загрузку в склады и выгрузку из складов груза, используя интер-

фейсные функции Get() и Put() объекта класса Warehouse и признак направ-

ленности leftRight.

Значение признака leftRight меняется обработчиком WarehouseHandler()

события evFromWarehouse, генерируемого объектами leftWH и rightWH. В

прикладном окне, представленным на рис. li.4.1.1, один из Складов будет за-

полняться грузом (желтая часть его прямоугольника увеличивается), а другой

склад разгружаться (желтая часть его прямоугольника уменьшается). Когда

склады опустошаться полностью, начнётся обратный процесс - заполненный

прямоугольник будет разгружаться, а другой загружаться, и т.д.

C# и Java(J#). Приложение cjTestWarehouse применяет ранее созданный па-

кет cjWarehouse с классом Warehouse.

Класс TestWarehouse прикладного окна содержит признак leftRight на-

правленности перемещения грузовиков, объекты leftWH и rightWH класса

Warehouse и специальный поток, потоковая функция run() которого осущест-

вляет циклическую загрузку в склады и выгрузку из складов груза, используя

интерфейсные функции Get() и Put() класса Warehouse и признак направлен-

ности leftRight.

Значение признака leftRight меняется обработчиком уведомления, гене-

рируемого объектами leftWH и rightWH. В прикладном окне, представлен-

ным на рис. 11.4.1.1, один из складов будет заполняться грузом (желтая часть

его прямоугольника увеличивается), а другой склад разгружаться (желтая

часть его прямоугольника уменьшается). Когда склады опустошаться полно-

стью, начнётся обратный процесс - заполненный прямоугольник будет раз-

гружаться, а другой загружаться, и т.д.

Рис. 11.4.1.1. Результатработы приложения csTestWarehouse.