Віртуальні методи
Поліморфізм - один із найважливіших механізмів ОВП. Поліморфізм реалізується за допомогою успадкування класів та віртуальних методів.
Поліморфізмполягає в тому, що за допомогою одного і того ж звернення до методу виконуються різні дії в залежності від типу, на який посилається покажчик у кожний момент часу.
Розглянемо приклад ієрархії класів, де кожен клас має метод із одним ім'ям.
Яка ж функція буде виконуватись у наступному рядку:
ptr->show(); Base::show( ) чи derv1::show( )?
У цьому випадку компілятор вибирає метод, який задовольняє типу покажчика (Base::show()) .
Цей процес називаєтьсяраннім зв'язуванням.
У C++ реалізований механізм пізнього зв'язування, коли дозвіл посилань на метод відбувається на етапі виконання програми в залежності від конкретного типу об'єкта, що викликав метод. Цей механізм реалізовано за допомогою віртуальних методів [2].
Для визначеннявіртуального методувикористовується специфікаторvirtual,наприклад:
virtual void show()
Рекомендується робити віртуальними деструктори для того, щоб гарантувати правильне звільнення пам'яті з-під динамічного об'єкта, оскільки в цьому випадку в будь-який момент часу буде обрано деструктор, що відповідає фактичному типу об'єкта.
Деструктор передає операціїdelete розмір об'єкта.
Контейнерні класи
Контейнерні класи - це класи, призначені для зберігання даних, організованих певним чином.
Контейнери- це об'єкти, що містять інші однотипні об'єкти.
Для кожного типу контейнера визначено методи роботи з його елементами, які не залежать відконкретного типу даних, які зберігаються в контейнері, тому той самий вид контейнера можна використовуватиме зберігання даних різних типів. Ця можливість реалізована за допомогою шаблонів класів.
Використання контейнерів дозволяє значно підвищити надійність програм, їх переносимість та універсальність, а також зменшити термін їх розробки.
Розвиток об'єктно-орієнтованого програмування спричинило створення широкого набору бібліотек.
Бібліотека STL/CLR є упакованою бібліотекою стандартних шаблонів (STL), що входить до складу стандартної бібліотеки C++.
Бібліотека ATL розшифровується як Active Template Library. Це бібліотека класів та шаблонів, призначена для розробки власних компонетів. Одне із застосування цієї бібліотеки - це створення власних елементів ActiveX. Наприклад, за допомогою бібліотеки ATL можна створити власну особливу кнопку (скажімо, круглу) і потім використовувати її в програмах.
БібліотекаMFC(Microsoft Foundation Classes) призначена в основному для створення додатків з інтерфейсом користувача (вікна, діалоги тощо).
Бібліотека MFC інкапсулює багато функцій API (Application Programming Interfase), за допомогою яких реалізуються всі необхідні системні дії, такі як виділення пам'яті, виведення на екран, створення вікон і т.п. Бібліотека MFC розроблялася для спрощення завдань, які стоять перед програмістом.