🗊Презентация Наследование и полиморфизм

Категория: Образование
Нажмите для полного просмотра!
Наследование и полиморфизм, слайд №1Наследование и полиморфизм, слайд №2Наследование и полиморфизм, слайд №3Наследование и полиморфизм, слайд №4Наследование и полиморфизм, слайд №5Наследование и полиморфизм, слайд №6Наследование и полиморфизм, слайд №7Наследование и полиморфизм, слайд №8Наследование и полиморфизм, слайд №9Наследование и полиморфизм, слайд №10Наследование и полиморфизм, слайд №11Наследование и полиморфизм, слайд №12Наследование и полиморфизм, слайд №13Наследование и полиморфизм, слайд №14Наследование и полиморфизм, слайд №15Наследование и полиморфизм, слайд №16

Вы можете ознакомиться и скачать презентацию на тему Наследование и полиморфизм. Доклад-сообщение содержит 16 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Основы ООП
Наследование и полиморфизм
Описание слайда:
Основы ООП Наследование и полиморфизм

Слайд 2





Наследование и полиморфизм
Наследование
Наследованием называется процесс порождения одного класса от другого класса с сохранением и/или перекрытием свойств и методов класса-предка и добавлением, при необходимости, новых свойств и методов в классы-потомки. 
Набор классов, связанных отношением наследования, называют иерархией классов или схемой наследования. 
Пример наследования. Фигуры на экране.
Рассмотрим следующую схему наследования:
Общим свойством всех фигур на экране, независимо от их формы, является наличие координат (класс TLocation).
Любая фигура на экране должна “уметь” себя отобразить, скрыть своё изображение, а также перемещаться по экрану (класс TFigure).
Описание слайда:
Наследование и полиморфизм Наследование Наследованием называется процесс порождения одного класса от другого класса с сохранением и/или перекрытием свойств и методов класса-предка и добавлением, при необходимости, новых свойств и методов в классы-потомки. Набор классов, связанных отношением наследования, называют иерархией классов или схемой наследования. Пример наследования. Фигуры на экране. Рассмотрим следующую схему наследования: Общим свойством всех фигур на экране, независимо от их формы, является наличие координат (класс TLocation). Любая фигура на экране должна “уметь” себя отобразить, скрыть своё изображение, а также перемещаться по экрану (класс TFigure).

Слайд 3





Наследование и полиморфизм
Описание слайда:
Наследование и полиморфизм

Слайд 4





Наследование и полиморфизм
Обратите внимание на то, что метод MoveTo, разработанный для абстрактной фигуры TFigure, теперь будет работать для любой конкретной фигуры.
Описание слайда:
Наследование и полиморфизм Обратите внимание на то, что метод MoveTo, разработанный для абстрактной фигуры TFigure, теперь будет работать для любой конкретной фигуры.

Слайд 5





Наследование и полиморфизм
Множественное наследование
Множественное наследование означает, что у классов-потомков может быть более, чем один непосредственный класс-предок. В С++ такое допускается. Рассмотрим некоторый визуальный объект, который представляет собой текстовую строку, заключенную в окружность. Построим схему наследования:
Описание слайда:
Наследование и полиморфизм Множественное наследование Множественное наследование означает, что у классов-потомков может быть более, чем один непосредственный класс-предок. В С++ такое допускается. Рассмотрим некоторый визуальный объект, который представляет собой текстовую строку, заключенную в окружность. Построим схему наследования:

Слайд 6





Наследование и полиморфизм
Поскольку классы-потомки наследуют все данные и методы классов-предков, в итоге имеем следующую картину:
Описание слайда:
Наследование и полиморфизм Поскольку классы-потомки наследуют все данные и методы классов-предков, в итоге имеем следующую картину:

Слайд 7





Наследование и полиморфизм
Виртуальные функции
Переопределим ранее введенные классы TFigure и TCircle следующим образом:
Описание слайда:
Наследование и полиморфизм Виртуальные функции Переопределим ранее введенные классы TFigure и TCircle следующим образом:

Слайд 8





Наследование и полиморфизм
В чём суть использования виртуальных функций? Важно это записать и понять.
Если в сигнатуре функции-члена класса слово «virtual» не использовалось, тогда имя функции и исполняемый код функции связываются друг с другом на этапе компиляции. Связывание выполняет компилятор. Данный механизм называется ранним связыванием. Методы потомков перекрывают одноименные методы предков на этапе компиляции кода.
Если в сигнатуре функции-члена класса использовалось слово «virtual», тогда имя функции и её исполняемый код связываются друг с другом непосредственно на этапе исполнения кода. Связывание выполняет конструктор объекта. Данный механизм называется поздним связыванием. Методы потомков перекрывают одноименные методы предков только на этапе исполнения кода.
Когда работает механизм позднего связывания, компилятор отыскивает в исходном коде все виртуальные функции и формирует таблицу виртуальных функций, которую упрощенно можно представлять себе так:
Описание слайда:
Наследование и полиморфизм В чём суть использования виртуальных функций? Важно это записать и понять. Если в сигнатуре функции-члена класса слово «virtual» не использовалось, тогда имя функции и исполняемый код функции связываются друг с другом на этапе компиляции. Связывание выполняет компилятор. Данный механизм называется ранним связыванием. Методы потомков перекрывают одноименные методы предков на этапе компиляции кода. Если в сигнатуре функции-члена класса использовалось слово «virtual», тогда имя функции и её исполняемый код связываются друг с другом непосредственно на этапе исполнения кода. Связывание выполняет конструктор объекта. Данный механизм называется поздним связыванием. Методы потомков перекрывают одноименные методы предков только на этапе исполнения кода. Когда работает механизм позднего связывания, компилятор отыскивает в исходном коде все виртуальные функции и формирует таблицу виртуальных функций, которую упрощенно можно представлять себе так:

Слайд 9





Наследование и полиморфизм
Абстрактные классы
Абстрактные классы используются для порождения производных классов. 
«Нет ничего практичнее хорошей абстракции» (перефразируя Р.Кирхгофа).
Переопределим абстрактную фигуру ещё раз следующим образом:
Класс называется абстрактным, если он содержит хотя бы одну чистую виртуальную функцию. Создание объектов абстрактных классов бессмысленно, т.к. такие объекты будут нежизнеспособны. Чистые виртуальные функции должны быть перекрыты в классах-потомках в обязательном порядке. 
Таким образом, абстрактные классы как бы «вынуждают» своих потомков реализовывать определенные минимальные модели поведения, обеспечивая надлежащую  функциональность производных классов.
Описание слайда:
Наследование и полиморфизм Абстрактные классы Абстрактные классы используются для порождения производных классов. «Нет ничего практичнее хорошей абстракции» (перефразируя Р.Кирхгофа). Переопределим абстрактную фигуру ещё раз следующим образом: Класс называется абстрактным, если он содержит хотя бы одну чистую виртуальную функцию. Создание объектов абстрактных классов бессмысленно, т.к. такие объекты будут нежизнеспособны. Чистые виртуальные функции должны быть перекрыты в классах-потомках в обязательном порядке. Таким образом, абстрактные классы как бы «вынуждают» своих потомков реализовывать определенные минимальные модели поведения, обеспечивая надлежащую функциональность производных классов.

Слайд 10





Наследование и полиморфизм
Виртуальная схема наследования
Виртуальная схема наследования позволяет избегать неоднозначности в процессе множественного наследования. 
Это достигается за счёт применения механизма позднего связывания и использования ссылочных типов. 
При этом, вся внутренняя работа выполняется компилятором и    конструкторами объектов. Разработчику кода необходимо лишь указать ключевое слово  «virtual» при описании процесса наследования. 
Пример. Пусть есть такие описания:
Описание слайда:
Наследование и полиморфизм Виртуальная схема наследования Виртуальная схема наследования позволяет избегать неоднозначности в процессе множественного наследования. Это достигается за счёт применения механизма позднего связывания и использования ссылочных типов. При этом, вся внутренняя работа выполняется компилятором и конструкторами объектов. Разработчику кода необходимо лишь указать ключевое слово «virtual» при описании процесса наследования. Пример. Пусть есть такие описания:

Слайд 11





Наследование и полиморфизм
Описание слайда:
Наследование и полиморфизм

Слайд 12





Наследование и полиморфизм
Ссылки на объекты классов
Предположим, в нашем распоряжении имеется некая функция
	int GetDelta ( int&, int& );
которая отслеживает движения мыши в каждый малый интервал времени по координатам X и Y (соответственно первый и второй аргументы функции). Функция возвращает «истину», если движение мыши имело место, и «ложь», если мышь оставалась неподвижной. Рассмотрим следующий фрагмент кода:
Обратите внимание: функция Drag будет вслед за мышью перемещать по экрану любую фигуру, ничего не зная о форме этой конкретной фигуры. Важно лишь, чтобы эта фигура была потомком абстрактной фигуры TFigure.
Такое поведение возможно, потому что все фигуры-потомки TFigure способны выдавать свои координаты, а также себя изображать, стирать или передвигать.
Описание слайда:
Наследование и полиморфизм Ссылки на объекты классов Предположим, в нашем распоряжении имеется некая функция int GetDelta ( int&, int& ); которая отслеживает движения мыши в каждый малый интервал времени по координатам X и Y (соответственно первый и второй аргументы функции). Функция возвращает «истину», если движение мыши имело место, и «ложь», если мышь оставалась неподвижной. Рассмотрим следующий фрагмент кода: Обратите внимание: функция Drag будет вслед за мышью перемещать по экрану любую фигуру, ничего не зная о форме этой конкретной фигуры. Важно лишь, чтобы эта фигура была потомком абстрактной фигуры TFigure. Такое поведение возможно, потому что все фигуры-потомки TFigure способны выдавать свои координаты, а также себя изображать, стирать или передвигать.

Слайд 13





Наследование и полиморфизм
Конструкторы
Конструктором называется функция-член класса, которая всегда вызывается при создании объектов класса. Назначение конструктора – привести объект в «рабочее» состояние. Например: получить необходимые ресурсы, открыть файлы, инициализировать данные, осуществить позднее связывание. 
Имя конструктора должно совпадать с именем класса. Конструкторы не имеют возвращаемых значений. Конструкторы могут быть перегружены, как любая другая функция. Конструкторы не могут быть виртуальными функциями.
Существует три вида конструкторов: «нуль-конструктор (или конструктор по умолчанию)», «конструктор копирования» и конструктор общего вида.
Нуль-конструктор аргументов не имеет. Если в описании класса не было указано ни одного конструктора, нуль-конструктор создаётся автоматически.
Конструктор копирования имеет ровно один аргумент, который должен быть ссылкой на объект того же класса, что и создаваемый объект.
Все прочие конструкторы относятся к конструкторам общего вида.
Конструктор объекта явно или неявно вызывается всякий раз, когда объект создается, независимо от класса памяти объекта.
Конструкторы глобальных (внешних) объектов вызываются до того, как получит управление функция main(). Конструкторы объектов в динамической памяти вызываются операцией new. Конструкторы локальных объектов вызываются, когда становится активной область действия соответствующего объекта.
Для  объектов классов, которые связаны отношениями наследования, порядок вызова конструкторов регулируется специальными правилами (см. далее).
Описание слайда:
Наследование и полиморфизм Конструкторы Конструктором называется функция-член класса, которая всегда вызывается при создании объектов класса. Назначение конструктора – привести объект в «рабочее» состояние. Например: получить необходимые ресурсы, открыть файлы, инициализировать данные, осуществить позднее связывание. Имя конструктора должно совпадать с именем класса. Конструкторы не имеют возвращаемых значений. Конструкторы могут быть перегружены, как любая другая функция. Конструкторы не могут быть виртуальными функциями. Существует три вида конструкторов: «нуль-конструктор (или конструктор по умолчанию)», «конструктор копирования» и конструктор общего вида. Нуль-конструктор аргументов не имеет. Если в описании класса не было указано ни одного конструктора, нуль-конструктор создаётся автоматически. Конструктор копирования имеет ровно один аргумент, который должен быть ссылкой на объект того же класса, что и создаваемый объект. Все прочие конструкторы относятся к конструкторам общего вида. Конструктор объекта явно или неявно вызывается всякий раз, когда объект создается, независимо от класса памяти объекта. Конструкторы глобальных (внешних) объектов вызываются до того, как получит управление функция main(). Конструкторы объектов в динамической памяти вызываются операцией new. Конструкторы локальных объектов вызываются, когда становится активной область действия соответствующего объекта. Для объектов классов, которые связаны отношениями наследования, порядок вызова конструкторов регулируется специальными правилами (см. далее).

Слайд 14





Наследование и полиморфизм
Пример 1. Три вида конструкторов
Выбор конкретного кода конструктора при создании объекта класса производится аналогично тому, как выбирается конкретный код при вызове перегруженных функций. 
Основной принцип – сигнатура конструктора (т.е. количество и типы аргументов конструктора) должна соответствовать количеству и типам аргументов при вызове конструктора.
Если в классе нет ни одного конструктора, тогда автоматически создаётся и вызывается 0-конструктор («конструктор по умолчанию»).
Описание слайда:
Наследование и полиморфизм Пример 1. Три вида конструкторов Выбор конкретного кода конструктора при создании объекта класса производится аналогично тому, как выбирается конкретный код при вызове перегруженных функций. Основной принцип – сигнатура конструктора (т.е. количество и типы аргументов конструктора) должна соответствовать количеству и типам аргументов при вызове конструктора. Если в классе нет ни одного конструктора, тогда автоматически создаётся и вызывается 0-конструктор («конструктор по умолчанию»).

Слайд 15





Наследование и полиморфизм
Пример 2. Вызов конструкторов при наследовании
Правила вызова конструкторов следующие:
Сначала вызываются конструкторы базовых классов, затем вызываются конструкторы производных классов (сначала создаются объекты-предки, затем объекты-потомки).
Конструкторы виртуальных классов (виртуальная схема наследования) запускаются ранее конструкторов прочих классов.
Для вложенных объектов и производных классов могут использоваться списки инициализации.
Описание слайда:
Наследование и полиморфизм Пример 2. Вызов конструкторов при наследовании Правила вызова конструкторов следующие: Сначала вызываются конструкторы базовых классов, затем вызываются конструкторы производных классов (сначала создаются объекты-предки, затем объекты-потомки). Конструкторы виртуальных классов (виртуальная схема наследования) запускаются ранее конструкторов прочих классов. Для вложенных объектов и производных классов могут использоваться списки инициализации.

Слайд 16





Наследование и полиморфизм
Деструкторы
Деструктором называется функция-член класса, которая всегда вызывается при завершении существования объектов класса. Назначение деструктора – освободить полученные ресурсы, закрыть файлы, др. Имя деструктора должно начинаться со значка “~” (тильда) и в остальном совпадать с именем класса.
Деструкторы не имеют аргументов и не имеют возвращаемых значений. Деструкторы вызываются неявно и они не могут быть перегружены. Деструкторы могут быть виртуальными функциями. Деструкторы объектов вызываются в порядке, обратном порядку вызова конструкторов объектов. Деструкторы глобальных объектов вызываются после завершения работы функции main ( ).
Описание слайда:
Наследование и полиморфизм Деструкторы Деструктором называется функция-член класса, которая всегда вызывается при завершении существования объектов класса. Назначение деструктора – освободить полученные ресурсы, закрыть файлы, др. Имя деструктора должно начинаться со значка “~” (тильда) и в остальном совпадать с именем класса. Деструкторы не имеют аргументов и не имеют возвращаемых значений. Деструкторы вызываются неявно и они не могут быть перегружены. Деструкторы могут быть виртуальными функциями. Деструкторы объектов вызываются в порядке, обратном порядку вызова конструкторов объектов. Деструкторы глобальных объектов вызываются после завершения работы функции main ( ).



Похожие презентации
Mypresentation.ru
Загрузить презентацию