Page 153 - 4190
P. 153
Операція із зоною дії на увесь клас показується підкресленням
імені і рядка вираження типу. За замовчуванням під областю операції
розуміється об'єкт класу. У цьому випадку ім'я і рядок вираження ти-
пу операції не підкреслюються.
Операція, яка не може змінювати стан системи і, відповідно, не
має ніякого побічного ефекту, позначається рядком-властивістю
"{запит}" ("{query}"). Інакше операція може змінювати стан системи,
хоча немає ніяких гарантій, що вона це робитиме.
Для підвищення продуктивності системи одні операції можуть
виконуватися паралельно або одночасно, а інші - тільки послідовно.
У цьому випадку для вказівки паралельності виконання операції ви-
користовується рядок-властивість виду "{concurrency = ім'я}"де ім'я
може приймати одне з таких значень: послідовна (sequential), парале-
льна (concurrent), така, що охороняється (guarded). При цьому дотри-
муються такої семантики для цих значень:
послідовна (sequential) - для цієї операції необхідно забезпечи-
ти її єдине виконання в системі, одночасне виконання інших операцій
може привести до помилок або порушень цілісності об'єктів класу.
паралельна (concurrent) - ця операція в силу своїх особливостей
може виконуватися паралельно з іншими операціями в системі, при
цьому паралельність повинна підтримуватися на рівні реалізації мо-
делі.
що охороняється (guarded) - усі звернення до цієї операції ма-
ють бути строго впорядковані в часі з метою збереження цілісності
об'єктів цього класу, при цьому можуть бути вжиті додаткові заходи з
контролю виняткових ситуацій на етапі її виконання.
З метою скорочення позначень допускається використання одно-
го імені як рядка-властивості для вказівки відповідного значення па-
ралельності. Відсутність даної рядки-властивості означає, що семан-
тика паралельності для операції не визначена. Тому слід припустити
гірший з точки зору продуктивності випадок, коли ця операція вима-
гає послідовного виконання.
Поява сигнатури операції на самому верхньому рівні оголошує
цю операцію на увесь клас, при цьому ця операція наслідує усіма на-
щадками цього класу. Якщо в деякому класі операція не виконується
(тобто деякий метод не застосовується), то така операція може бути
помічена як абстрактна "{abstract}". Інший спосіб показати абстракт-
ний характер операції - записати її сигнатуру курсивом. Підпорядко-
вана поява запису цієї операції без властивості {абстрактна} вказує на
153