Об’єктно-орієнтоване проектування програмних систем. Послідовність розробки програмного продукту на основі об’єктноорієнтованого підходу, страница 9

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

У будь-який момент часу стан об'єкта визначає набір властивостей (звичайно статичний) об'єкта і поточні (звичайно динамічні) значення цих властивостей. Під "властивостями" мається на увазі сукупність усіх зв'язків і атрибутів об'єкта. Можна узагальнити поняття стану так, щоб воно було застосовано і до об'єкта, і до класу, тому що всі об'єкти одного класу "живуть" в одному просторі станів. Цей простір може являти собою невизначене, хоча кінцева безліч можливих (але не завжди очікуваних або бажаних) станів. На рис. 4.1 показане графічне позначення, що використовується для окремого стану. 

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

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

 

Рис. 4.2. Значок переходу зі стану в стан

Переходи. Подією називається будь-яка подія, що може бути причиною зміни стану системи. Зміна станів називається переходом. На діаграмі переходів і станів він зображується значком, показаним на рис. 4.2. Кожен перехід з'єднує два стани. Стан може мати перехід саме в себе; звичайно є кілька різних переходів в один і той стан, але всі переходи повинні бути унікальні в тому плані, що ні при яких обставинах не може відбутися одночасно два переходи з одного стану. 

Дією називається операція, що вимагає нульового часу на виконання. Наприклад, включення сигналу тривоги – дія. Звичайна дія означає виклик методу, породження іншої події, запуск або зупинку процесу. Діяльністю називається операція, що вимагає деякого часу на своє виконання. Наприклад, нагрівання повітря в теплиці – діяльність, що запускається включенням нагрівача, що може залишатися включеним невизначений час, доти, поки не буде виключений явною командою. 

Подію може бути представлено символічним ім'ям (або іменованим об'єктом), класом або ім'ям деякої операції. Можна дотримуватися тієї стратегії, що всі події є символічними іменами і кожен клас з поводженням, керованим подіями, має операцію, що розпізнає ці імена і виконує відповідні дії. Така стратегія часто використовується в архітектурах типу модельпредставлення-котролер (model-view-controller), що прийшла з мови Smalltalk. Для більшої спільності можна вважати події об'єктами і визначити ієрархію класів, що являють собою абстракції цих подій. 

Приклад діаграми станів та переходів [1], наводиться на рис. 4.3.  

Рис. 4.3.  Діаграма станів і переходів для контролера тепличного середовища

Завдання 

1.  Побудувати діаграми станів та переходів для програмного продукту на основі одержаної в Лабораторній роботі №3 діаграми класів та списку процесів

(табл. 3.1). 

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