Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка по информационным системам / ПЕРЕВОД_МЕТОДИЧКИ _полн.doc
Скачиваний:
114
Добавлен:
02.08.2013
Размер:
30.74 Mб
Скачать

10.2. Переходи

Переходи між станами (state transіtіon) являють собою зміну одного стану іншим. Перебування об'єкта, що моделюється, в першому стані може супроводжуватися виконанням деяких дій, а перехід у другий стан буде можливий після завершення цих дій, а також після задоволення деяких додаткових умов. У цьому випадку вважають, що перехід спрацьовує. До спрацьовування переходу об'єкт знаходиться в попередньому від нього стані, а після його спрацьовування об'єкт знаходиться в наступному від нього стані (цільовому стані ).

Перехід здійснюється при настанні деякої події: закінчення виконання діяльності (do actіvіty), одержанні об'єктом повідомлення або прийомом сигналу. На переході вказується ім'я події Крім того, на переході можуть вказуватися дії, вироблені об'єктом у відповідь на зовнішні події при переході з одного стану в інший. Спрацьовування переходу може залежати не тільки від настання деякої події, але і від виконання визначеної умови, називаною сторожовою умовою. Об'єкт перейде з одного стану в інше в тому випадку, якщо відбулася зазначена подія і сторожова умова прийняла значення "істина".

Перехід може бути спрямований у той же стан, з якого він виходить. У цьому випадку його називають переходом у себе.

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

<сигнатура події> [<сторожова умова >] <вираження дії>.

При цьому сигнатура події описує деяку подію з необхідними аргументами:

<ім'я події> (<список параметрів, розділених комами>).

Термін подія(event) вимагає окремого пояснення, оскільки є самостійним елементом мови UML. Формально, подія являє собою специфікацію деякого факту, що має місце в просторі і в часі. Про події говорять, що вони "відбуваються ", при цьому окремі події повинні бути упорядковані в часі. Після настання деякої події не можна вже повернутися до попередніх подій, якщо така можливість не передбачена явно в моделі.

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

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

Сторожова умова (guard condіtіon), якщо вона є, завжди записується в прямих дужках після події-тригера і являє собою деякий логічний вираз. З контексту діаграми станів повинна явно випливати семантика цього виразу. Уведення для переходу сторожової умови дозволяє явно специфікувати семантику його спрацьовування. Якщо сторожова умова приймає значення "істина", то відповідний перехід може спрацювати, у результаті чого об'єкт перейде в цільовий стан. Якщо ж сторожова умова приймає значення "хиба", то перехід не може спрацювати, і при відсутності інших переходів об'єкт не може перейти в цільовий стан по цьому переходу. Однак обчислення істинності сторожової умови відбувається тільки після виникнення асоційованого з ним події-тригера, що ініціює відповідний перехід.

У загальному випадку з одного стану може бути кілька переходів з тим самим подією-тригером. При цьому ніякі дві сторожові умови не повинні одночасно приймати значення "істина". Кожне зі сторожових умов необхідно обчислювати всякий раз при настанні відповідного події-тригера.

Дія (actіon expressіon) виконується тільки в тому випадку, коли перехід спрацьовує. Вона являє собою атомарну операцію (досить простої обчислення), виконувану відразу після спрацьовування відповідного переходу до початку яких би те ні було дій у цільовому стані. Атомарність дії означає, що вона не може бути перервана ніякою іншою дією доти, поки не закінчиться її виконання. Дана дія може впливати як на сам об'єкт, так і на його оточення, якщо це з очевидністю випливає з контексту моделі. Вираження дії записується після знака "/" у рядку тексту, приєднаного до відповідного переходу.

У загальному випадку, вираження дії може містити цілий список окремих дій, розділених символом ";". Обов'язкова вимога - усі дії зі списку повинні чітко розрізнятися між собою і випливати в порядку їхнього запису. На синтаксис запису виражень дії не накладається ніяких обмежень. Головне - їхній запис повинний бути зрозумілий розроблювачам моделі і програмістам. Тому найчастіше вираження записують на одній з мов програмування, що передбачається використовувати для реалізації моделі.

Прикладом може служити очевидна ситуація з виділенням графічних об'єктів на екрані монітора при однократному натисканні лівої кнопки миші. Мається на увазі обробка сигналів від користувача при виділенні тих або інших графічних примітивів (піктограм). У цьому випадку відповідний перехід може мати наступний рядок тексту:

натиснута і відпущена ліва кнопка миші (координати) [координати в області графічного об'єкта] / виділити об'єкт (колір )

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