19821

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

Доклад

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

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

Украинкский

2015-01-12

17.72 KB

8 чел.

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

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


 

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

48541. ЗАРОЖДЕНИЕ ЭКОНОМИЧЕСКОЙ НАУКИ 57 KB
  Они считали что приумножение богатства требует протекционистских мер по регулированию внешней торговли того чтобы поощрялся экспорт сдерживался импорт и всемерно поддерживалась национальная промышленность. Источником богатства меркантилисты считали неэквивалентный обмен в результате торговых взаимоотношений с другими государствами. Его труд посвящался проблеме преобразований в российской экономике направленных на преодоление бедности и преумножение богатства. Он считал что труд является источником богатства и в промышленности и в...
48542. Элементы автоматических устройств электрических систем 5.83 MB
  Сравнивает ток реле и ток уставки: Iр Iуст. Элемент воздействия выходные реле. ТЕМА: РЕЛЕ Реле элемент сравнивающий входную величину с заданной уставкой. Элементарное реле имеет одну входную величину и может принимать два значения: 0 и1.
48543. МЕТАДАННЫЕ 608.79 KB
  Метаданные — это данные о данных, которые описывают характеристики объектов-носителей данных, способствуют обнаружению, идентификации, оценке и управлению этими данными, включают определения объектов, относящихся к данным, разработчикам, пользователям и средствам взаимодействия.
48544. Методи вимірювання теплоємності і тепловмісту 6.86 MB
  Вимірювання ентальпії методом змішування. Вимірювання теплоємності. Прилади які використовуються для вимірювання ентальпії або теплоємності називаються калориметрами а методика вимірювання калориметрією.
48545. ГЕОГРАФИЧЕСКИЕ ИНФОРМАЦИОННЫЕ СИСТЕМЫ И БД 2.06 MB
  Сергей Щербина Общие сведения о ГИС Большинство используемых данных с которыми работают информационные системы имеют пространственную привязку географические координаты т. Сервисы Google Mps и Google Erths фактически представляющие собой базовую инфраструктуру геоданных продемонстрировали потенциал уже завоевавших популярность географических информационных систем ГИС. Простота ввода и агрегации данных с помощью сервиса Google Erth позволяет видеть в нем прообраз ГИС будущего простых в использовании открытых сред.
48546. БАЗЫ ДАННЫХ КАК ОСНОВА ДЛЯ ПОДДЕРЖКИ РЕШЕНИЙ 524.21 KB
  Сферы Воздух Вода Земля Био Количественные сведения о состоянии природной среды Наблюдения Диагноз Прогноз Климат После явления Сведения об объекте Перечень воздействий ЛПР Качественные сведения о ситуации время года климатический район тип объекта уровень принятия решений ЭММ Перечень рекомендаций Объект Оперативные Тактические Стратегические XII. БАЗЫ ДАННЫХ КАК ОСНОВА ДЛЯ ПОДДЕРЖКИ РЕШЕНИЙ Проблемы поддержки решений в современных условиях Роль информации при принятии решений Принципы создания СППР Выявление знаний Примеры...
48547. Перспективы развития БД 3.17 MB
  Перспективы развития БД Развитие компьютерной техники Развитие ядра СУБД Развитие внешнего окружения Развитие средств работы с БД Развитие моделей данных Сенсорные сети Технологии обслуживания нового поколения Развитие компьютерной техники За последние 25 лет тактовая частота процессоров возросла с МГц до ГГц оперативная память с нескольких сотен Кбайт до Гигабайт а память на дисках со 100 Мбайт до Тбайт и более. Рабочая нагрузка типового компьютера будущего потребует обработки Тбайт данных и производительности на терафлопном уровне....
48548. Базы данных. Модели данных 1.19 MB
  В настоящее время, а тем более в будущем, в условиях широкой информатизации общества все большее распространение будут получать справочные системы, системы информационной поддержки деятельности учреждений, системы поддержки принятия решений, системы автоматизированного учета и контроля, системы автоматизированного проектирования и множество других систем на базе средств информационных и коммуникационных технологий.
48549. Старажытныя цывілізацыі 650 KB
  Крыніцы вывучэння гісторыі Беларусі. Гісторыя Беларусі вывучаецца на аснове разнастайных гістарычных крыніц. Першымі на тэрыторыю Беларусі прыйшлі фінаугорскія плямены якія раней жылі за Уралам. Больш глыбокія вынінікі для Беларусі і Еўропы мела перасяленне індаеўрапейцаў.