Содержание
- 2. Одним из основных принципов ООП (наряду с абстракцией данных, инкапсуляцией и наследованием) является полиморфизм. Полиморфи́зм —
- 3. Пример: иерархия в животном мире Предположим, что метод move(…) (двигаться) объявлен в базовом классе animal. Тогда
- 4. Формы полиморфизма Полиморфизм включения (чистый полиморфизм) позволяет эффективнее использовать объекты родственных классов. Например, дает возможность создавать
- 5. В языке С++ полиморфизм включения реализуется через механизм виртуальных функций. Виртуальной функцией называется метод класса, объявленный
- 6. Применение виртуальных функций: коллекции родственных объектов graph triangle circle square 1) Пусть имеется иерархия, включающая в
- 7. 2) Пусть требуется создать коллекцию, содержащую родственные объекты (с общим предком). Пример: массив геометрических фигур элемент
- 8. В С++ такая коллекция может быть реализована как массив указателей на объекты базового типа. Пример: статический
- 9. graph* collection[10]; graph G(...); circle C(...); rectangle R(...); triangle T(...); collection[0] = &T; collection[1] = &G;
- 10. Проблема Этот способ размещения родственных объектов в массиве имеет существенный недостаток: объекты в массиве теряют отличительные
- 11. Для решения этой проблемы в языке С++ используют специальный инструмент – виртуальную функцию. РЕШЕНИЕ: Все методы,
- 12. Архитектура приложения
- 13. Абстрактные классы В рассмотренном нами примере класс graph выступает в качестве предка для классов circle, square,
- 14. Чистые виртуальные функции Метод draw() класса graph никогда не будет вызываться напрямую, так как абстрактное понятие
- 15. Объявление ЧВФ Чистая виртуальная функция не содержит никаких операторов, и вообще не имеет тела. Сразу после
- 16. Знак равенства здесь не имеет ничего общего с операцией присваивания. Конструкция = 0 сообщает компилятору о
- 17. Динамическая информация о типах В С++ имеется возможность получать информацию о классе объекта прямо во время
- 18. Проверка типа – dynamic_cast Для использования оператора dynamic_cast компилятор должен задействовать механизм определения типа на этапе
- 20. Скачать презентацию