23 (ч1). Поняття об’єктно-орієнтованого аналізу. Класи та об’єкти. Основні відносини між класами та об’єктами.

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

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

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

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

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

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

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

Поняття “об'єкт” зіставляють ряд доповнюючих одне одного визначень:

- Об'єкт - це відчутна реальність, що характеризується чітко визначеною поведінкою.

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

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

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

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

Певний вплив одного об'єкта на ін з метою викликати відповідну реакцію наз-ютьоперацією. В об'єктно-орієнтованих мовах програмування операції називаютьметодами. М. виділити 5 типів операцій:

- конструктор, створення та ініціалізація об'єкта;

- деструктор, що руйнує об'єкт;

- Модифікатор, що змінює стан об'єкта;

- селектор для доступу до змінних об'єктів без їх зміни;

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

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

Об'єкти явл-ся екземплярамикласів.

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

Дані та методи розбиваються за рівнями доступу, наприклад, виділяються рівні доступу public, protected і private.

У класу 2 різні ролі: модуля та типу даних.

1 Клас - це модуль, архітектурна одиниця побудови програмної системи. У ООП програмна сис-ма, що будується за модульним принципом, складається з класів, що є основним видом модуля. Розмір і вміст модуля визначається архітектурними міркуваннями.

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

Основні принципи ООП

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

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

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

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

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