Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3blok_Програмування.doc
Скачиваний:
33
Добавлен:
14.02.2016
Размер:
121.86 Кб
Скачать

9. Механізми підтримки поліморфізму

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

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

class baseClass { // Оголошення базового класу

public:

// Оголошення віртуальної функції

virtual void Show() { cout << Cyr("Базовий клас.") << endl; }};

class firstD : public baseClass {

public:

// Перевизначення функції Show() для класу firstD.

void Show() { cout << Cyr("Перший похідний клас.") << endl; }};

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

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