Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsiya.docx
Скачиваний:
43
Добавлен:
14.02.2016
Размер:
51.85 Кб
Скачать

Наслідування

Поняття класу приводить нас до поняття наслідування. В повсякденному житті ми часто стикаємося з розбиттям класів на підкласи: наприклад, клас “хордові” можна розбити на підкласи риби, земноводні, плазуни, птахи, ссавці. Клас “міський транспорт” поділяється на підкласи трамваї, тролейбуси, автобуси, метро, таксі тощо. Принцип, покладений в основу такого ділення, полягає в тому, що кожен підклас володіє властивостями, притаманними тому класу, з якого виділений даний підклас. Крім тих властивостей, які є загальними для класу та підкласу, підклас може володіти й власними властивостями.

В програмуванні клас також може породити безліч підкласів. Ця можливість називається наслідуванням. Наслідування – це можливість, яка дозволяє одному класу наслідувати властивості іншого. В С++ клас, що породжує всі інші класи, який наслідується, називається базовим класом. Класи, які наслідують базовий клас, називаються похідними. Базовий клас містить елементи, спільні для групи похідних класів. А похідні класи наслідують всі його властивості, одночасно володіючи власними властивостями. Т. б. кожен похідний клас представляє собою спеціалізовану версію базового класу. Роль наслідування в ООП – скоротити розмір коду та спростити зв’язки між елементами програми.

Повторне використання коду

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

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

Легкість повторного використання коду вже написаних програм є важливим достоїнством ООП.

Користувацькі типи даних

Одним з достоїнств об’єктів є те, що вони дають користувачеві можливість створювати свої власні типи даних. Наприклад, вам необхідно працювати з об’єктами, що мають дві координати, наприклад х та у. Вам хотілося б виконувати звичайні арифметичні дії над такими об’єктами, наприклад: pos3 = pos1 + pos2 де змінні pos1, pos2 та pos3 являють собою набори з двох координат. Якщо ми опишемо клас Рosition, що включає в себе пару координат, то цим ми фактично створимо новий тип даних. А для роботи з подібними даними достатньо оголосити об’єкти цього класу з іменами pos1, pos2 та pos3.

Поліморфізм та перевантаження

Зверніть увагу на те, що операції присвоювання (=) та додавання (+) для типу даних Рosition повинні виконувати дії, що відрізняються від тих, які ці операції виконують для об’єктів стандартних типів. Чи, наприклад, вам необхідно використати операцію додавання (+) для додавання інтервалів чи об’єднання рядків. Як же оператори = та + розпізнають, які саме дії необхідно здійснити над операндами? Відповідь полягає в тому, що ми самі можемо задавати ці дії, зробивши потрібні оператори методами відповідного класу (наприклад, класу Рosition).

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]