703.49K
Категория: ПрограммированиеПрограммирование

Полиморфизм. Лекция 6

1.

Полиморфизм
Лекция 6

2.

Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
2

3.

Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
3

4.

Метод CompTable::CalcVolume
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
4

5.

Метод CompTable::Show
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
5

6.

Вызов обновленных методов -1
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
6

7.

Вызов обновленных методов -1
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
7

8.

Вызов обновленных методов -1
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
8

9.

Вызов обновленных методов -1
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
9

10.

Вызов обновленных методов -1
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
10

11.

Вызов обновленных методов -2
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
11

12.

Вызов обновленных методов -2
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
12

13.

Вызов обновленных методов -2
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
13

14.

Вызов обновленных методов -2
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
14

15.

Вызов обновленных методов -2
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
15

16.

Связывание
Связывание — это процесс, который используется для
конвертации идентификаторов (таких как имена переменных или
функций) в адреса.
Все функции имеют свой уникальный адрес.
Когда компилятор (или линкер) встречает вызов функции, он
заменяет его инструкцией машинного кода, которая сообщает
процессору перейти к адресу функции.
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
16

17.

Раннее связывание -1
Раннее связывание (или «статическая привязка») означает, что
компилятор (или линкер) может напрямую связать имя
идентификатора с машинным адресом.
В терминах ООП раннее связывание означает, что объект и вызов
функции связываются между собой на этапе компиляции.
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
17

18.

Раннее связывание -2
Достоинство: выполняется быстрее и обычно требует меньше
памяти, чем позднее связывание.
Недостаток: невысокая гибкость.
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
18

19.

Раннее связывание -3
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
19

20.

Позднее связывание -1
Позднее связывание (или «динамическая привязка») означает,
что объект и вызов функции связываются между собой на этапе
запуска программы.
Позднее связывание достигается в С++ с помощью использования
виртуальных функций и производных классов.
Достоинство: высокая гибкость
Недостаток: снижение производительности
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
20

21.

Позднее связывание -2
Оно может использоваться для поддержки
общего интерфейса, позволяя различным
объектам иметь свою собственную
реализацию этого интерфейса!
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
21

22.

Позднее связывание -3
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
22

23.

Позднее связывание -3
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
23

24.

Позднее связывание -3
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
24

25.

Пример - 1
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
25

26.

Пример - 2
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
26

27.

Пример - 3
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
27

28.

Пример – 4 (запуск программы)
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
28

29.

Пример – 5 (запуск программы)
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
29

30.

Зачем нужен virtual?
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
30

31.

virtual нужен
для полиморфизма
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
31

32.

Виртуальные методы
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
32

33.

Соответствующие методы потомка автоматически
становятся
Виртуальными!
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
33

34.

Как это работает
Программирование: ООП. Кафедра ЮНЕСКО по ИВТ ИФН
КемГУ, ст.преп. Бондарева Л.В.
34
English     Русский Правила