Тестирование и использование приложения
1.Выполните тестирование согласно рис.9.1 и получите результаты, представленные на рис.9.2. Объясните полученные результаты.
2.Постройте иерархию с виртуальными функциями по заданию, полученному у преподавателя.
Рис.9.2 – результаты выполнения задания
Контрольные вопросы
1.Приведите примеры прямого, косвенного, множественного, открытого, защищенного и закрытого наследования. Как в этих случаях осуществляется доступ к открытым, защищенным и закрытым элементам базового класса?
2.Как можно отобразить объекты классов иерархии?
3.При каком условии и почему каждый объект производного класса является также объектом соответствующего базового класса?
4.Какой класс иерархии имеет наибольшее количество объектов?
5.Можно ли ссылаться на элементы производного класса по указателю производного класса, полученному преобразованием типа указателя базового класса, который указывает на объект базового класса?
6.Можно ли ссылаться на объект базового класса с помощью указателя производного класса? Что изменится после приведения указателя производного класса к типу указателя базового класса?
7.Почему можно присваивать указатель производного класса (адрес объекта производного класса) указателю базового класса, но не наоборот?
8.Когда указатель на объект производного класса неявно преобразуется в указатель на объект базового класса? Приведите пример.
9.Как указатель базового класса преобразовать в указатель производного класса? На что должен указывать при этом указатель базового класса?
10.Как отображается объект производного класса по указателю базового класса?
11.Как переопределяют функцию-элемент базового класса в производном классе? Приведите пример.
12.Как создается объект производного класса иерархии? Как он разрушается?
13.Влияет ли создание производного класса на исходный код базового класса?
14.Как можно изменять базовый класс, чтобы не вносить изменений в производный класс?
15.Что является признаком абстрактного базового класса?
16.Как создать неявно виртуальную функцию?
17.Почему предпочтительнее создавать иерархию классов, порожденную абстрактным базовым классом?
18.Какое требование нужно соблюдать при переопределении виртуальных функций?
19.Что такое статическое связывание? Приведите пример.
20.Объясните суть полиморфизма. Когда и как используется полиморфизм? Как реализовать полиморфизм?
21.Объясните суть динамического или позднего связывания.
22.Как реализовано динамическое связывание?
23.Как виртуальные функции и полиморфное программирование могут исключить потребность в применении логики оператора switch?
24.Почему деструкторы необходимо объявлять виртуальными?
25.Почему конструкторы не могут быть виртуальными?
Задания
1.Форма : прямоугольник : параллелепипед (периметр, площадь, площадь поверхности, объем).
2.Точка : окружность : дуга : сегмент (длина, периметр, площадь).
3.Форма : круг : прямой круговой конус : усеченный прямой круговой конус (площадь, площадь поверхности, объем).
4.Двумерная форма : квадрат : ромб (периметр, площадь).
5.Строка : строка-идентификатор. Если в составе инициализирующей строки будут встречены недопустимые символы, строка-идентификатор создается пустой. (Использовать динамическую память, реализовать операции: =, +, >).
6.Строка : битовая строка. Если в составе инициализирующей строки будут встречены любые символы, отличные от символов ‘0 ’ или ‘1 ’, битовая строка принимает нулевое значение. (Использовать динамическую память, реализовать операции: =, +, ==).
7.Строка : десятичная строка. Строки производного класса могут содержать только символы ‘–‘ и ‘+’, задающие знак числа, и цифры. Символы ‘-‘ или ‘+’ могут находиться только в первой позиции числа, причем символ ‘+’ может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, десятичная строка принимает нулевое значение. (Использовать динамическую память, реализовать операции: =, +, *, >).
8.Строка : комплексное число. Строки производного класса состоят из двух полей, разделенных символом ‘i’. Первое поле задает значение реальной части числа, а второе – мнимой. Каждое из полей может содержать только символы десятичных цифр и символы ‘–‘ и ‘+’, задающие знак числа. Символы ‘–‘ или ‘+’ могут находиться только в первой позиции числа, причем символ ‘+’ может отсутствовать, в этом случае число считается положительным. Если в составе инициализирующей строки будут встречены любые символы, отличные от допустимых, комплексное число принимает нулевое значение. Примеры строк: 33i12, -7i100, +5i-21. (Использовать динамическую память, реализовать операции: =, +, *, ==).
9.Переменная целого типа : множество целых (операции =, +, >).
10. Числовая переменная : массив : матрица (сложение, умножение, сортировка).
Дата добавления: 2020-10-14; просмотров: 359;