Урок №161. Введення в Спадкування

  Юрій  | 

  Оновл. 23 Лют 2021  | 

 15

На попередніх уроках ми розглянули композицію об’єктів, коли складні класи складаються з простих класів і типів даних. Композиція об’єктів ідеально підходить для створення нових об’єктів, типом відносин яких є «має». Однак композиція об’єктів є лише одним з двох основних способів, за допомогою яких ви можете створювати складні класи в мові C++. Другий спосіб — це спадкування, яке моделює тип відносини «є» між двома об’єктами.

На відміну від композиції об’єктів, яка включає в себе створення нових об’єктів шляхом об’єднання інших об’єктів, спадкування включає в себе створення нових об’єктів шляхом безпосереднього збереження властивостей і поведінки інших об’єктів, а потім їх розширення або навпаки — конкретизації. Подібно композиції об’єктів, спадкування відбувається всюди в реальному житті. Наприклад, при народженні ви успадкували гени від своїх батьків, і вам передалися певні фізичні властивості від кожного з них (схильність до хвороб, видам діяльності тощо), але потім ви додали свою особистість до всього отриманого. Технологічні продукти (комп’ютери, смартфони тощо) успадковують функціонал від своїх попередників, при цьому додаючи щось своє (нове/унікальне) і зберігаючи сумісність. Наприклад, процесор Intel Pentium успадкував багато функціональних властивостей від процесора Intel 486, який, в свою чергу, успадкував свій функціонал від більш ранніх процесорів. Мова C++ багато успадкувала від мови програмування Сі, на якій вона базується, а мова програмування Сі успадкувала багато властивостей від інших мов програмування, які були до неї.

Розглянемо приклад з яблуками і бананами. Хоча яблуко і банан — це різні фрукти, але у них обох є одна загальна властивість: вони обидва є фруктами. І оскільки яблука і банани – це фрукти, то, логічно, все, що вірно для фруктів, вірно і для яблук з бананами. Наприклад, всі фрукти мають свою назву, колір і розмір. Яблука і банани також мають свої назви, колір і розмір. Ми можемо сказати, що яблука і банани успадкували (отримали) всі властивості фруктів, тому що вони самі є фруктами. Ми також знаємо, що фрукти піддаються процесу дозрівання, завдяки якому вони стають їстівними. Оскільки яблука і банани є фруктами, то, відповідно, вони також піддаються процесу дозрівання, в результаті чого стають їстівними.

Якщо зобразити відносини між яблуками, бананами і фруктами на діаграмі, то це виглядатиме приблизно так:

Тут ми бачимо ієрархію.

Ієрархії

Ієрархія — це діаграма зі зв’язками об’єктів. Більшість ієрархій або демонструють прогресію з плином часу (386 > 486 > Pentium), або класифікують речі таким чином, щоб вони переходили від загального до конкретного (Фрукти > Яблука > Макінтош). Ще зі шкільної біології царство, тип, клас, ряд, родина, рід і вид є визначенням ієрархії (рух від загального до конкретного або навпаки).

Ось ще один приклад ієрархії: квадрат є прямокутником, який є чотирикутником, який є фігурою. Правильний трикутник — це трикутник, який також є фігурою:

Тут кожен елемент успадковує властивості і поведінку елементу над ним (рухаємося зверху вниз).

Що далі?

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

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (Немає Оцінок)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *