Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Полиморфизм. Виртуальные функции ⇐ ПредыдущаяСтр 8 из 8
Подготовка к работе. По указанной литературе и конспекту лекций повторить темы «Наследование» «Полиморфизм», «Виртуальные функции». Разработать программу в соответствии с заданием к лабораторной работе.
Задание. 1. Используя систему классов, созданную в работе №7, в отчете по работе привести диаграмму иерархии классов. При помощи диаграммы выбрать базовый класс (самый верхний в иерархии), используемый при создании наибольшего числа производных классов. 2. Преобразовать функции вывода полей классов в виртуальные. В каждом классе эти функции должны отличаться так, чтобы по результатам выполнения программы можно было однозначно определить, какому классу функция принадлежит. 3. Создать в функции main() объекты всех производных классов и выбранного базового класса. Для базового класса создать два объекта – с помощью стандартного конструктора и конструктора с аргументами. При создании объектов производных классов использовать конструкторы с аргументами. 4. Проверить работу функций вывода для каждого объекта. Сделать выводы. 5. Создать в функции main() указатель на выбранный базовый класс. 6. По очереди присвоить этому указателю адреса каждого имеющегося объекта. После каждого присваивания вызвать для указателя виртуальную функцию. Сделать выводы. 7. Создать массив указателей на выбранный базовый класс. Количество элементов массива должно быть не меньше количества имеющихся объектов. Каждому элементу массива присвоить адрес одного из объектов. В цикле для каждого элемента массива вызвать виртуальную функцию. Сравнить результат с результатом выполнения пункта 6. Сделать выводы.
Контрольные вопросы. 1. Что такое полиморфизм? 2. Каковы преимущества от реализации полиморфизма при разработке программ? 3. В каких отношениях находятся между собой полиморфизм, наследование и инкапсуляция? 4. Как реализуется полиморфизм в программах? 5. Какие условия должны соблюдаться для реализации полиморфизма? 6. Что представляют собой виртуальные функции? Для чего они нужны? 7. Какие требования предъявляются к виртуальным функциям? 8. Для чего используется спецификатор virtual при полиморфизме? 9. Обязательно ли использование спецификатора virtual при создании виртуальных функций в производных классах? 10. Если от некоторого базового класса, содержащего виртуальную функцию, последовательно (по цепочке) создаётся несколько производных классов, то обязательно ли в каждом производном классе должна быть своя виртуальная функция? 11. Для каких программных объектов могут вызываться виртуальные функции? 12. Для каких программных объектов должны вызываться виртуальные функции, чтобы реализовывался полиморфизм? 13. Почему при полиморфизме используются указатели именно на базовые классы? 14. Каково правило преобразования типов указателей от производных классов к базовым и наоборот? Почему? 15. Реализуется ли полиморфизм, если для указателя на базовый класс вызываются функции производных классов, имеющие одинаковые имена, но не являющиеся виртуальными?
Лабораторная работа №9
|