19821

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

Доклад

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

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

Украинкский

2015-01-12

17.72 KB

8 чел.

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

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


 

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

26676. КОНЦЕПЦИЯ РАЗВИТИЯ МОЛОДЕЖНОГО ТУРИЗМА 34.24 KB
  Другой аспект туризма – туристский бизнес. Настоящий бум развития туризма в нашей стране был в 30е и 60е годы прошлого века. В настоящее время отсутствует комплексный подход к развитию туризма в стране в 90е годы руководство туризмом было разведено по 14 ведомствам и частному капиталу.
26677. Наследование при моно- и дигибридном скрещивании 14.38 KB
  Закон доминирования первый закон Менделя − это закон единообразия гибридов первого поколения. Это соотношение выражает второй закон Менделя или закон расщепления признаков у гибридов второго поколения в соотношении 3:1 по фенотипу. Закон чистоты гамет – гамета содержит 1 и только 1 аллель от каждого гена. 3й закон Менделя: закон независимого наследования.
26678. Полиплоидия. Автополиплоидия, её фенотипические эффекты и генетика. Амфидиплоидия как механизм получения плодовитых аллополиплоидов. Значение полиплоидии в эволюции и селекции растений 13.47 KB
  Геномные мутации это мутации затрагивающие число хромосом изменяющие геномгаплоидный набор хромосом с локализми в них генами. Полиплоидия это изменение числа хромосом кратное гаплоидному. Умножение одного и того же гаплоидного числа хромосом генома назся автополиплоидией. Различают полиплоидию сбалансую с чётным числом наборов хромосом и несбалансую с нечётным.
26679. Строение митотической хромосомы 11.76 KB
  Она связана с тонкими фибриллами и телом хромосомы в области перетяжки. Обычно хромосома имеет только 1 центромеру но может встречаться дицентрические и полицентрические. Те ке хромосомы имеют вторичную перетяжку кя обычно располагается вблизи дистального конца хромосомы и отделяет маленький участок – спутник.
26680. Сцепление генов. Группы сцепления. Генетический анализ сцепления генов. Сцепление и перекрест в экспериментах Моргана с дрозофилой 12.78 KB
  Генетический анализ сцепления генов. Число хромосом у разных видов невелико по сравнению с числом генов. У дрозофилы более тысячи генов на 4 пары хромосом.
26681. Транскрипция – синтез РНК 14.63 KB
  Транскрипция – синтез всех типов РНК 1 этап экспрессии генов. РНКполимеразы: Транскрипцию осуществлт фермент РНКполимераза особть фия: не требует праймера начинает работать с 1 нуклда работает в направлении 5→3 У прокариот РНКполимза E δ70 имеет большое колво субц 2α – взаимодт с промотором; 2β – актив. РНКполимза сочетт в себе полимеразную и хеликазю активть.
26682. Трансляция 16.84 KB
  Трансляция - реализация ген.программы клеток,происходит перевод ген.информации,закодированной в структуре НК,в аминокислотную последовательность белков. Это перевод четырехбуквенного(по числу постоянно встречающихся в ДНК и РНК нуклеотидов)
26683. Понятие гена и генома. Генетический код. Регуляция активности генов на примере лактозного оперона 14.35 KB
  Регуляция активности генов на примере лактозного оперона. 2Является универсальным 3Вырожденность 1АК может кодироваться несколькими триплетами 4Неперекрывающийся – то есть триплет кодирует только 1АК 5Стопкодоны 3 последовательности: УАА УАГ УГА Регуляция действия генов на примере лактозного оперона. Лактоза расщепляется на глюкозу и галактозу под действием фермента – βгалактозидаза P lacI P O lacZ lacY lacC Строение лакоперона:1 P – промотер который связывается с мРНК. Ген lacI не входит в состав оперона.
26684. Генетическая информация о структуре белков и нуклеиновых кислот у всех организмов заключена в молекулах ДНК или РНК в виде генов 17.31 KB
  Генетическая информация о структуре белков и нуклеиновых кислот у всех организмов заключена в молекулах ДНК или РНК в виде генов. РП ДНК проходит в соответствии с правилами УотсонКрика. Во время РП каждая из цепей родительской ДНК служит матрицей для дочерней комплементарной цепи полуконсервативный механизм. Главный фермент РП – ДНКзависимая ДНКполимераза.