єнта. Значення поля даних активно тільки в стані розрахунку клієнтів. У будь-якому іншому стані рано -1;
В· час, що залишився до завершення пошуку товарів. Значення поля даних активно тільки в стані пошуку товарів при знаходженні клерка на складі. У будь-якому іншому стані дорівнює -1;
В· час, що минув з моменту прийняття замовлення Поле даних необхідно для збору статистики про тривалості циклу клерка - від прийняття замовлення до розрахунку останнього клієнта. Якщо клерк вільний, значення дорівнює -1.
Поля даних класу Shop. Незмінні поля:
В· кількість клерків (3). Для зручності реалізації зроблено глобальної змінної;
В· максимальний обсяг одного замовлення (6). Для зручності реалізації зроблено глобальної змінної;
В· мінімальний індекс групи (1);
В· середня інтенсивність вхідного потоку (0,5 заявок на хвилину);
В· масив покажчиків на об'єкти класу Clerk.
Змінні поля:
В· первинна чергу клієнтів. Через відсутність обмежень на максимальну довжину моделюється зв'язковим списком;
В· час, що залишився до прибуття наступної заявки з вхідного потоку;
В· поточна довжина первинної черги (обчислюється поле).
Відносини дружності між класами побудовані таким чином: друзями класу Client є Clerk і Shop, іншому класу Clerk - клас Shop.
2.3 Події та методи
Кожному з п'яти можливих станів клерка відповідає подія, в результаті якого він покидає цей стан і переходить в інше. Кожному події, у свою чергу, зіставлений окремий метод. Перерахуємо ці події:
1. Прибуття клерка на склад.
2. Завершення пошуку замовленого товару.
3. Прибуття клерка з товаром до очікують нею клієнтам.
4. Завершення розрахунків з черговим клієнтом.
5. Прийняття замовлення у клієнтів з первинної черги.
Детальніше зупинимося на реалізації останнього методу. Якщо первинна черга не порожня і її довжина досягла значення МІГ, об'єкт Shop намагається доручити якомога більше клієнтів одному з вільних клерків. Після того як клерк обраний, йому надсилається повідомлення, відповідне методом 5, з двома параметрами: покажчиком на первинну чергу, щоб клерк міг скопіювати частину її клієнтів у вторинну, і кількістю клієнтів, замовлення у яких магазин наказує прийняти клерку. Повертає ж він об'єкту Shop покажчик на клієнта первинної черги, який тепер стає в цій черзі першим, тобто на нову голову зв'язного списку. Первинну чергу Shop просуває сам. Всі ці дії виконує метод-диспетчер run ().
Методи класу Shop:
В· прибуття нового клієнта з зовнішнього потоку і постановка нею в первинну чергу;
В· вибір клерка, який повинен прийняти замовлення. Метод вибирає випадковим чином одного клерка з числа вільних в даний момент.
3. Реалізація моделі
3.1 Програмна реалізація
Імітаційне моделюв...