Студопедия
МОТОСАФАРИ и МОТОТУРЫ АФРИКА !!!


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Конец описания




19) Сложный полиморфизм или создание полиморфных объектов.При сложном полиморфизме конкр аспект полиморфного метода также определен типом объекта, но только на этапе компиляции, а на этапе выполения программы, т.е. при позднем связывании. Полиморфными объектами или полиморфными переменными называются переменные, которым в процессе выполнения программы может быть присвоено значение, тип которого отличается от типа переменной. В языках с жесткой типизацией такая ситуация может возникнуть:

1) при передаче объекта типа класса-потомка в качестве фактического параметра подпрограмме, в которой этот параметр описан, как параметр типа класса-родителя (явно - в списке параметров или неявно – в качестве внутреннего параметра, используемого при вызове методов - self или this);

2) при работе с указателями, когда указателю на объект класса-родителя присваивается адрес объекта класса-потомка.

Тип полиморфного объекта становится известным только на этапе выполнения программы. Соответственно, при вызове полиморфного метода для такого объекта, нужный аспект также должен определяться на этапе выполнения.

Для этого в языке должен быть реализован механизм позднего связывания, позволяющий определять тип объекта и, соответственно, аспект полиморфного метода, к которому идет обращение в программе, на этапе ее выполнения.

С помощью механизма позднего связывания реализуется оперативная перестройка программы в соответствии с типами используемых объектов.

Поясним сказанное на примере.

Пример 1.10. Сложный полиморфизм

Пусть родительский класс содержит два метода Out и Print, один из которых вызывает другой. Класс-потомок наследует метод Out, но имеет собственный метод Print. Метод Out наследуется и может быть вызван как для объекта класса-родителя, так и для объекта класса-потомка (рис. 1.22).

Рис. 1.22. Иерархия классов примера 1.10

При вызове метода Out для объекта класса-потомка необходимо обеспечить, чтобы этот метод вызывал метод Print потомка, а не родителя (рис. 1.23). Определить, для объекта какого класса: родителя или потомка вызывается метод Out, можно только на этапе выполнения. Следовательно, для метода Print необходимо обеспечить позднее связывание. Если определение адреса метода Print происходило бы на этапе компиляции программы, то и для объекта родительского класса, и для объекта класса-потомка из метода Out вызывался бы метод Print класса-родителя. Описание метода Print как метода, для которого запрещается определение адреса на этапе компиляции, приведет к тому, что адрес метода Print будет определяться в процессе выполнения программы. В этот момент уже будет известно, объект какого класса вызывает метод Out, и будет вызываться метод Print именно этого класса.




20) Виртуальные методы как средства реализации сложного полиморфизма. Реализация механизма позднего связывания осуществляется с использованием специальной таблицы, получившей название таблицы виртуальных методов (ТВМ). ТВМ создается для каждого класса, имеющего собственные или наследующего виртуальные методы. Она содержит адреса виртуальных методов (рис. 1.24). Объекты таких классов содержат адрес ТВМ своего класса. При вызове виртуального метода для объекта происходит обращение к ТВМ класса, по которой и определяется требуемый метод.

Рис. 1.24. Реализация механизма позднего связывания

При использовании полиморфных объектов возникают проблемы с доступом к полям объекта, описанным в классе-потомке: указатель на объект класса-родителя связан с описанием полей класса-родителя, и поля, описанные в классе-потомке, для него «невидимы»





Дата добавления: 2014-01-24; просмотров: 683; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: При сдаче лабораторной работы, студент делает вид, что все знает; преподаватель делает вид, что верит ему. 9465 - | 7335 - или читать все...

Читайте также:

  1. I. Конец V - середина XI в. - период раннего средневековья,
  2. Августа. Около недели не смыкал глаз, да и не хочется. Последние дни —стрельба из пушки по площадям и по вспышкам, то есть в белый свет, ползание из конца в конец по
  3. Беларусь в период революции 1905-1907 гг. Деятельность БСГ.. Конец XIX – начало ХХ вв. – время создания и становления политических партий. На II съезде РСДРП (1903 г.)принята программа: самодержавия, установление
  4. БЕРЛИН. КОНЕЦ ВОЙНЫ
  5. БЕРЛИН. КОНЕЦ ВОЙНЫ. Великолепное шоссе Франкфурт-на-Одере — Берлин, чудо немецкого дорожного строительства, шло с Востока прямо на Запад, вонзалось в пригороды немецкой столицы
  6. БИЛЕТ 18 СКЛАДЫВАНИЕ ВОСТОЧНОСЛАВЯНСКОГО МЕЖПЛЕМЕННОГО СУПЕРСОЮЗА (КОНЕЦ IX-X ВВ.) ВО ГЛАВЕ С КИЕВОМ
  7. БИЛЕТ 42 ЦЕНТРЫ ЛЕТОПИСАНИЯ НА РУСИ
  8. Бинт раскатывают слева направо, против часовой стрелки. Головку бинта, как правило, держат в правой руке, а свободный конец – в левой
  9. Боги-ваны. Лаки. Конец света
  10. Бронзовый век Украины ( 3.000 - конец 2 века до н.э.)
  11. В августе 1935 г.была наконец принята новая Конституция для Индии
  12. В истории Древнего Востока могут быть выделены три большие эпохи.. В первую эпоху (конец 4—III тыся­челетие до н. э.) на Древнем Востоке сущес­твуют три основных цивилизационных центра — египетский, шумерский и


 

3.231.229.89 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.002 сек.