Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

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

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

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

1.2.1. Поняття про інкапсуляцію

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

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

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

1.2.2. Поняття про поліморфізм

Поліморфізм (від грецького слова polymorphism, що означає "багато форм") – це властивість, що дає змогу використовувати один інтерфейс для цілого класу дій. Конкретна дія визначається характерними ознаками ситуації. Як простий приклад поліморфізму можна навести кермо автомобіля. Для керма (тобто інтерфейсу) байдуже, який тип рульового механізму використовується в автомобілі. Іншими словами, кермо працює однаково, незалежно від того, чи оснащений автомобіль рульовим керуванням прямої дії (без підсилювача), рульовим керуванням з підсилювачем або механізмом рейкової передачі. Якщо Ви знаєте, як поводитися з кермом, то Ви зможете вести автомобіль будь-якого типу. Цей же принцип можна застосувати до програмування. Розглянемо, наприклад, стек, або список, додавання елементів до якого чи видалення з нього здійснюється за принципом "останній прибув – перший обслужений". У Вас може бути програма, у якій використовуються три різних типи стека. Один стек призначений для цілочисельних значень, другий – для значень з плинною крапкою і третій – для символів. Алгоритм реалізації всіх стеків – один і той самий, хоча у них зберігаються дані різних типів. У необ'єктно-орієнтованій мові програмісту довелося б створити три різні набори підпрограм обслуговування стека, причому підпрограми мали б мати різні імена, а кожен набір – власний інтерфейс. Але завдяки поліморфізму у мові C++ можна створити один загальний набір підпрограм (один інтерфейс), який підходить для всіх трьох конкретних ситуацій. Таким чином, знаючи, як використовувати один стек, програміст може використовувати всі інші.

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

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