Презентация на тему: Языки программирования

Языки программирования
Понятие позднего и раннего связывания
Понятие позднего и раннего связывания
Необходимые условия для реализации позднего связывания:
Раннее связывание
Позднее связывание
Языки программирования
Что такое полиморфизм? Динамический полиморфизм
Использование преимуществ полиморфизма возможно в ситуациях:
Полиморфизм. Ключевые слова
Языки программирования
Какие требования накладываются на элемент класса для того, чтобы он поддерживал полиморфизм?
Использование ключевого слова  new  в цепочке виртуальных методов.
Языки программирования
1/14
Средняя оценка: 4.9/5 (всего оценок: 7)
Код скопирован в буфер обмена
Скачать (532 Кб)
1

Первый слайд презентации: Языки программирования

Лекция 1. Позднее и раннее связывание. Полиморфизм. Основные понятия.

Изображение слайда
2

Слайд 2: Понятие позднего и раннего связывания

При изучении темы полиморфизма важно понять понятие позднего и раннего связывания, которое используется компилятором при построении кода программы в случае наследования. Если классы образовывают иерархию наследования, то при обращении к элементам класса, компилятор может реализовывать один из двух возможных способов связывания кода: Раннее связывание   – связанное с формированием кода на этапе компиляции. При раннем связывании, программный код формируется на основе известной информации о типе (класс) ссылки. Как правило, это ссылка на базовый класс в иерархии классов. Позднее связывание   – связанное с формированием кода на этапе выполнения. Если в иерархии классов встречается цепочка виртуальных методов (с помощью слов virtual, override ), то компилятор строит так называемое позднее связывание. При позднем связывании вызов метода происходит на основании типа объекта, а не типа ссылки на базовый класс. Позднее связывание используется, если нужно реализовать  полиморфизм

Изображение слайда
3

Слайд 3: Понятие позднего и раннего связывания

Выбор того или иного вида связывания для каждого отдельного элемента (метода, свойства, индексатора и т.п.) определяется компилятором по следующим правилам: если в иерархии унаследованных классов объявляется невиртуальный элемент, то реализуется раннее связывание; если в иерархии унаследованных классов объявляется виртуальный элемент, то выполняется позднее связывание. Виртуальный элемент в базовом классе обозначается ключевым словом virtual, во всех унаследованных классах ключевым словом override.

Изображение слайда
4

Слайд 4: Необходимые условия для реализации позднего связывания:

классы должны образовывать иерархию наследования; в классах должны быть методы с одинаковой сигнатурой. Элементы (методы) производных классов должны перекрывать ( override ) соответствующие элементы (методы) базовых классов; элементы (методы) класса должны быть виртуальными, то есть должны быть обозначены ключевыми словами virtual, override.

Изображение слайда
5

Слайд 5: Раннее связывание

Изображение слайда
6

Слайд 6: Позднее связывание

В случае позднего связывания, сначала на основе описания классов A, B компилятор определяет, что метод  Print () есть виртуальным. Для виртуального метода компилятор строит таблицу виртуальных методов  Print (), которая содержит смещение адресов каждого виртуального метода для каждого класса иерархии.

Изображение слайда
7

Слайд 7

Изображение слайда
8

Слайд 8: Что такое полиморфизм? Динамический полиморфизм

Полиморфизм  – это свойство программного кода изменяться в зависимости от ситуации, которая возникает в момент выполнения программы. Главный принцип полиморфизма – один интерфейс, много реализаций (методов). В терминах языка программирования,  полиморфизм  – это возможность с помощью ссылки на базовый класс обращаться к элементам (методов) экземпляров унаследованных классов единым унифицированным способом.

Изображение слайда
9

Слайд 9: Использование преимуществ полиморфизма возможно в ситуациях:

когда классы образовывают иерархию с помощью концепции наследования; когда в классах, которые образовывают иерархию, есть элементы (методы, свойства и т.п.) с одинаковой сигнатурой. В таких случаях возникает понятие «переопределение метода» ( method override ).

Изображение слайда
10

Слайд 10: Полиморфизм. Ключевые слова

В языке программирования C# полиморфизм обеспечивается с помощью ключевых слов  virtual  и  override. Благодаря использованию этих ключевых слов обеспечивается  динамический полиморфизм. Термин «динамический» означает, что вызов виртуального элемента осуществляется динамично во время выполнения программы в зависимости от типа объекта, для которого этот элемент вызывается.

Изображение слайда
11

Слайд 11

Изображение слайда
12

Слайд 12: Какие требования накладываются на элемент класса для того, чтобы он поддерживал полиморфизм?

Для того, чтобы элемент класса (например метод) поддерживал полиморфизм, его нужно сделать виртуальным. Чтобы элемент класса был виртуальным, нужно выполнить следующие требования: в базовом классе этот элемент (метод, свойство) должен быть обозначен как  virtual  или  abstract. Ключевое слово  abstract  также делает элемент виртуальным. Это слово используется, если элемент класса есть абстрактным. в производных классах одноименные элементы должны быть обозначены как  override. Если в производном классе нужно реализовать невиртуальный метод, имя которого совпадает с виртуальным методом базового класса, то этот метод обозначается ключевым словом  new

Изображение слайда
13

Слайд 13: Использование ключевого слова  new  в цепочке виртуальных методов

Как известно, элемент класса, который объявлен виртуальным ( virtual ), передает возможность реализовать полиморфизм в одноименных элементах унаследованных классов. Таким образом, виртуальные элементы образовывают цепочку вниз по иерархии. Для того, чтобы элемент класса, который переопределяет ( override ) виртуальный элемент базового класса, не поддерживал полиморфизм нужно указать ключевое слово  new. Если в цепочке одноименных виртуальных методов встречается один невиртуальный метод (с ключевым словом  new ) то этот метод разрывает цепочку.

Изображение слайда
14

Последний слайд презентации: Языки программирования

Изображение слайда