русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Формат запису повідомлень


Дата додавання: 2014-10-07; переглядів: 928.


Кожне повідомлення може бути позначено рядком тексту, що має наступний формат:

< Попередні повідомлення> < [Сторожова умова] >

<Вираження послідовності>

<Повертається значение, що,- ім'я повідомлення> <Список аргументів>

Розглянемо кожний із цих елементів більш докладно.

  • Попередні повідомлення - є розділені комами номера повідомлень, записані перед похилою рискою:

<Номер повідомлення ','>< Номер повідомлення,'> '/'

Якщо список номерів повідомлень порожній, то весь запис, включаючи похилу риску (слэш), опускається. Кожний номер повідомлення може бути вираженням послідовності без рекурсивних символів. Вираження повинне визначати номер іншого повідомлення в цій же послідовності.

Помітимо, що самі номери послідовності повідомлень із однаковим префіксом утворять відношення впорядкованості й, відповідно, неявно вказують на попередні повідомлення. Таким попереднім повідомленням буде повідомлення з номером, сама права цифра якого на одиницю менше, ніж у розглянутого повідомлення. Наприклад, повідомлення з номером "3.1.4.6" має в якості попереднє повідомлення з номером "3.1.4.5".

Зміст вказівки попередніх повідомлень полягає в тім, що дане повідомлення не може бути передано, поки не будуть передані своїм адресатам всі повідомлення, номери яких записані в даному списку.

Приклад запису попередніх повідомлень:

A3, В4/ З5: помилка запису (сектор).

  • Сторожова умова є звичайним булевским вираженням і призначена для синхронізації окремих ниток потоку керування. Записується у квадратних дужках і може бути опущено, якщо воно відсутній у даного повідомлення. Семантика сторожової умови забезпечує передачу повідомлення тільки в тому випадку, якщо ця умова приймає значення "істина".

Приклад запису сторожових умов без номерів попередніх повідомлень:

  • [(х>=0)&(х<=255)] 1.2: відобразити_на_екрані_колір(х)
  • [кількість цифр номера = 7] 3.1: набрати_телефонний_номер()
  • Вираження послідовності - є розділений крапками список окремих термов послідовностей, після якого записується двокрапка:

<Терм послідовності'.'><Терм послідовності'.'>':'

Кожний з термов представляє окремий рівень процедурної вкладеності у формі закінченої ітерації. Найбільш верхній рівень відповідає самому лівому терму послідовності. Якщо всі потоки керування паралельні, то вкладеність відсутня. Кожний з термов послідовності має наступний синтаксис:

[Ціле число| Ім'я] [Символ рекуррентности].

  • Ціле число вказує на порядковий номер повідомлення в процедурній послідовності верхнього рівня. Повідомлення, номера яких відрізняються на одиницю, випливають підряд один за іншим.

Наприклад, повідомлення з номером "3.1.4" треба за повідомленням з номером "3.1.3" у процедурній послідовності "3.1".

  • Ім'я використовується для специфікації паралельних ниток керування. Повідомлення, які відрізняються тільки ім'ям, є паралельними на цьому рівні вкладеності. На одному рівні вкладеності всі нитки керування еквівалентні в змісті пріоритету передачі повідомлень. З

Наприклад, повідомлення з вираженнями "Зла" і "3.16" є паралельними в процедурній послідовності "3.1".

  • Символ рекуррентності використовується для вказівки умовного або ітеративного виконання. Семантика рекуррентності представляє нуль або більше повідомлень, які повинні бути виконані залежно від записаної умови. Можливі два випадки запису рекуррентності:
  1. '*' '[' Пропозиція-Ітерація ']' для запису ітеративного виконання відповідного вираження.

Ітерація представляє послідовність повідомлень одного рівня вкладеності. Пропозиція-Ітерація може бути опущено, якщо умови ітерації ніяк не специфікується. Найбільш часта пропозиція-ітерація записується на деякому псевдокоді або мові програмування. У мові UML формат запису цієї пропозиції не визначений. Наприклад, "*[/:=/..л]", що означає послідовну передачу повідомлення з параметром /, що змінюється від 1 до деякого цілого числа п із кроком 1.

  1. '[' Пропозиція-Умова В для запису розгалуження. Ця умова представляє таке повідомлення, передача якого по даній галузі можлива тільки при істинності цієї умови. Найчастіше пропозиція-умову записують на деякому псевдокоді або мові програмування, оскільки в мові UML формат запису цієї пропозиції не визначений. Наприклад, [х>в] означає, що повідомлення по деякій галузі буде передано тільки в тому випадку, якщо значення х більше значення в.

Помітимо, що умова записується так само, як і ітерація, але без зірочки. Це можна розуміти як деяку однокрокову ітерацію. При цьому передбачається, що ітерація виконується послідовно. Якщо необхідно відзначити можливість паралельного виконання ітерації, у мові UML використовується символ "*||". Ітерація не поширюється на вкладені рівні даного потоку або нитки. Кожний рівень повинен мати своє власне подання для ітеративного повторення процедурної послідовності.

  • Значення, що повертається, представляється у формі списку імен значень, що повертаються по закінченні комунікації або взаємодії в повній ітерації даної процедурної послідовності. Ці ідентифікатори можуть виступати як аргументи в наступних повідомленнях. Якщо повідомлення не повертає ніякого значення, то ні значення, ні оператор присвоювання на діаграмі кооперації не вказуються.

Наприклад, повідомлення

1.2.3: р:= знайти_документ (специфікація_документа)

означає передачу вкладеного повідомлення із запитом пошуку в базі даних потрібного документа по його специфікації, причому джерелу повідомлення повинен бути повернутий знайдений документ.

  • Ім'я повідомлення, записане в сигнатурі після значення, що повертається, означає ім'я події, що ініціюється об'єктом-одержувачем повідомлення після його прийому. Найбільше часто такою подією є виклик операції об'єкта. Це може бути реалізовано різними способами, один із яких - виклик операції. Тоді відповідна операція повинна бути визначена в тім класі, якому належить об'єкт-одержувач.
  • Список аргументів являє собою розділені комами й ув'язнені в круглі дужки дійсні параметри тої операції, виклик якої ініціюється даним повідомленням. Список аргументів може бути порожнім, однак дужки однаково записуються. Для запису аргументів також може бути використані деякий псевдокод або мова програмування.

Так, у наведеному вище прикладі повідомлення

1.2.3: р:= знайти_документ (специфікація_документа)

Аргумент знайти_документ є ім'ям повідомлення, а специфіка-ция_документа - списком аргументів, що складають із єдиного дійсного параметра операції. При цьому ім'я повідомлення означає звертання до операції знайти_ документ, що повинна бути визначена у відповідному класі об'єкта-одержувача.


<== попередня лекція | наступна лекція ==>
Повідомлення | Діаграма кооперації


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн