|
Программирование >> Структурное программирование
9.11. В этой главе мы заявили: Если элемент базового класса не подходит для производного класса, этот элемент можно переопределить в производном классе и изменить его реализацию . Если это сделать, сохранится ли отношение производный класс является объектом базового класса ? Объясните свой ответ. 9.12. Изучите иерархию наследования на рис. 9.2. Для каждого класса укажите некоторые обш;ие атрибуты и функции, определяющие иерархию. Добавьте некоторые другие классы, такие, как Undergradu-ateStudent (студент), GraduateStudent (аспирант). Freshman (первокурсник), Sophomore (второкурсник), Junior (младшекурсник), Senior (старшекурсник) и т.д., чтобы обогатить иерархию. 9.13. Напишите иерархию наследования для класса Quadrilateral (четырехугольник), Trapezoid (трапеция). Parallelogram (параллелограмм), Rectangle (прямоугольник) и Square (квадрат). Используйте Quadrilateral как базовый класс иерархии. Сделайте иерархию настолько глубокой (т.е. настолько многоуровневой), насколько это возможно. Закрытыми данными класса Quadrilateral должны быть пары координат (х, у) четырех угловых точек Quadrilateral. Напишите программу драйвер, который создает и отображает объекты каждого из этих классов. 9.14. Напишите все двумерные и трехмерные формы, которые вы сможете придумать, и сформируйте из них иерархию форм. Ваша иерархия должна иметь базовый класс Shape, порождающий классы Twodi-mensionalShape и ThreedimensionalShape. Когда разработаете иерархию, определите каждый из классов в этой иерархии. Мы будем использовать эту иерархию в упражнениях главы 10 для обработки всех форм как объектов базового классовой Shape. Эта техника называется полиморфизмом. глава Виртуальные функции и полиморфизм ▼ Цели Понять способы записи полиморфизма. Понять, как объявлять и использовать виртуальные функции для полиморфизма. Понять различие между абстрактными и конкретными классами. Научиться объявлять чистые виртуальные функции для создания абстрактных классов. Понять, почему полиморфизм делает системы легко расширяемыми и сопровождаемыми. Резюме Терминология Типичные ошибки программирования Хороший стиль программирования Советы по повышению эффективности Замечания по технике программирования Упражнения для самопроверки Ответы на упражнения для самопроверки Упражнения 10.1 Введение с помощью виртуальных функций и полиморфизма можно разрабатывать и реализовывать системы, которые являются более расширяемыми. Программы могут быть написаны для обобщенной обработки объектов всех существующих в иерархии классов как объектов базового класса. Если в момент разработки программы отсутствуют какие-либо полезные классы, их можно в дальнейшем добавлять с незначительными изменениями или вообще без изменений общей части программы при условии, что эти новые классы являются частью уже обрабатываемой иерархии. Единственными частями программы, которые необходимо модифицировать, являются части, требующие непосредственного знания конкретного класса, добавляемого в иерархию. План 10.1. Введение 10.2. Поля типов и операторы switch 10.3. Виртуальные функции 10.4. Абстрактные классы и конкретные классы 10.5. Полиморфизм 10.6. Учебный пример: система расчета заработной платы 10.7. Новые классы и динамическое связывание 10.8. Виртуальные деструкторы 10.9. Учебный пример: интерфейс наследования и его реализация
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |