клерка і всього магазину в цілому треба відокремити один від одного і визначити в різних класах, інакше сам принцип об'єктного моделювання буде вихолощений. Введемо класи Клерк (Clerk) і Магазин (Shop) - Перш ніж перераховувати їх поля даних, підкреслимо наступне обставина. У умови задачі дано максимальне значення обсягу групи - шість. У загальному випадку можна обмежити і мінімальне значення, яке назвемо мінімальним індексом групи (МІГ) - Сенс новою поняття полягає в те, що вільний клерк НЕ почне обслуговування клієнтів до тих пір, поки довжина первинної черги не стане дорівнює значенню МІГ. Якщо до моменту накопичення потрібної кількості клієнтів вільних клерків кілька, вибір клерка, початківця обслуговувати цю групу, здійснюється випадковим чином. Зрозуміло, що стандартне значення МІГ - одиниця. p> Ще одне питання - взаємні посилання між класами. У розглянутій системі об'єкти класів Clerk і Shop не є рівноправними, так як кожен з об'єктів класу Clerk входить до зону відповідальності єдиного об'єкта класу Shop, але не навпаки. Оскільки об'єкт Shop управляє системою в цілому, йому необхідний доступ до будь-якого об'єкта Clerk для передачі йому різних повідомлень (наприклад, вказівка ​​прийняти замовлення). Кожен із клерків відповідає тільки за себе, і йому посилання на Shop не потрібна, оскільки всім інформаційним обміном керує Shop. Оскільки перехресних посилань пет, тип покажчика при оголошенні поля класу Shop можна вказував, в явному вигляді (Clerk **), якщо, звичайно, клас Clerk описаний в header-файлі раніше, ніж клас Shop.
Перерахуємо поля даних класу Clerk.
Незмінні поля:
В· середній час знаходження клерка в дорозі (60 с);
В· максимальне відхилення від середнього для часу перебування клерка в дорозі (30 с);
В· середній час розрахунку одного клієнта (120 с);
В· максимальне відхилення від середнього для часу розрахунку одного клієнта (60 с);
В· унікальний номер клерка.
Змінні поля:
В· вторинна чергу. Моделюється масивом покажчиків на об'єкти класу Client. Якщо клерк вільний, черга порожня;
В· клієнт, з яким у цей момент проводиться розрахунок. Поле даних має сенс тільки при знаходженні клерка в стані Розрахунок;
В· поточне число клієнтів, у яких прийнятий замовлення і які очікують повернення клерка. Не те ж саме, що довжина вторинної черзі, оскільки в процесі розрахунку клієнтів довжина черги змінюється. Его поле даних характеризує саме розмір пакету замовлень. Дорівнює -1, якщо клерк вільний;
В· час, що залишився до прибуття клерка на склад. Значення поля даних активно тільки в стані руху на склад за товаром. У будь-якому іншому стані дорівнює -1;
В· час, що залишився до повернення клерка зі складу Значення поля даних активно тільки в стані руху зі складу з товаром. У будь-якому іншому стані дорівнює -1;
В· час, що залишився до закінчення розрахунку поточного клі...