1 Программирование на языке Си++. 2 Модуль 6. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ Виртуальные функции и позднее связывание Множественное наследование Виртуальный.

Презентация:



Advertisements
Похожие презентации
1 Программирование на языке Си++. 2 Модуль 5. СТАТИЧЕСКИЕ ЭЛЕМЕНТЫ ДАННЫХ Статические методы Константные объекты и методы Правила инициализации и использования.
Advertisements

1 Программирование на языке Си++. 2 Модуль 8. УПРАВЛЕНИЕ ИСКЛЮЧЕНИЯМИ Применение операторов try, catch, throw Динамическая идентификация типов времени.
1 Программирование на языке Си++. 2 Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ Методы преобразования. Классы потоков Си++ Операции замещения и вставки Ввод/вывод в.
1 Программирование на языке Си++. Модуль 9. ИСПОЛЬЗОВАНИЕ Microsoft Developer Studio Интерфейс Developer Studio (Мастерской разработчика) Создание консольного.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
Полиморфизм Полиморфизм (polymorphism) - последний из трех "китов", на которых держится объектно-ориентированное программирование Слово это можно перевести.
Принципы объектно-ориентированного программирования Объектная модель Наследование Инкапсуляция Полиморфизм.
Введение в объектно- ориентированное программирование.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
Объектно-ориентированное программирование С++. Лекция 6 Карпов В.Э.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
Множественное наследование class A {... }; class B {... }; class C : public A, protected B {... }; !!! Спецификатор доступа распространяется только на.
С++, начала ООП Семинар 3 Рябова Анна Сергеевна
Лекция 11 ОПЕРАЦИОННЫЕ СИСТЕМЫ ОДНОРАНГОВЫХ И ДВУХРАНГОВЫХ КОМПЬЮТЕРНЫХ СЕТЕЙ Учебные вопросы: 1 Основные функции сетевой операционной системы 2 Одноранговые.
ООП Лекция 1. Основные понятия. Литература Шилдт Г. С#: полное руководтво.-М.:ООО Вильямс, с. Культин Н.Б. Microsoft Visual C# в задачах и.
Информационные технологии Стандартные библиотечные функции манипулирование данными преобразование и шифрование определение пользователями функций.
1 © Luxoft Training 2012 Введение в ООП Модуль #2.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 Работа с файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем.
Транксрипт:

1 Программирование на языке Си++

2 Модуль 6. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ Виртуальные функции и позднее связывание Множественное наследование Виртуальный базовый класс Чистые виртуальные функции и абстрактные классы

3 Понятие наследования в ООП и его реализация в Си++ (начало) Наследование механизм повторного использования определенных в составе классов компонентных данных и методов посредством порождения одних (производных) классов на основе других (базовых). Объединенные отношением наследования классы образуют иерархию наследования, чаще всего имеющую вид дерева Множественное наследование порождение производного класса от двух и более базовых. Применение множественного наследования превращает иерархию наследования из дерева в направленный ациклический граф Определение производного класса class : { } где содержит их имена, а также необязательные спецификаторы доступа к компонентам каждого класса Модуль 6. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ

4 Понятие наследования в ООП и его реализация в Си++ (продолжение) Производному классу в языке Си++ доступны общедоступные ( public ) и защищенные ( protected ) компоненты базовых классов. С учетом вариантов спецификации доступа к компонентам базовых классов из производных, а также спецификации доступа в самих базовых классах, итоговая картина прав доступа имеет вид, показанный на следующем слайде При допустимом языком Си++ множественном наследовании возможно дублирование объектов непрямых базовых классов в составе общего предка. В тех случаях, когда такое дублирование нежелательно, базовый класс можно объявить виртуальным Модуль 6. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ

5 Понятие наследования в ООП и его реализация в Си++ (окончание) Модуль 6. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ

6 Множественное наследование. Виртуальные базовые классы Множественное наследование порождение класса- потомка от двух и более базовых классов Определение производного класса class : { }; При допустимом языком Си++ множественном наследовании возможно дублирование объектов непрямых базовых классов в составе общего предка. В тех случаях, когда такое дублирование нежелательно, базовый класс можно объявить виртуальным Модуль 6. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ

7 Виртуальные, чистые виртуальные функции и абстрактные классы Для отражения в реализации иерархии классов ситуации, при которой одна и та же функция базового класса должна различным образом выполняться в классах-потомках, служат виртуальные функции. Классы, включающие виртуальные функции, называются полиморфными. Виртуальными могут быть только нестатические компонентные функции классов Компонентная виртуальная функция (базового) класса, не имеющего в данном классе реализации, называется чистой виртуальной функцией, а класс, содержащий хотя бы одну чистую виртуальную функцию, абстрактным Модуль 6. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ

88 Список литературы [КР92] Керниган Б., Ритчи Д. Язык программирования Си / Пер. с англ. М.: Финансы и статистика, с. [КР06] Керниган Б., Ритчи Д. Язык программирования C / Пер. с англ. М.: Вильямс, с. [ЛЛ01] Липпман С., Лажойе Ж. Язык программирования C++. Вводный курс. СПб.: Невский диалект, с. [Под 03] Подбельский В.В. Язык Си++: Учеб. пособие. 5-е изд. М.: Финансы и статистика, – 560 с., ил. [Под 04] Подбельский В.В., Фомин С.С. Программирование на языке Си. – 2-е доп. изд. – М.: Финансы и статистика, – 600 с. [Стр 08] Страуструп Б. Язык программирования С++. Специальное издание. СПб.: Невский диалект, с.