🗊Презентация Динамическое связывание

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

Содержание

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

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


Слайд 1





Тема: Динамическое связывание
Наследование и полиморфизм
Динамическое и статическое связывание
Наследование – разрешение проблем
Описание слайда:
Тема: Динамическое связывание Наследование и полиморфизм Динамическое и статическое связывание Наследование – разрешение проблем

Слайд 2





Базовый и производный тип
Если класс B публично произведен из базового класса A , то по правилам С++ объекта типа B также может использоваться, как объект типа A. Иными словами, объект производного класса является также объектом базового класса.
Следовательно
объект класса B может инициализировать объект класса A
объект класса B может быть фактическим аргументом для функции с формальным аргументом класса A
то же для возвращаемого значения
Описание слайда:
Базовый и производный тип Если класс B публично произведен из базового класса A , то по правилам С++ объекта типа B также может использоваться, как объект типа A. Иными словами, объект производного класса является также объектом базового класса. Следовательно объект класса B может инициализировать объект класса A объект класса B может быть фактическим аргументом для функции с формальным аргументом класса A то же для возвращаемого значения

Слайд 3





Наследование и полиморфизм
Наследование позволяет
писать полиморфные функции
	(не различать аргументы классов, имеющих общего предка)
сохранить контроль типов
	(различать аргументы классов, имеющих общего предка)
Описание слайда:
Наследование и полиморфизм Наследование позволяет писать полиморфные функции (не различать аргументы классов, имеющих общего предка) сохранить контроль типов (различать аргументы классов, имеющих общего предка)

Слайд 4





Родственные классы
Описание слайда:
Родственные классы

Слайд 5





Полиморфизм: функция blank
Описание слайда:
Полиморфизм: функция blank

Слайд 6





Использование функции blank
Описание слайда:
Использование функции blank

Слайд 7





Использование строгой типизации
Описание слайда:
Использование строгой типизации

Слайд 8





Функция collapse
Описание слайда:
Функция collapse

Слайд 9





Использование функции collapse
Описание слайда:
Использование функции collapse

Слайд 10





Проблема связывания
При вызове функции collapse с фактическим аргументом типа Shell_Window какой метод будет вызываться?
Window::change_size(const Point&)
Shell_Window::change_size(const Point&)
Требуются средства языка, обеспечивающие второй вызов
Описание слайда:
Проблема связывания При вызове функции collapse с фактическим аргументом типа Shell_Window какой метод будет вызываться? Window::change_size(const Point&) Shell_Window::change_size(const Point&) Требуются средства языка, обеспечивающие второй вызов

Слайд 11





Два вида связывания
Статическое или раннее связывание
выбор вызываемой функции осуществляется на этапе компиляции 
определяется по объявленному типу вызывающего объекта
Динамическое или позднее связывание
выбор вызываемой функции осуществляется на этапе выполнения 
определяется по фактическому типу вызывающего объекта
Описание слайда:
Два вида связывания Статическое или раннее связывание выбор вызываемой функции осуществляется на этапе компиляции определяется по объявленному типу вызывающего объекта Динамическое или позднее связывание выбор вызываемой функции осуществляется на этапе выполнения определяется по фактическому типу вызывающего объекта

Слайд 12





Функция collapse
При статическом связывании в функции collapse всегда будет вызываться  метод класса Window согласно объявлению формального аргумента
При динамическом связывании компилятор откладывает выбор метода до выполнения программы, когда есть точная информация о типе объекта – фактического параметра
Описание слайда:
Функция collapse При статическом связывании в функции collapse всегда будет вызываться метод класса Window согласно объявлению формального аргумента При динамическом связывании компилятор откладывает выбор метода до выполнения программы, когда есть точная информация о типе объекта – фактического параметра

Слайд 13





Динамическое связывание
Отвечает принципам ООП
Многие объектно-ориентированные языки используют только динамическое связывание 
Объект, как экземпляр класса, должен содержать информацию о своем типе
Требуются накладные расходы по сравнению со статическим связыванием
Описание слайда:
Динамическое связывание Отвечает принципам ООП Многие объектно-ориентированные языки используют только динамическое связывание Объект, как экземпляр класса, должен содержать информацию о своем типе Требуются накладные расходы по сравнению со статическим связыванием

Слайд 14





Выбор вида связывания в С++
В  С++  по умолчанию используется статическое связывание
Чтобы применить динамическое связывание для конкретного метода, его надо описать в базовом классе  с ключевым словом virtual
Информация о типе объекта будет анализироваться во время выполнения программы и определять вызов метода (т.е. используется алгоритм вызова)
Описание слайда:
Выбор вида связывания в С++ В С++ по умолчанию используется статическое связывание Чтобы применить динамическое связывание для конкретного метода, его надо описать в базовом классе с ключевым словом virtual Информация о типе объекта будет анализироваться во время выполнения программы и определять вызов метода (т.е. используется алгоритм вызова)

Слайд 15





Базовый класс Window
Описание слайда:
Базовый класс Window

Слайд 16





Как поступать?
Объявлять методы виртуальными по мере необходимости
минус – изменение кода базового класса
плюс –  нет лишних расходов
Все методы объявлять виртуальными
минус – максимальные накладные расходы
плюс – код базового класса не меняется
Проанализировать возможное развитие класса и объявить виртуальные методы на основе этого анализа
НО  как стать таким умным?
Описание слайда:
Как поступать? Объявлять методы виртуальными по мере необходимости минус – изменение кода базового класса плюс – нет лишних расходов Все методы объявлять виртуальными минус – максимальные накладные расходы плюс – код базового класса не меняется Проанализировать возможное развитие класса и объявить виртуальные методы на основе этого анализа НО как стать таким умным?

Слайд 17





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

Слайд 18





Копирование и присваивание
Описание слайда:
Копирование и присваивание

Слайд 19





Проблема деструктора
при наследовании
Описание слайда:
Проблема деструктора при наследовании

Слайд 20





Виртуальный деструктор
базового класса
Описание слайда:
Виртуальный деструктор базового класса

Слайд 21





РЕЗЮМЕ
Наследование и динамическое связывание позволяет
добавлять новые производные классы не меняя существующий код
писать полиморфные функции (функция blank)
писать функции только для определенного производного класса (функция yes_or_no)
Динамическое связывание требует накладных расходов
Имеет тонкости применения
передача аргумента по ссылке
использование указателей
Описание слайда:
РЕЗЮМЕ Наследование и динамическое связывание позволяет добавлять новые производные классы не меняя существующий код писать полиморфные функции (функция blank) писать функции только для определенного производного класса (функция yes_or_no) Динамическое связывание требует накладных расходов Имеет тонкости применения передача аргумента по ссылке использование указателей



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