за допомогою ГВЧ, а сама подія ініціюється приймаючою стороною - буксиром. p align="justify"> Прибуття ж іменованої заявки буксиром НЕ розігрується - вона сама дає знати про прибуття в порт, посилаючи буксиру відповідне повідомлення.
Вказані відмінності в поведінці говорять про те, що неіменовані та іменовані заявки одним класом представляти не можна, так як ці відмінності являються суттєвими. Для відображення поведінки іменованої заявки нам понад-бятся і додаткові поля даних, ідодаткові методи. Але й описувати їх абсолютно різними класами теж недобре. Справа в тому, що після причалювання як ті, так і інші заявки будуть знаходитися в загальній черзі на навантаження. Але якщо в черзі будуть заявки різних класів, який же тоді клас підставляти в шаблон в якості значення параметра, яким саме й є ім'я класу? Виходить, що і один клас, і два різних класи - незадовільні рішення. p align="justify"> Відповідь приходить сам собою - звичайно ж, слід застосувати спадкування. Уважне вивчення того, що відбувається в системі і що потрібно відобразити в програмі, дозволяє зробити висновок, що всі поля даних і методи неіменованого заявок покриваються іменованими, останні ж розширюються деяким безліччю додаткових полів і методів, наприклад run (), а деякі ме-тоди перевизначаються (наприклад, count ()). Тому базовим класом буде клас неіменованого заявок, а похідним від нього розширений клас іменованих заявок. Проблема з В«різнотипністю елементівВ» списку теж вирішується найкращим чином. Нагадаємо, що в якості даних в елементі списку виступає не сам об'єкт, а покажчик на нього, тому в якості параметра шаблона можна задати ім'я базового класу - неіменованого заявок. p align="justify"> За принципом підстановки покажчик на об'єкт похідного класу є і покажчиком на об'єкт базового класу, тому покажчик на іменовану заявку - об'єкт похідного класу - можна сміливо заносити в елемент списку.
Конкретизуємо міркування, перерахувавши поля базового класу Tanker і похідного класу Tanker4.
3.2.1 Клас Tanker
Незмінні поля даних:
В· унікальний ідентифікатор об'єкта; можна призначити рівним поточному значенню лічильника прибуттів;
В· тип танкера (1, 2 або 3);
В· середнє значення часу обслуговування на вантаженні;
В· максимальне відхилення від середнього значення.
Змінні поля даних:
В· Час, проведений в системі на поточний момент, починаючи від постановки в чергу до буксира на причалювання;
В· код поточного стану (1 - у черзі на причалювання, штормить, 2 - у черзі на причалювання, шторму немає, 3 -...