Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Контрольные работы » Конструювання програм

Реферат Конструювання програм





1. Віртуальні функції


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

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

Приклад віртуальної функції на C + +

Приклад на C + +, який ілюструє відміну віртуальних функцій від Невіртуальна:

class Ancestor

{: void function1 () {cout <<В«Ancestor: function1 ()В» <

};

Descendant: public Ancestor

{: void function1 () {cout <<В«Desc...


сторінка 1 з 9 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Проектування й побудова навчального класу на основі віртуальних машин
  • Реферат на тему: Клас птахи, загальна характеристика класу
  • Реферат на тему: Соціальний статус сучасного робітничого класу країни і його проблеми
  • Реферат на тему: Практико-орієнтовані завдання як засіб реалізації прикладної спрямованості ...
  • Реферат на тему: Вплив успішності школяра на його положення в системі міжособистісних віднос ...