ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.11.2019
Просмотров: 597
Скачиваний: 1
Не умножай число наявної суті.
Вільям Оккам
Лекція 15.
О'ЕКТНИЙ ПІДХІД ДО РОЗРОБКИ
ПРОГРАМНИХ ЗАСОБІВ
Суть об'єктного підходу до розробки програмних засобів. Об'єктне моделювання як зміст етапу зовнішнього опису при об'єктному підході. Особливості етапу конструювання програмного засобу при об'єктному підході.
15.1. Об'єкти і відносини в програмуванні. Суть об'єктного підходу до розробки програмних засобів.
Навколишній нас світ складається з об'єктів і відносин між ними [15.1]. Згідно В. Далю [15.2] об'єкт (предмет) це все, що представляється відчуттям (об'єкт речовий) або розуму (об'єкт розумовий). Таким чином, об'єкт утілює деяку суть і має деякий стан, який може змінюватися з часом як наслідок впливу інших об'єктів, що знаходяться з першим в яких-небудь відносинах. Він може мати внутрішню структуру: складатися з інших об'єктів, що також знаходяться між собою в деяких відносинах. Виходячи з цього, можна побудувати ієрархічну будову миру з об'єктів. Проте, при кожному конкретному розгляді навколишнього нас світу деякі об'єкти вважаються неподільними, причому залежно від цілей розгляду такими (неделимыми) можуть прийматися об'єкти різного рівня ієрархії. Відношення зв'язує деякі об'єкти: можна вважати, що об'єднання цих об'єктів володіє деякою властивістю. Якщо відношення зв'язує n об'єктів, то таке відношення називається n-местным (n-арным). На кожному місці об'єднання об'єктів, які можуть бути зв'язані яким-небудь конкретним відношенням, можуть знаходитися різні об'єкти, але цілком визначені (в цьому випадку говорять: об'єкти певного класу). Одномісне відношення називається простою властивістю об'єкту (відповідного класу). Багатомісне відношення об'єктів називатимемо асоціативною властивістю об'єкту, якщо цей об'єкт бере участь в цьому відношенні. Стан об'єкту може бути вивчене за значенням простих або асоціативних властивостей цього об'єкту. Безліч всіх об'єктів, які володіють якимсь загальним набором властивостей, називається класом об'єктів.
В процесі пізнання або зміни навколишнього нас світу ми завжди приймаємо в розгляд ту або іншу спрощену модель світу (модельний мир), в яку включаємо об'єкти і відносини деяких класів, що цікавлять нас, з навколишнього нас світу. Кожен об'єкт, що має внутрішню структуру, може представляти свій модельний мир, що включає об'єкти цієї структури і відношення, які їх зв'язують. Таким чином, навколишній нас світ, можна розглядати (у деякому наближенні) як ієрархічну структуру модельних світів.
В даний час в процесі пізнання або зміни навколишнього нас світу широко використовується комп'ютерна техніка для обробки різного роду інформації. У зв'язку з цим застосовується комп'ютерне (інформаційне) представлення об'єктів і відносин. Кожен об'єкт інформаційно може бути представлений деякою структурою даних, що відображає його стан. Прості властивості цього об'єкту можуть задаватися безпосередньо у вигляді окремих компонент цієї структури, або спеціальними функціями над цією структурою даних. Асоціативні властивості (n-местные відносини для n>1) можна представити або в активній формі, або в пасивній формі. У активній формі n-местное відношення представляється деяким програмним фрагментом, що реалізовує або n-местную функцію (що визначає значення властивості відповідного об'єднання об'єктів), або процедуру, що здійснює за станом представлень об'єктів, що зв'язуються відношенням, що представляється, зміну станів деяких з них. У пасивній формі таке відношення може бути представлене деякою структурою даних (у яку можуть входити і представлення об'єктів, що зв'язуються цим відношенням), що інтерпретується на підставі прийнятих угод по загальних процедурах, незалежних від конкретних відносин (наприклад, реляційна база даних). У будь-якому випадку представлення відношення визначає деякі дії з обробки даних.
При дослідженні модельного миру користувачі можуть по-різному отримувати інформацію від комп'ютера.
У одних випадках користувачів може цікавити отримання інформації про окремі властивості певних об'єктів або результати якої-небудь взаємодії між деякими об'єктами модельного миру. Для задоволення таких запитів розробляються відповідні ПС, які виконують функції, що цікавлять користувачів, або відповідні інформаційні системи, здатні видавати інформацію об користувачів, що цікавлять, відносинах. У початковий період розвитку комп'ютерної техніки (при не достатньо високій потужності комп'ютерів) такий підхід до дослідження модельного миру був цілком природним. Саме він і провокував реляційний (процедурний, функціональний і тому подібне) підхід до розробки ПС, який був детально розглянутий в попередніх лекціях. Суть цього підходу полягає в систематичному використанні декомпозиції функцій (відносин) для опису і побудови структури ПС (включаючи тексти програм). При цьому самі об'єкти модельного миру, з якими пов'язані функції, що замовляються і реалізовуються, представлялися фрагментарно (у тому об'ємі, який необхідний для виконання цих функцій) і у формі, зручній для реалізації цих функцій. Тим самим забезпечувалася ефективна реалізація необхідних функцій, але не створювалося цілісне і адекватне комп'ютерне представлення модельного миру, що цікавить користувача. Спроби навіть незначного розширення об'єму і характеру інформації про цей модельний світ, яку можна отримати від ПС, могло зажадати серйозної модернізації цього ПС.
У інших випадках користувача може цікавити спостереження за зміною станів об'єктів модельного миру в результаті їх взаємодій. Це вимагає використання відповідних інформаційних моделей таких об'єктів, створення програмних засобів, що моделюють процеси взаємодії об'єктів модельного миру, і надання користувачеві доступу до цих інформаційних моделей (до призначених для користувача об'єктів). За допомогою традиційних методів розробки це виявилося досить трудомістким завданням. Найповніше відповідає рішенню цієї задачі об'єктний підхід до розробки ПС. Суть його полягає в систематичному використанні декомпозиції об'єктів при описі і побудові ПС. При цьому функції (відносини), що виконуються таким ПС, виражатимуться через відносини об'єктів інших рівнів, тобто їх декомпозиція істотно залежатиме від декомпозиції об'єктів.
З погляду розробників ПС слід розрізняти наступні категорії об'єктів (і, відповідно, їх класів):
-
об'єкти модельного (речового або розумового) миру
-
інформаційні моделі об'єктів реального миру (називатимемо їх призначеними для користувача об'єктами)
-
об'єкти процесу виконання програм
-
об'єкти процесу розробки ПС (технологічні об'єкти програмування).
Крім того, залежно від способу уявлення в комп'ютері модельного миру і характеру взаємодії з ним з боку користувача слід розрізняти пасивні і активні об'єкти. Пасивним об'єктом є деякий фрагмент інформаційного середовища, який здатний зберігати разные дані певного типу (представляючі різні стани цього об'єкту) і з яким пов'язаний деякий набір операцій (застосовних до цього об'єкту). Операції над таким об'єктом застосовуються під впливом деякої зовнішньої по відношенню до цього об'єкту активної сили, витікаючої або від користувача, або від якого-небудь програмного фрагмента в процесі його виконання. Активним об'єктом є таке розширення пасивного об'єкту, в якому фрагмент інформаційного середовища здатний також зберігати і програмні фрагменти, здатні знаходитися в процесі виконання (у активному стані). Активний об'єкт, у якого які-небудь програмні фрагменти знаходяться в активному стані, здатний сприймати повідомлення або сигнали з операційного середовища, в яке він занурений, і самостійно виконувати деякі операції як реакцію на ці повідомлення або сигнали. Таким чином, можна вважати, що активний об'єкт володіє внутрішньою активною силою.
Коли говорять про об'єктно-орієнтований підхід до розробки ПС, мають на увазі об'єктний підхід з орієнтацією на опис об'єктів модельного миру і побудовою їх інформаційних моделей, причому використовуються, в основному, активні об'єкти. При цьому багато процесів розробки ПС набувають специфічних («об'єктні») рис:
-
використання системи понять, що дозволяють описувати об'єкти і їх класи
-
декомпозиція об'єктів є основним засобом спрощення ПС
-
використання внепрограммных абстракцій для спрощення процесів розробки
-
перевага (пріоритет) розробки структури даних перед реалізацією функцій.
Основні з цих специфічних особливостей розробки ПС покажемо в рамках моделі водопаду технології.
15.2. Особливості об'єктного підходу до розробки зовнішнього опису програмного засобу.
При об'єктному підході етап зовнішнього опису ПС виявляється істотно більш ємким і змістовним в порівнянні з реляційним підходом [15.3, 15.4, 15.5, 15.6].
Визначення вимог полягає в неформальному описі модельного світу, який користувач збирається вивчати або просто використовувати за допомогою необхідного ПС. При цьому підвищується роль прототипирования, яке при цьому підході часто окупається зменшенням об'єму роботи на подальших етапах розробки ПС. Часто визначення вимога завершується розробкою діаграми варіантів використання, в якій фіксуються, в яких випадках використовуватиметься ПС. Це дозволяє при розробці ПС обмежитися тільки такими її функціональними можливостями, які підтримують ці випадки (варіанти) використання. По суті, діаграма варіантів використання є описом деякого контексту використання (див. лекцію 4). На мал. 15.1. приведений приклад діаграми варіантів використання [15.6].
Істотно змінюється зміст процесу специфікації вимог: замість розробки функціональної специфікації ПС створюється формальний опис модельного миру, що складається з трьох частин:
-
об'єктній моделі
-
динамічній моделі
-
функціональній моделі.
Призначення цих частин можна образно визначити таким чином [15.3]: об'єктна модель визначає те, з чим щось трапляється; динамічна модель визначає, коли це трапляється; функціональна модель визначає те, що трапляється.
Мал. 15.1. Діаграма варіантів використання для банкомату.
Об'єктна модель показує статичну об'єктну структуру модельного світу, який повинно представляти ПС, що розробляється (програмна система). Вона включає визначення використовуваних класів об'єктів і відносин між цими класами, а також визначення використовуваних об'єктів цих класів і відношення між цими об'єктами.
Зазвичай клас об'єктів в об'єктній моделі представляється у вигляді трійки
(Ім'я класу, Список атрибутів, Список операцій).
Кожен атрибут представляється деяким ім'ям і може приймати значення певного типу. По суті, атрибут класу виражає деяка проста властивість об'єктів цього класу. Представлення деяких простих властивостей об'єктів атрибутами вельми зручно, особливо коли по значеннях цих атрибутів здійснюється класифікація об'єктів. Операції, що указуються в представленні класу, відображають інші властивості об'єктів цього класу (як прості, так і асоціативні). Вони показують, що можна робити з об'єктами цього класу (або що можуть робити самі ці об'єкти).
У об'єктній моделі відношення між об'єктами деяких класів узагальнюються у відносини між цими класами. При цьому використовуються, як правило, тільки одномісні і двомісні відносини між об'єктами. Складніші відносини приводить до невиправданого ускладнення об'єктних моделей, а з іншого боку, такі відносини завжди можуть бути зведені до двомісних за рахунок визначення додаткових класів. Одномісні відносини називають атрибутами, причому деякі атрибути об'єкту виходять з атрибутів класу привласненням ним конкретних значень. Відношення між двома (і більш) об'єктами називають зв'язками, а їх узагальнення (відношення між класами) зазвичай називають асоціаціями. Асоціації визначають допустимі зв'язки між об'єктами. Розрізняють наступні види асоціацій:
-
взаємодії станів об'єктів
-
агрегації (структуризації) об'єктів
-
абстрагування (породження) класів.
Асоціація «взаємодія», по суті, означає, що об'єкти класів, що знаходяться в такому відношенні, можуть бути параметрами деяких операцій. Асоціація «агрегація» означає, що об'єкт один з класів, що знаходяться в такому відношенні, включає (або може включати) (як частина) об'єкти іншого з цих класів. Асоціація «абстрагування» означає, що один з класів, що знаходяться в такому відношенні, успадковує властивості іншого з цих класів і може володіти також і іншими (додатковими) властивостями.
Мал. 15.2. Приклад відношення між класами об'єктів.
Для представлення об'єктної моделі часто використовуються графічні мови специфікації об'єктів (наприклад, мова UML [15.5]). На таких мовах класи і об'єкти задаються прямокутниками, яких указується інформація, що специфікує їх. Для завдання відносин між двома класами відповідні ним прямокутники зв'язуються лінією, забезпеченою різними графічними значками і деякими написами. Графічні значки специфікують характер (вигляд) відношення між цими класами, а написи забезпечують повну ідентифікацію цього відношення (роблять його конкретним). Наприклад, на мал. 15.2 задане відношення між класами Країна і Місто має характер «один до одного». Конкретніше це відношення означає, що кожен об'єкт класу Країна обов'язково зв'язаний відношенням «має столицею» з одним і лише одним об'єктом класу Місто, і цей об'єкт класу Місто не зв'язане таким відношенням ні з яким іншим об'єктом класу Країна.
Для опису декомпозиції об'єктів використовується відношення виду агрегації. Наприклад, відношення «програма складається з одного або декількох модулів» представлено на мал. 15.3.
Мал. 15.3. Приклад відношення агрегації між класами об'єктів.
Слід відмітити, що об'єктна модель повністю включає опис зовнішнього інформаційного середовища при реляційному підході.
Динамічна модель показує допустимі послідовності змін станів об'єктів з об'єктної моделі модельного світу, який повинно представляти ПС, що розробляється (програмна система). Вона описує послідовності операцій у відповідь на зовнішні сигнали (взаємодії) без розгляду того, що ці операції роблять. Динамічна модель необхідна, якщо у відповідній об'єктній моделі є активні об'єкти.
Основні поняття динамічної моделі: події і стани об'єктів. Під подією тут розуміється елементарна дія одного об'єкту на іншій, що відбувається в певний момент часу. Одна подія може логічно передувати іншому або бути не пов'язаною з іншим. Іншими словами, події в динамічній моделі частково впорядковані. Під станом об'єкту тут розуміється сукупність значень атрибутів об'єкту і представлення поточних зв'язків цього об'єкту з іншими об'єктами. Стан об'єкту зв'язується з інтервалом часу між деякими двома подіями, на які реагує цей об'єкт. Об'єкт переходить з одного стану в інше в результаті реакції на деяку подію (в кінці інтервалу, пов'язаного з цим станом).
Мал. 15.4. Діаграма станів телефонної лінії.
У зв'язку з цим в динамічній моделі для кожного класу активних об'єктів будується своя діаграма станів. Вона є граф, вершинами якого є стани, а дугами – переходи між цими станами (переходи часто позначаються іменами подій). Деякі переходи можуть бути пов'язані з умовами, що вирішують ці переходи. Умова – це предикат, залежний від значень деяких атрибутів об'єкту. Кожна умова указується на дузі, переходом по якій управляє ця умова. Істотно, що в діаграмі станів з деякими станами або подіями зв'язуються певні операції. Операція, що пов'язується з подією, позначає реакцію об'єкту на цю подію і вважається, що вона виконується миттєво (у точці деякого тимчасового інтервалу). Така операція називається дією. Операція, що пов'язується із станом, виконується в рамках тимчасового інтервалу, з яким пов'язаний цей стан (тобто має тривалість, обмежену цим інтервалом). Така операція називається діяльністю. Діаграма станів визначає управління активізацією вказаних операцій. Таким чином, діаграма станів описує поведінку одного класу об'єктів. Приклад діаграми станів класу приведений на мал. 15.4.