Описание разрабатываемой программы с точки зрения пользователя
Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Описание разрабатываемой программы с точки зрения пользователя





 

Между двумя складами (warehouses) грузовики (lorries) перевозят грузы (loads). Перевозкой управляет центр (center), увеличивая или уменьшая количество грузовиков.

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

В прикладном окне программы LorryAndWarehouse представлены два склада в виде прямоугольников, динамически отображающих изменение груза, хранящегося на каждом из них. Грузовики же изображены в виде окружностей, движущихся от склада к складу. Каждому грузовику приписан его уникальный номер

В прикладном окне находятся кнопка Добавить добавления грузовика и кнопка Удалить удаления грузовика. Перед нажатием на кнопку Удалить необходимо выбрать номер удаляемого грузовика в интерфейсном элементе списка. Кнопки Стоп и Старт позволяют приостанавливать или возобновлять движение грузовиков.

При запуске программы показывается прикладное окно с управляющими элементами и двумя складами – один склад пустой, а другой полный груза.

После нажатия на кнопку Добавить появляется движущийся грузовик, которому приписан номер 1. При добавлении очередного грузовика его номер на единицу превысит номер предыдущего. Грузовики перевозят грузы из полного левого склада к пустому правому. Когда полный склад опустеет, а другой склад заполнится, движение грузовиков будет обратным. Так что сначала наблюдается перевозка груза с левого склада на правый склад, а потом с правого на левый, и наоборот.

Между складами находится зона контроля, изображённая в виде прямоугольника, вытянутого вертикально. Каждый из грузовиков, войдя в эту зону, задерживается на случайный промежуток времени для проверки его исправности и ремонта.



Диаграмма вариантов использования программы имеет вид

 

 

Описание разрабатываемой программы с точки зрения программиста

 

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

 

Проанализируем нашу программу с точки зрения составляющих её объектов и назовём некоторые из них для облегчения дальнейшей ссылки к ним.

Основными объектами программы являются объект прикладного окна, объекты управляющих интерфейсных элементов, объект зоны контроля (ресурс), а также объекты компонентов – грузовики и склады.

Объект model прикладного окна LorryAndWarehouse владеет объектами двух складов, объектом region зоны контроля и объектом контейнера lorryCont, коллекция которого включает объекты-грузовики. Объект model должен перерисовывать изображения складов и перемещающихся грузовиков, для чего можно воспользоваться специальным потоком или таймером. Предпочтём поток thread.

Объект-грузовик (lorry) является объектом компонента Lorry, содержит собственный поток, обеспечивающий его перемещение от склада к складу и приостановку в зоне контроля. В зоне контроля может находиться только один грузовик. Поскольку разные объекты компонента Lorry не могут одновременно войти в зону контроля, здесь необходима синхронизация потоков, обеспечивающих функционирование грузовиков.

Объект-склад (leftWH или rightWH) является объектом компонента Warehouse, также содержит собственный поток, динамически показывающий изменение груза на складе путём закрашивания части прямоугольника, которым представлен склад в окне LorryAndWarehouse. Поскольку склад одновременно может понадобиться нескольким грузовикам, выгрузка и загрузка грузовиков синхронизирована, допуская обслуживание только одного грузовика. О переполнении склада или опустошении склада фиксируется специальной булевской переменной full, которая меняет поведение грузовика, заставляя его обеспечить перевозку в надлежащем направлении.

 

События, потоки и ресурсы

 

Программа реализует модель, состоящую из множества взаимосвязанных объектов. Функционирование программы обеспечивают множество потоков. Основной поток создаст объект model прикладного окна. При создании объектов компонентов запускаются их потоки - модель начинает функционировать. Для простоты грузовик перевозит груз в одном направлении, пока он имеет возможность загрузиться грузом или выгрузиться в склады. Если какой-либо склад будет переполнен или опустошён, то грузовик меняет направление перевозки груза.

Операции объектов компонента Lorry, связанные со складами и с объектом зоны контроля должны быть синхронизированы.

Поскольку загрузка груза из склада и выгрузка из грузовика определяются средствами склада, то синхронизация при этом параллельных потоков объектов грузовиков должна осуществляться складом. Для этого можно воспользоваться критическими секциями, применёнными в теле функций Get() и Put() компонента Warehouse склада, которые соответственно осуществляют загрузку и выгрузку грузовиков. Для синхронизации потоков применим монитор.

Что же касается захода грузовиков в зону контроля, то время пребывания в этой зоне на обследование и ремонт определяется только грузовиком. Поэтому объект region зоны контроля рассматривается как разделяемый ресурс. Каждый объект компонента Lorry должен захватывать, использовать в течение случайного промежутка времени и освобождать этот ресурс. При удалении объект компонента Lorry обязан освободить разделяемый ресурс, если он его использует, чтобы другие объекты компонента Lorry могли им воспользоваться. Для синхронизации доступа объектов компонента Lorry к разделяемому ресурсу можно воспользоваться семафором (mutex).

 

После такого предварительного анализа задачи можно приступить к поэтапной разработке программы.

 

 









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2018 zdamsam.ru Размещенные материалы защищены законодательством РФ.