Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекція 2. Об'єктна модель - основа об'єктно-орієнтованого підходу до аналізу і проектування

 

Проблеми, які стимулюють розвиток об'єктно-орієнтованого підходу (ООП):

1. Необхідність підвищення продуктивності розробки за рахунок багатократного (повторного) використання ПЗ.

2. Необхідність спрощення супроводу і модифікації розроблюваних систем (локалізація змін, які вносяться).

3. Полегшення проектування систем (за рахунок скорочення семантичного розриву між структурою вирішуваних завдань і структурою ПЗ).

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

Коротка історія ООП:

1967: мова Simula - 1ий серед об'єктно орієнтованих;

1970-і: Smalltalk - набув досить широкого поширення;

1980-і: Теоретичні основи, C++, OBJECTIVE-C;

1990-і: Методи OOA і OOD (Booch, OMT....), з'явилася мова Java;

1997: Прийнятий стандарт UML (OMG).

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

Об'єктна модель є природним способом представлення реального світу. Вона є концептуальною основою ООП. Основними принципами її побудови є:

Ø абстрагування;

Ø інкапсуляція;

Ø модульність;

Ø ієрархія.

Додаткові принципи:

Ø типізація;

Ø паралелізм;

Ø стійкість (persistence).

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

Інкапсуляція - локалізація властивостей і поведінки у рамках єдиної абстракції (яка розглядається як «чорний ящик»), що приховує реалізацію за загальнодоступним інтерфейсом. При інкапсуляції відділяється внутрішній устрій об'єкта від його зовнішньої поведінки. Об'єктний підхід припускає, що внутрішні ресурси об'єкта, приховані від зовнішнього середовища. Абстрагування і інкапсуляція є взаємодоповнюючими принципами.

Модульність - це властивість системи, пов'язана з можливістю її декомпозиції на низку внутрішньо сильно зчеплених, але слабо зв'язаних між собою підсистем (частин). Модульність знижує складність системи, дозволяючи виконувати незалежну розробку її окремих частин.

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

Тип - точна характеристика деякої сукупності однорідних об'єктів, яка включає структуру і поведінку.

Типізація - спосіб захиститися від використання об'єктів одного класу замість іншого, або, принаймні, управляти таким використанням.

При строгій типізації (наприклад, у мові Оберон) забороняється використання об'єктів неправильного типу, потрібне явне перетворення до потрібного типу. При менш строгій типізації такого роду заборони ослаблені. Зокрема, допускається поліморфізм - багатозначність імен. Один із проявів поліморфізму, використання об'єкта підтипу (спадкоємця) в ролі об'єкта супертипу (предка).

Паралелізм - наявність у системі декількох потоків управління одночасно. Об'єкт може бути активний, тобто може породжувати окремий потік управління. Різні об'єкти можуть бути активні одночасно.

Стійкість - здатність об'єкту зберігати своє існування в часі і/або просторі (адресному, зокрема при переміщенні між вузлами обчислювальної системи).

Переходимо до основних понять об'єктно-орієнтованого підходу (елементів об'єктної моделі). До них відносяться: об'єкт; клас; атрибут; операція; поліморфізм; спадкоємство; компонент; пакет; підсистема; зв'язок.

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

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

Атрибут - пойменована властивість класу, яка визначає діапазон допустимих значень, які можуть приймати екземпляри даної властивості. Атрибути можуть бути приховані від інших класів, це визначає видимість атрибуту: рublic (загальний, відкритий); private (закритий, секретний); protected (захищений).

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

Результат операції залежить від поточного стану об'єкта. Види операцій:

Операції реалізації (implementor operations) - реалізують потрібну функціональність.

Операції управління (manager operations) управляють створенням і знищенням об'єктів (конструктори і деструктори).

Операції доступу (access operations) - так звані, get-тери, set-тери - дають доступ до закритих атрибутів.

Допоміжні операції (helper operations) - непублічні операції, служать для реалізації операцій інших видів.

Об'єкт може бути абстракцією деякої сутності предметної області (об'єкт реального світу) або програмної системи (архітектурний об'єкт).

Порівняння архітектури традиційної і ОО-системи:

 

В ОО-системі алгоритми (поведінка) і структури даних (внутрішній устрій) об'єднані в об'єкти, за рахунок чого зменшується складність системи, локалізуються зміни.

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

Спадкоємство - це побудова нових класів на основі існуючих з можливістю додавання або перевизначення властивостей (атрибутів) і поведінки (операцій).

Компонент - це відносно незалежна і заміщувана частина системи, яка виконує чітко певну функцію у контексті заданої архітектури.

Компонент є фізичною реалізацією проектної абстракції і може бути: компонентом початкового коду (cpp-шник); компонентом часу виконання (dll, ACTIVEX і т. п.); виконуваним компонентом (exe-шник). Компонент забезпечує фізичну реалізацію набору інтерфейсів. Компонентна розробка (component-based development) є створенням програмних систем, які складаються з компонентів (не плутати з об'єктно-орієнтованим програмуванням (ООП)).

ООП - спосіб створення програмних компонентів, які базуються на об'єктах.

Компонентна розробка - технологія, яка дозволяє об'єднувати об'єктні компоненти в систему.

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

Ø засобом організації моделі у процесі розробки, підвищення її керованості і читабельності;

Ø одиницею управління конфігурацією.

Підсистема - це комбінація пакета (може включати інші елементи моделі) і класу (володіє поведінкою). Підсистема реалізує один або більше інтерфейсів, які визначають її поведінку. Вона використовується для представлення компонента у процесі проектування.

Між елементами об'єктної моделі існують різні види зв'язків:

Ø асоціація - це семантичний (структурний) зв'язок між класами (приклад: компанія-наймач має асоціативний зв'язок з персоною-працівником);

Ø агрегація - сильніший тип асоціативного зв'язку між цілим і його частинами (приклад: автомобіль і мотор);

Ø композиція - посилена агрегація, коли частина не може існувати без цілого (приклад: університет, факультет, кафедра);

Ø залежність - зв'язок між двома елементами моделі, при якій зміни в специфікації одного елемента можуть спричинити зміни в іншому елементі;

Ø узагальнення - зв'язок «тип - підтип»;

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

Зв'язки характеризуються: напрямом; ім'ям і ролевими іменами учасників зв'язку; потужністю.

Потужність (multiplicity) показує, як багато об'єктів бере участь у зв'язку. Потужність - це кількість об'єктів одного класу, пов'язаних з ОДНИМ об'єктом іншого класу. Для кожного зв'язку асоціації і агрегації існують два покажчики потужності – по одному на кожному кінці зв'язку. Позначення потужностей в UML:

<== предыдущая лекция | следующая лекция ==>
Лекція 2. Державні органи зовнішніх зносин | Потужність Значення
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 3770; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.027 сек.