19821

Віртуальні методи. Абстрактні класи

Доклад

Информатика, кибернетика и программирование

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

Украинкский

2015-01-12

17.72 KB

8 чел.

Абстрактний клас в об'єктно-орієнтованому програмуванні - базовий клас, який не передбачає створення екземплярів. Абстрактні класи реалізують на практиці один з принципів ООП - поліморфізм. Абстрактний клас може містити (і не містити [1]) абстрактні методи і властивості. Абстрактний метод не реалізується для класу, в якому описаний, однак повинен бути реалізований для його неабстрактних нащадків. Абстрактні класи являють собою найбільш загальні абстракції, тобто мають найбільший обсяг і найменше зміст.
В одних мовах створювати екземпляри абстрактних класів заборонено, в інших це допускається (наприклад, Delphi), але звернення до абстрактного методу об'єкта цього класу в процесі виконання програми призведе до помилки. У багатьох мовах допустимо оголосити будь-який клас абстрактним, навіть якщо в ньому немає абстрактних методів (наприклад, Java), саме для заборони створення екземплярів.Абстрактний клас можна розглядати в якості інтерфейсу до сімейства класів, породженому ним, але, на відміну від класичного інтерфейсу, абстрактний клас може мати певні методи, а також властивості.
Абстрактні методи часто є і віртуальними, у зв'язку з чим поняття «абстрактний» і «віртуальний» іноді плутають.

Віртуальний метод (віртуальна функція) - в об'єктно-орієнтованому програмуванні метод (функція) класу, який може бути перевизначений в класах-спадкоємців так, що конкретна реалізація методу для виклику буде визначатися під час виконання.Таким чином, програмісту необов'язково знати точний тип об'єкта для роботи з ним через віртуальні методи: достатньо лише знати, що об'єкт належить класу або спадкоємцю класу, в якому метод оголошений.
Віртуальні методи - один з найважливіших прийомів реалізації поліморфізму. Вони дозволяють створювати загальний код, який може працювати як з об'єктами базового класу, так і з об'єктами будь-якого його класу-спадкоємця. При цьому базовий клас визначає спосіб роботи з об'єктами і будь-які його спадкоємці можуть надавати конкретну реалізацію цього способу. У деяких мовах програмування, наприклад в Java, немає поняття віртуального методу, дане поняття слід застосовувати лише для мов, в яких методи батьківського класу не можуть бути перевизначені за замовчуванням, а тільки за допомогою деяких допоміжних ключових слів. У деяких же (як, наприклад, в Python), всі методи - віртуальні.
Базовий клас може і не надавати реалізації віртуального методу, а лише декларувати його існування. Такі методи без реалізації називаються «чистими віртуальними» (переклад англ. Pure virtual) або абстрактними. Клас, у якому хоча б один такий метод, теж буде абстрактним. Об'єкт такого класу створити не можна (в деяких мовах допускається, але виклик абстрактного методу призведе до помилки).Спадкоємці абстрактного класу повинні надати реалізацію для всіх його абстрактних методів, інакше вони, в свою чергу, будуть абстрактними класами.
Для кожного класу, що має хоча б один віртуальний метод, створюється таблиця віртуальних методів. Кожен об'єкт зберігає покажчик на таблицю свого класу. Для виклику віртуального методу використовується такий механізм: з об'єкта береться покажчик на відповідну таблицю віртуальних методів, а з неї, за фіксованим зсуву, - покажчик на реалізацію методу, використовуваного для даного класу. При використанні множинного спадкування або інтерфейсів ситуація дещо ускладнюється за рахунок того, що таблиця віртуальних методів стає нелінійною.


 

А также другие работы, которые могут Вас заинтересовать

17102. Складання програм циклічної структури. Цикли з відомою та невідомою кількістю Повторів 105 KB
  Лабораторна робота № 14 Тема: склад програм циклічної структури. Цикли з відомою та невідомою кількістю Повторів. Мета: навчитися складати циклічні програми різних типів: з відомою та невідомою кількістю повторів. Обладнання: ПК. Хід роботи. Правила техніки
17103. Вкладені цикли. Упорядкування елементів масиву 49.5 KB
  Лабораторна робота № 15 Тема: Вкладені цикли. Упорядкування елементів масиву. Мета: навчитися складати програми упорядкування масивів Обладнання: ПК інструкция до практичної роботи. Обладнання:ПК Хід роботи Правила техніки безпеки в класі комп'ютерної технік
17104. Вкладені цикли. Рахування подвійної суми елементів 77.5 KB
  Лабораторна робота № 1617 Тема: Вкладені цикли. Рахування подвійної суми елементів. Мета:навчитися методиці підготовки та зміни змінних у вкладених циклах складати програми рахування подвійної суми. Обладнання: ПК інструкція до практичної роботи. Хід роботи. 1....
17105. Поняття алгоритму. Блок схема запису алгоритмів 95.5 KB
  Лабораторна робота № 1 Тема: Поняття алгоритму. Блок схема запису алгоритмів. Мета: ознайомитись з поняттям алгоритм розглянути властивості алгоритму способи запису алгоритмів ознайомитись з правилами креслення схем алгоритму. Обладнання: інструкція до пр...
17106. Загальна блок-схема 152.5 KB
  Лабораторна робота №2 Тема: Загальна блоксхема. Мета: розглянути схеми конструювання алгоритмів. Обладнання: інструкція до практичної роботи олівець лінійка. Хід роботи. 1.Правила Т/Б в кабінеті комп'ютерної техніки. Методичні вказівки. Алгоритми можна пре
17107. Циклічні алгоритми 61.5 KB
  Лабораторна робота № 3 Тема: Циклічні алгоритми. Мета: навчитися складати схеми циклічних алгоритмів. Обладнання: інструкція до практичної роботи олівець лінійка. Хід роботи. Правила Т/Б в кабінеті комп'ютерної техніки. Методичні вказівки. Базова ст...
17108. Вкладені цикли 58 KB
  Лабораторна робота № 4 Тема: Вкладені цикли. Мета: навчитися складати алгоритми з вкладеними циклами. Обладнання: інструкція до практичної роботи олівець лінійка. Хід роботи Правила Т/Б в кабінеті комп'ютерної техніки. Методичні вказівки. Можливі в
17109. Програмування програм багатомодульної структури 68 KB
  Лабораторна робота № 18 Тема: Програмування програм багатомодульної структури. Мета: навчитися програмувати програми багатомодульної структури. Обладнання: ПК інструкція до практичної роботи. Хід роботи. 1.Правила техніки безпеки в класі комп'ютерної техніки. ...
17110. Розробка програм з функціями. Оголошення, визначення і виклик функцій 109.5 KB
  Лабораторна робота № 19 Тема: Розробка програм з функціями. Оголошення визначення і виклик функцій Ціль роботи: виробити практичні навички в написанні програм з виділенням функцій їхнім оголошенням визначенням і використанням. Обладнання: ПКПО Borland C Теорети...